Send for signature
Send the contract for signature: marks it sent and emails a signing link to every signer who hasn't signed (with sequential signing, only the first signing-order group). Can also re-send a contract that is already sent.
POST
https://api.centerfy.ai/webhooks/inbound/contracts/:id/send Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The contract id. |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
message | string | No | — | Personal message included in the email; max 2000 characters. |
base_url | string (https URL) | No | — | Origin for the signing links, e.g. your white-label app domain. Only the origin is used; must be https. Defaults to the Centerfy app URL. |
Request body
{
"message": "Hi Jamie, please review and sign when you get a chance."
}Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/contracts/{id}/send" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "Hi Jamie, please review and sign when you get a chance."
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.contracts.send("<contractId>", {
"message": "Hi Jamie, please review and sign when you get a chance."
});
console.log(result); centerfy contracts send <contractId> '{"message":"Hi Jamie, please review and sign when you get a chance."}' MCP tool: centerfy_contracts_send (see MCP server)
Response
{
"status": "success",
"contract_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"action": "send",
"results": [
{
"email": "[email protected]",
"success": true
}
]
}Errors
400— if base_url is not a valid https URL, or the contract has no prepared PDF, no signers, a field assigned to a deleted recipient, or a signer without a signature field.502— with results if no email could be delivered — the contract is still marked sent, so use Remind signers to retry.404— if the contract is not in this sub-account.
Notes
The body is optional. Only draft or sent contracts can be sent (409 otherwise).