> ## Documentation Index
> Fetch the complete documentation index at: https://about.sendforsign.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create and fill in contract

> Create a new contract and populate it with the necessary data.

The best way to fill in contracts is to prepare a template that already contains all the necessary
placeholders in the text. This way, you can populate the necessary data in the right placeholders within
the contracts with a single API call.

### Body parameters

<ParamField body="data" type="object" required>
  <Expandable title="child attribute">
    <ParamField body="action" type="string" required>
      Action type.
    </ParamField>

    <ParamField body="clientKey" type="string" required>
      Key of the client.
    </ParamField>

    <ParamField body="userKey" type="string">
      ID of the user who create the contract. If not specified, the default user credentials will be used.
    </ParamField>

    <ParamField body="contract" type="object" required>
      Contract structure.

      <Expandable title="child attribute">
        <ParamField body="name" type="string">
          Name of the contract.
        </ParamField>

        <ParamField body="templateKey" type="string">
          Template from which you are creating a contract.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="placeholders" type="array">
      Array of placeholders, optional.

      <Expandable title="child attribute">
        <ParamField body="placeholderKey" type="string">
          A placeholder key corresponds to a specific placeholder in the template from which you create a contract.
          Use this parameter if you need to populate any value into this specific placeholder.
        </ParamField>

        <ParamField body="name" type="string">
          Name of the placeholder.
        </ParamField>

        <ParamField body="value" type="string">
          Value of the placeholder.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

### Response

<ResponseField name="contract" type="string">
  Contract structure.

  <Expandable title="child attribute">
    <ResponseField name="createTime" type="string">
      Create time.
    </ResponseField>

    <ResponseField name="contractKey" type="string">
      ID of the contract.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="code" type="string">
  The code of the answer.
</ResponseField>

<ResponseField name="message" type="string">
  The message of the answer.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.sendforsign.com/api/contract' \
       -H 'X-Sendforsign-Key: YOUR_API_KEY' \
       -H 'Content-Type: application/json' \
       -d '{
      "data": {
          "action": "create",
          "clientKey": "YOUR_CLIENT_KEY",
          "userKey": "USER_KEY",
          "contract": {
              "name": "New contract",
              "templateKey": "TEMPLATE_KEY"
          },
          "placeholders": [
              {
                  "placeholderKey": "PLACEHOLDER_KEY",
                  "value": "Placeholder value"
              },
              {
                  "name": "Placeholder name",
                  "value": "Placeholder value"
              }
          ]
      }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
       {
         "contract": {
                  "createTime": "2023-12-01 12:18:55",
                  "contractKey": "CONTRACT_KEY"
                   },
         "code": "201",
         "message": "Contract created"
      }
  ```
</ResponseExample>
