Skip to main content
POST
/
v1
/
templates
/
{slug}
/
render
Render a template
curl --request POST \
  --url https://api.craftkit.dev/v1/templates/{slug}/render \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "data": {
    "customer": {
      "name": "Acme Corp"
    }
  },
  "options": {
    "sync": false
  }
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "pollUrl": "<string>",
  "downloadUrl": "<string>",
  "errorMessage": "<string>",
  "createdAt": "2023-11-07T05:31:56Z"
}

Authorizations

Authorization
string
header
required

Project API key (ck_live_… or ck_test_…) presented as a bearer token. For embed partner endpoints this is the partner secret key, which is the same credential type.

Headers

Idempotency-Key
string

Make retries safe — a repeated request with the same key returns the original resource.

Path Parameters

slug
string
required

The template slug (canonical identifier within the project).

Body

application/json
data
object
required

Variable values keyed by VariableDefinition.key. Loop arrays capped at 10,000 items.

jobId
string

Optional idempotency key (the Idempotency-Key header takes precedence).

Required string length: 1 - 200
options
object

Response

Idempotent replay of an existing render.

Render shape returned by render/idempotent-replay and embed form-submit.

id
string<uuid>
required
status
enum<string>
required
Available options:
queued,
rendering,
succeeded,
failed,
cancelled
pollUrl
string<uri>
required
downloadUrl
string<uri> | null
required
errorMessage
string | null
required
createdAt
string<date-time>
required