Submit Onboarding Step Route
Submit the user’s current onboarding step. The body’s step must match a step the user has not yet passed; submitting a step that is still ahead of them returns 409 Conflict with the user’s current step in the response so the client can self-correct. Resubmitting a step the user has already finished is an idempotent no-op that returns the current state. Returns 200 OK when the transition is fully synchronous. Returns 202 Accepted when the transition enqueues background provisioning work (Safe creation and agent-key minting on the creation path). On 202, a Retry-After response header indicates how many seconds to wait before the next poll of GET /v0/user/me/onboarding/steps.
Authorizations
JWT issued by Dynamic Labs or Privy. Sent in the x-juno-jwt header on every authenticated request.
Headers
Tenant org ID for multi-tenant auth
Controls how timestamp fields are serialized in JSON response bodies.
Default (header omitted or any other value): epoch milliseconds as integers.
iso8601: UTC ISO 8601 strings of the form YYYY-MM-DDTHH:MM:SSZ.
Example: with X-Timestamp-Format: iso8601, the field value 1704067200000 becomes "2024-01-01T00:00:00Z".
Affected fields (recursively, in dicts and arrays): any field whose name ends in _at, plus the literal field names timestamp, period_start, and period_end. All other fields are passed through unchanged.
Only iso8601 is recognized. Any other value (or omitting the header) yields the default epoch-ms representation; the server does not reject unknown values, so this is documented as an example rather than an enum to keep generated clients permissive.
"iso8601"
Body
The onboarding step being submitted. Must match the user's current step.
created, phone_verification, kyc_verification, byo_safe, safe_deploy, open_banking, card_setup, feature_selection, complete "phone_verification"