Herald
OpenapiAuth

Verify an email OTP login code and issue a session.

On a matching code: consumes it (one-time), then either logs the existing user in (login-as-consent gate) or auto-registers a new account (create-without-password → activate → register-as-consent) and issues a Bearer token family via `RedisBrowserTokenService`. Returns `BrowserTokenResponse`.

POST
/api/auth/{realmId}/login/email-otp/verify

On a matching code: consumes it (one-time), then either logs the existing user in (login-as-consent gate) or auto-registers a new account (create-without-password → activate → register-as-consent) and issues a Bearer token family via RedisBrowserTokenService. Returns BrowserTokenResponse.

Path Parameters

realmId*string

Realm ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

agreements?array<>|null
clientId*string
code*string
email*string
turnstileToken?string|null

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/auth/string/login/email-otp/verify" \  -H "Content-Type: application/json" \  -d '{    "clientId": "string",    "code": "string",    "email": "string"  }'
{  "accessToken": "string",  "expiresIn": 0,  "refreshExpiresIn": 0,  "refreshToken": "string",  "tokenType": "string"}
{  "code": "string",  "details": null,  "message": "string",  "requestId": "string",  "status": 0}
{  "code": "string",  "details": null,  "message": "string",  "requestId": "string",  "status": 0}
{  "code": "string",  "details": null,  "message": "string",  "requestId": "string",  "status": 0}
{  "code": "string",  "details": null,  "message": "string",  "requestId": "string",  "status": 0}