Methods
Returns login methods available for the organization. Requires Auth and the corresponding method service to be enabled. Social methods include enabled providers; SSO methods include active connections. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "methods": [ { "id": "otp", "label": "OTP" }, { "id": "password", "label": "Email and password", "providers": null }, { "id": "social", "label": "Social login", "providers": ["google"] } ] }
Login
POST
/v1/auth/login/otp/sendSend a login OTP to an active directory user. Requires Auth and OTP services. Returns a generic response when the user is not found (anti-enumeration). Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "otp_id": "...", "expires_at": "...", "delivery_hint": "j•••@example.com", "delivery_method": "email" }
POST
/v1/auth/login/otp/verifyVerify the login OTP and return session tokens. Registers an OS session and syncs org membership. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| otp_id | string | Yes | The otp_id returned from /v1/otp/generate |
| code | string | Yes | The word pair entered by the user |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600, "user_id": "...", "directory_user_id": "..." } }
POST
/v1/auth/login/passwordSign in with email and password for a provisioned directory user. Requires Auth and Email and Password services. Enforces lockout policy from dashboard settings. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| password | string | Yes | User password (min 8 characters for signup) |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/password/reset/sendSend a self-serve password reset email. Never reveals whether the user exists. Requires auth.login and password reset enabled.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| redirectTo | string | No | Optional URL embedded in the email action link |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "delivery_hint": "j•••@example.com" }
POST
/v1/auth/password/reset/confirmConfirm a password reset with the recovery token hash and a new password. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| token_hash | string | Yes | Magic link or recovery token hash from the email link |
| password | string | Yes | User password (min 8 characters for signup) |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/invite/acceptAccept a directory user invite by setting a password. Returns a session. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| token | string | Yes | Directory user invite token from the invitation email |
| password | string | Yes | User password (min 8 characters for signup) |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/login/magic-link/sendEmail a sign-in link to an active directory user. Requires Auth and Magic Link services. Respects TTL and rate limits from Magic Link dashboard settings. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| redirectTo | string | No | Optional URL embedded in the email action link |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "delivery_hint": "j•••@example.com" }
POST
/v1/auth/login/magic-link/verifyExchange the token_hash from the magic link for session tokens. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| token_hash | string | Yes | Magic link or recovery token hash from the email link |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/login/passkey/optionsStart a WebAuthn passkey login ceremony for a user with registered credentials. Requires Auth and Passkeys services. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "options": { /* WebAuthn request options */ }, "challengeId": "..." }
POST
/v1/auth/login/passkey/verifyVerify the passkey assertion from navigator.credentials.get() and return session tokens. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| challengeId | string | Yes | Passkey challenge ID from the options response |
| credential | object | Yes | WebAuthn credential from navigator.credentials.create() or get() |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/login/social/startReturns an OAuth authorization_url for an enabled provider (google, github, apple, microsoft). Redirect the user's browser there; after callback, tokens are sent to your redirectUri. Requires Auth and Social Login services. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| provider | string | Yes | google, github, apple, or microsoft |
| redirectUri | string | Yes | Your app URL to receive OAuth/SSO tokens after login |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "authorization_url": "https://...", "state": "..." }
POST
/v1/auth/login/sso/startReturns an IdP authorization_url for an active SAML or OIDC connection. Requires Auth and SSO services. Requires auth.login.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| connectionId | string | Yes | SSO connection ID from the dashboard or GET /v1/sso/connections |
| redirectUri | string | Yes | Your app URL to receive OAuth/SSO tokens after login |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "authorization_url": "https://...", "state": "..." }
Signup
Create an auth account for a provisioned directory user, or register when openSignup is true (defaults from Auth dashboard settings when omitted). Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| firstName | string | No | First name |
| lastName | string | No | Last name |
| phone | string | No | Phone number |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600, "user_id": "...", "directory_user_id": "..." } }
POST
/v1/auth/signup/passwordRegister with email and password. Requires Auth and Email and Password services; enforces password policy and allow_sign_up from dashboard settings. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| password | string | Yes | User password (min 8 characters for signup) |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600 } }
POST
/v1/auth/signup/otp/sendStart OTP-verified signup — provisions the directory user when openSignup is true, then sends a code. Requires Auth and OTP services. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "otp_id": "...", "expires_at": "...", "delivery_hint": "...", "delivery_method": "email" }
POST
/v1/auth/signup/otp/verifyComplete OTP-verified signup and return session tokens. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| otp_id | string | Yes | The otp_id returned from /v1/otp/generate |
| code | string | Yes | The word pair entered by the user |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600, "user_id": "...", "directory_user_id": "..." } }
POST
/v1/auth/signup/authenticate-email/sendSend an authenticate-your-email link for open signup. Does not provision the directory user until the link is verified. Requires open signup (org Auth setting or openSignup: true). Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| redirectTo | string | No | Optional URL embedded in the email action link |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| firstName | string | No | First name |
| lastName | string | No | Last name |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "delivery_hint": "u•••@example.com" }
POST
/v1/auth/signup/authenticate-email/verifyVerify the authenticate-email token, provision the directory user if needed, and return session tokens. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| token_hash | string | Yes | Magic link or recovery token hash from the email link |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600, "user_id": "...", "directory_user_id": "..." } }
POST
/v1/auth/signup/passkey/optionsStart a WebAuthn passkey signup ceremony for a directory user (create if open signup). Requires Auth and Passkeys services and passkey allow_sign_up. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| firstName | string | No | First name |
| lastName | string | No | Last name |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "options": { /* WebAuthn create options */ }, "challengeId": "..." }
POST
/v1/auth/signup/passkey/verifyVerify the passkey attestation, store the credential on the directory user, and return session tokens. Requires auth.signup.
Query Parameters
| Param | Type | Required | Description |
|---|
| subOrgId | string | No | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Request Body
| Param | Type | Required | Description |
|---|
| email | string | Yes | User email address |
| challengeId | string | Yes | Passkey challenge ID from the options response |
| credential | object | Yes | WebAuthn credential from navigator.credentials.create() or get() |
| deviceName | string | No | Optional friendly name for the passkey |
| openSignup | boolean | No | When true, create a new directory user if one does not exist. When omitted, defaults to the Auth dashboard open signup setting. |
| subOrgId | string | Yes | Organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization. |
Response — 200
{ "session": { "access_token": "...", "refresh_token": "...", "expires_in": 3600, "user_id": "...", "directory_user_id": "..." } }