Form templates

Create a form template

Creates a template from a name and its ordered list of blocks. Building templates via the API/MCP is the expected primary path.

POST
/form-templates

Creates a template from a name and its ordered list of blocks. Building templates via the API/MCP is the expected primary path.

Authorization

x-api-key<token>

The per-tenant API key, copied from Settings → API & integrations. Sent as the x-api-key request header. The key is tenant-scoped and acts with Admin-equivalent, tenant-wide access.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/form-templates" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "blocks": [      {        "id": "string",        "kind": "heading",        "label": "string"      }    ]  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "name": "string",  "projectRequired": true,  "fillableBy": "all_crew",  "status": "active",  "blocks": [    {      "id": "string",      "kind": "heading",      "label": "string",      "required": true,      "options": [        "string"      ],      "items": [        "string"      ],      "lockToToday": true    }  ],  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
{  "error": {    "code": "unauthorized",    "message": "Missing or invalid API key."  }}
{  "error": {    "code": "read_only",    "message": "Your subscription is inactive. This action is read-only."  }}
{  "error": {    "code": "validation",    "message": "One or more inputs are invalid.",    "fields": {      "fieldName": "A message explaining what's wrong with this field."    }  }}