Initialize registration flow for browsers
Endpoint
Query parameters
URL to redirect the browser to after successful registration.
Hydra login challenge when using Kratos with OAuth2/OIDC.
URL to redirect to after completing email verification (overrides default verification redirect).
Organization ID to register this user with (Ory Network only).
Identity schema ID to use for this registration flow.
Response
The flow ID, used to fetch and submit the flow.
The flow type:
browser or api.Time when this flow expires (RFC3339 format).
Time when this flow was issued (RFC3339 format).
The original request URL.
UI container with form fields and messages.
OAuth2 login challenge if applicable.
Organization ID for this registration.
Status codes
| Status | Description |
|---|---|
| 200 | Registration flow created (AJAX requests) |
| 303 | Redirect to registration UI with flow ID |
| 400 | Session already available |
Initialize registration flow for native apps
Endpoint
Query parameters
URL to return to after registration completion.
Include a code that can retrieve the session token after registration.
Organization ID (Ory Network only).
Identity schema ID to use.
Response
Returns the same registration flow object as the browser endpoint.Status codes
| Status | Description |
|---|---|
| 200 | Registration flow created successfully |
| 400 | Invalid request or session already exists |
Get registration flow
Endpoint
Query parameters
The registration flow ID from the
flow URL query parameter.Headers
HTTP Cookie header for browser flows. Required for CSRF validation.
Response
Returns the registration flow object.Status codes
| Status | Description |
|---|---|
| 200 | Registration flow found |
| 403 | Forbidden (CSRF violation) |
| 404 | Flow not found |
| 410 | Flow expired |
Submit registration flow
Endpoint
Query parameters
The registration flow ID.
Headers
HTTP Cookie header for browser flows.
Request body
The request body varies by registration method:Registration method:
password, oidc, webauthn, or code.Identity traits (email, name, etc.) as defined in your identity schema.
CSRF token from the flow (required for browser flows).
The user’s password. Must meet configured password policy requirements.
OIDC provider ID (e.g.,
google, github, microsoft).WebAuthn credential data from
navigator.credentials.create().Display name for the WebAuthn credential.
The one-time registration code.
Response (API flows)
The created identity object.
The created session (if session hook is configured).
Session token for API clients (if session hook is configured).
Actions to continue with after registration (e.g., verification flow).
Response (browser flows)
Browser flows return:- 303 redirect to the
return_toURL or configured post-registration URL on success - 303 redirect to the registration UI with validation errors on failure
- 200 with JSON if
Accept: application/jsonheader is set
Status codes
| Status | Description |
|---|---|
| 200 | Successful registration (API flows) |
| 303 | Redirect (browser flows) |
| 400 | Form validation errors |
| 410 | Flow expired |
| 422 | Browser location change required (e.g., OIDC redirect) |
Error responses
Common error IDs in the response:session_already_available- User is already signed insecurity_csrf_violation- CSRF token validation failedsecurity_identity_mismatch- Thereturn_toURL is not allowedbrowser_location_change_required- Browser needs to navigate (OIDC flows)
ui.nodes array with error messages for specific fields.