Skip to main content
Errors use standard HTTP status codes and a JSON body with a human-readable message:
{ "error": "body must include a non-empty steps[]" }

Status codes

StatusMeaningTypical cause
400Bad RequestMalformed body, unknown primitive, invalid min_age, bad steps[]
401UnauthorizedMissing or invalid API key
402Payment RequiredInsufficient balance to start the session
404Not FoundUnknown session id, or not owned by your business
409ConflictSession already open on another device, or an idempotency conflict
422UnprocessableNo webhook configured for your business (set one in the dashboard)
429Too Many RequestsRate limit exceeded
5xxServer / UnavailableTransient error (500) or a dependency not configured (503)

Notes

Creating a session checks eligibility against your balance (and overdraft floor / credit limit). Top up in the dashboard, then retry. See Pricing.
Results are delivered only by webhook, so a session can’t be created until your business has a webhook URL. Configure it in the dashboard.
A session is bound to the first device that opens it; a second device is refused. A reused Idempotency-Key with a different payload also conflicts.
Retry 5xx and network errors with backoff. Make POST /v1/sessions retries safe with an Idempotency-Key.