Issue a factor challenge
Issues a single-factor verification challenge within an auth attempt. This advances the authentication state machine by requesting a specific factor method (password, passkey, TOTP, OTP via SMS, etc.). The server responds with challenge details including method, metadata, and any UI hints. The client then verifies the proof by calling POST /auth_attempts/{attempt_id}/challenges/{challenge_id}/verify.
Issues a single-factor verification challenge within an auth attempt.
This advances the authentication state machine by requesting a specific factor method (password, passkey, TOTP, OTP via SMS, etc.). The server responds with challenge details including method, metadata, and any UI hints. The client then verifies the proof by calling POST /auth_attempts/{attempt_id}/challenges/{challenge_id}/verify.
oauth2 auth_attempt.writeAuthorizationBearer <token>Scope: auth_attempt.write
attempt_id*stringThe unique identifier of the authentication attempt
^att_[a-zA-Z0-9_-]+$application/json- body
Request to issue a factor challenge.
The method field selects which factor to challenge. Additional fields are
only relevant for specific methods:
passkey_optionsis optional and only used whenmethodispasskey.idp_provideris required whenmethodisidpand must be omitted otherwise. This conditional requirement is enforced server-side.
method*challenge-methodThe authentication factor method to challenge.
"identifier""password""passkey"passkey_options?Optional WebAuthn ceremony options. Only relevant when method is passkey.
Challenge issued successfully
application/json- response
A factor challenge issued within an authentication attempt.
A challenge presents a single-factor verification prompt (password entry, TOTP code, passkey assertion, etc.). The client verifies the proof by POST /auth_attempts/{attempt_id}/challenges/{challenge_id}/verify.
challenge_id*challenge-idUnique identifier for this challenge (dialect-minted prefixed opaque string).
^ch_[a-zA-Z0-9_-]+$method*challenge-methodThe authentication method this challenge represents. Determines which proof is expected in verify.
"identifier""password""passkey"state*stringCurrent state of this challenge:
pending: awaiting proof submissionfailed: proof rejected (invalid credential, wrong code, etc.)expired: challenge TTL exceeded without verification
"pending""failed""expired"created_at*stringWhen this challenge was issued
date-timeexpires_at?|When this challenge expires
payload?||Method-specific challenge data. Structure depends on the method field.
identifier,password: null (no additional data needed)passkey: WebAuthn challenge and credential optionsidp: Authorization URL and provider information
curl -X POST 'https://example.com/auth_attempts/string/challenges' \ -H 'Content-Type: application/json' \ -d '{ "method": "identifier"}'{ "challenge_id": "string", "method": "identifier", "state": "pending", "created_at": "2019-08-24T14:15:22Z", "expires_at": "2019-08-24T14:15:22Z", "payload": {}}