frontend

Create Registration Flow for Browsers

This endpoint initializes a browser-based user registration flow. This endpoint will set the appropriate cookies and anti-CSRF measures required for browser-based flows.

If this endpoint is opened as a link in the browser, it will be redirected to selfservice.flows.registration.ui_url with the flow ID set as the query parameter ?flow=. If a valid user session exists already, the browser will be redirected to urls.default_redirect_url.

If this endpoint is called via an AJAX request, the response contains the flow without a redirect. In the case of an error, the error.id of the JSON response body can be one of:

session_already_available: The user is already signed in. security_csrf_violation: Unable to fetch the flow because a CSRF violation occurred. security_identity_mismatch: The requested ?return_to address is not allowed to be used. Adjust this in the configuration!

If this endpoint is called via an AJAX request, the response contains the registration flow without a redirect.

This endpoint is NOT INTENDED for clients that do not have a browser (Chrome, Firefox, ...) as cookies are needed.

More information can be found at Ory Kratos User Login and User Registration Documentation.

get/self-service/registration/browser

Query parameters

return_tostring

The URL to return the browser to after the flow was completed.

login_challengestring

Ory OAuth 2.0 Login Challenge.

If set will cooperate with Ory OAuth2 and OpenID to act as an OAuth2 server / OpenID Provider.

The value for this parameter comes from login_challenge URL Query parameter sent to your application (e.g. /registration?login_challenge=abcde).

This feature is compatible with Ory Hydra when not running on the Ory Network.

after_verification_return_tostring

The URL to return the browser to after the verification flow was completed.

After the registration flow is completed, the user will be sent a verification email. Upon completing the verification flow, this URL will be used to override the default selfservice.flows.verification.after.default_redirect_to value.

organizationstring

An optional organization ID that should be used to register this user. This parameter is only effective in the Ory Network.

Response

registrationFlow

active'password' | 'oidc' | 'totp' | 'lookup_secret' | 'webauthn' | 'code' | 'passkey' | 'profile' | 'saml' | 'link_recovery' | 'code_recovery'

Active, if set, contains the registration method that is being used. It is initially not set. password CredentialsTypePassword oidc CredentialsTypeOIDC totp CredentialsTypeTOTP lookup_secret CredentialsTypeLookup webauthn CredentialsTypeWebAuthn code CredentialsTypeCodeAuth passkey CredentialsTypePasskey profile CredentialsTypeProfile saml CredentialsTypeSAML link_recovery CredentialsTypeRecoveryLink CredentialsTypeRecoveryLink is a special credential type linked to the link strategy (recovery flow). It is not used within the credentials object itself. code_recovery CredentialsTypeRecoveryCode

expires_atstring date-time required

ExpiresAt is the time (UTC) when the flow expires. If the user still wishes to log in, a new flow has to be initiated.

idstring uuid required

ID represents the flow's unique ID. When performing the registration flow, this represents the id in the registration ui's query parameter: http://<selfservice.flows.registration.ui_url>/?flow=<id>

issued_atstring date-time required

IssuedAt is the time (UTC) when the flow occurred.

oauth2_login_challengestring

Ory OAuth 2.0 Login Challenge.

This value is set using the login_challenge query parameter of the registration and login endpoints. If set will cooperate with Ory OAuth2 and OpenID to act as an OAuth2 server / OpenID Provider.

organization_idstring uuid4 nullable
request_urlstring required

RequestURL is the initial URL that was requested from Ory Kratos. It can be used to forward information contained in the URL's path or query for example.

return_tostring

ReturnTo contains the requested return_to URL.

session_token_exchange_codestring

SessionTokenExchangeCode holds the secret code that the client can use to retrieve a session token after the flow has been completed. This is only set if the client has requested a session token exchange code, and if the flow is of type "api", and only on creating the flow.

{"stackTrail":"components:schemas:registrationFlow:properties:state","oasType":"schema","type":"unknown","description":"State represents the state of this request:\n\nchoose_method: ask the user to choose a method (e.g. registration with email)\nsent_email: the email has been sent to the user\npassed_challenge: the request was successful and the registration challenge was passed."}
transient_payloadobject

TransientPayload is used to pass data from the registration to a webhook

typestring required

The flow type can either be api or browser.

Example response

{
  "active": "password",
  "return_to": "return_to",
  "session_token_exchange_code": "session_token_exchange_code",
  "type": "type",
  "issued_at": "2000-01-23T04:56:07.000+00:00",
  "request_url": "request_url",
  "expires_at": "2000-01-23T04:56:07.000+00:00",
  "oauth2_login_request": {
    "requested_access_token_audience": [
      "requested_access_token_audience",
      "requested_access_token_audience"
    ],
    "subject": "subject",
    "oidc_context": {
      "login_hint": "login_hint",
      "ui_locales": [
        "ui_locales",
        "ui_locales"
      ],
      "id_token_hint_claims": {
        "key": ""
      },
      "acr_values": [
        "acr_values",
        "acr_values"
      ],
      "display": "display"
    },
    "challenge": "challenge",
    "client": {
      "metadata": "",
      "token_endpoint_auth_signing_alg": "token_endpoint_auth_signing_alg",
      "client_uri": "client_uri",
      "jwt_bearer_grant_access_token_lifespan": "jwt_bearer_grant_access_token_lifespan",
      "jwks": "",
      "logo_uri": "logo_uri",
      "created_at": "2000-01-23T04:56:07.000+00:00",
      "registration_client_uri": "registration_client_uri",
      "allowed_cors_origins": [
        "allowed_cors_origins",
        "allowed_cors_origins"
      ],
      "refresh_token_grant_access_token_lifespan": "refresh_token_grant_access_token_lifespan",
      "registration_access_token": "registration_access_token",
      "client_id": "client_id",
      "token_endpoint_auth_method": "token_endpoint_auth_method",
      "userinfo_signed_response_alg": "userinfo_signed_response_alg",
      "authorization_code_grant_id_token_lifespan": "authorization_code_grant_id_token_lifespan",
      "authorization_code_grant_refresh_token_lifespan": "authorization_code_grant_refresh_token_lifespan",
      "client_credentials_grant_access_token_lifespan": "client_credentials_grant_access_token_lifespan",
      "updated_at": "2000-01-23T04:56:07.000+00:00",
      "scope": "scope",
      "request_uris": [
        "request_uris",
        "request_uris"
      ],
      "client_secret": "client_secret",
      "backchannel_logout_session_required": true,
      "backchannel_logout_uri": "backchannel_logout_uri",
      "client_name": "client_name",
      "policy_uri": "policy_uri",
      "owner": "owner",
      "skip_consent": true,
      "audience": [
        "audience",
        "audience"
      ],
      "authorization_code_grant_access_token_lifespan": "authorization_code_grant_access_token_lifespan",
      "post_logout_redirect_uris": [
        "post_logout_redirect_uris",
        "post_logout_redirect_uris"
      ],
      "grant_types": [
        "grant_types",
        "grant_types"
      ],
      "subject_type": "subject_type",
      "refresh_token_grant_refresh_token_lifespan": "refresh_token_grant_refresh_token_lifespan",
      "redirect_uris": [
        "redirect_uris",
        "redirect_uris"
      ],
      "sector_identifier_uri": "sector_identifier_uri",
      "frontchannel_logout_session_required": true,
      "frontchannel_logout_uri": "frontchannel_logout_uri",
      "skip_logout_consent": true,
      "refresh_token_grant_id_token_lifespan": "refresh_token_grant_id_token_lifespan",
      "implicit_grant_id_token_lifespan": "implicit_grant_id_token_lifespan",
      "client_secret_expires_at": 0,
      "implicit_grant_access_token_lifespan": "implicit_grant_access_token_lifespan",
      "access_token_strategy": "access_token_strategy",
      "jwks_uri": "jwks_uri",
      "request_object_signing_alg": "request_object_signing_alg",
      "tos_uri": "tos_uri",
      "contacts": [
        "contacts",
        "contacts"
      ],
      "response_types": [
        "response_types",
        "response_types"
      ]
    },
    "session_id": "session_id",
    "skip": true,
    "request_url": "request_url",
    "requested_scope": [
      "requested_scope",
      "requested_scope"
    ]
  },
  "transient_payload": "{}",
  "ui": {
    "nodes": [
      {
        "meta": {
          "label": {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          }
        },
        "messages": [
          {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          },
          {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          }
        ],
        "attributes": {
          "autocomplete": "email",
          "maxlength": 1,
          "onclick": "onclick",
          "pattern": "pattern",
          "onclickTrigger": "oryWebAuthnRegistration",
          "label": {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          },
          "type": "text",
          "required": true,
          "onload": "onload",
          "node_type": "text",
          "onloadTrigger": "oryWebAuthnRegistration",
          "name": "name",
          "disabled": true,
          "value": ""
        },
        "type": "text",
        "group": "default"
      },
      {
        "meta": {
          "label": {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          }
        },
        "messages": [
          {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          },
          {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          }
        ],
        "attributes": {
          "autocomplete": "email",
          "maxlength": 1,
          "onclick": "onclick",
          "pattern": "pattern",
          "onclickTrigger": "oryWebAuthnRegistration",
          "label": {
            "context": "{}",
            "id": 6,
            "text": "text",
            "type": "info"
          },
          "type": "text",
          "required": true,
          "onload": "onload",
          "node_type": "text",
          "onloadTrigger": "oryWebAuthnRegistration",
          "name": "name",
          "disabled": true,
          "value": ""
        },
        "type": "text",
        "group": "default"
      }
    ],
    "method": "method",
    "action": "action",
    "messages": [
      {
        "context": "{}",
        "id": 6,
        "text": "text",
        "type": "info"
      },
      {
        "context": "{}",
        "id": 6,
        "text": "text",
        "type": "info"
      }
    ]
  },
  "oauth2_login_challenge": "oauth2_login_challenge",
  "organization_id": "organization_id",
  "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
  "state": ""
}

Changes