Skip to main content
POST https://api.craftkit.dev/v1/embed/form-submit/:sessionId
Validates the submitted data against the template version’s manifest, merges JWT-claimed prefill under the user-supplied data (user wins), and enqueues a render with source = "form". Returns 202 with a poll URL. Rendering is asynchronous.

Authorization

Embed session JWT only — never a project API key.
string
required
Bearer <session_token> — a fill-mode session JWT with permissions.submitForm = true. The request origin must be allow-listed (used as the token audience), and :sessionId must match the token’s session.

Path parameters

string
required
The embed session id. Must match the bearer token’s session.

Body

object
required
Variable values to render. May use flat dot-keys ("customer.name") — they are expanded to nested objects before manifest validation. Validated against the template version’s manifest. Reserved property names (__proto__, constructor, prototype) in keys are stripped.
object
Optional string→string map persisted on the render row (for example, which source records the form was filled from).

Response

202 when the render is queued.
string
Render id (UUID).
string
queued initially.
string
Embed-scoped poll URL (/v1/embed/renders/:id). Poll with the session JWT.
string | null
null until the render succeeds.
string | null
string

Errors

cURL
202