Get a contract template
Get one contract template, including its builder content and field placements.
GET
https://api.centerfy.ai/webhooks/inbound/contract-templates/:id 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 template id. |
Example
curl -X GET "https://api.centerfy.ai/webhooks/inbound/contract-templates/{id}" \
-H "x-api-key: $CENTERFY_API_KEY" import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.contractTemplates.get("<templateId>");
console.log(result); centerfy contractTemplates get <templateId> MCP tool: centerfy_contract_templates_get (see MCP server)
Response
{
"status": "success",
"template": {
"id": "2e4f6a8b-1c3d-4e5f-9a7b-8c9d0e1f2a3b",
"name": "Service agreement",
"description": "Standard 12-month service agreement",
"source_type": "pdf",
"recipient_roles": [
{
"key": "client",
"label": "Client",
"role": "signer",
"signing_order": 1
},
{
"key": "manager",
"label": "Account manager",
"role": "cc",
"signing_order": 2
}
],
"has_prepared_pdf": true,
"content": [],
"fields": [
{
"id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"type": "signature",
"page": 1,
"x": 12.5,
"y": 80,
"w": 25,
"h": 6,
"recipientId": "client",
"required": true
}
],
"created_at": "2026-09-20T10:00:00.000Z",
"updated_at": "2026-09-20T10:00:00.000Z"
}
}Errors
404— if the template is not in this sub-account.
Notes
Field coordinates (x, y, w, h) are percentages of the PDF page and page is 1-based; type is signature, initials, date_signed, date, text or checkbox. On templates, recipientId is a role key.