POST
https://api.craftkit.dev/v1/embed/form-submit/:sessionIddata 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