Zitadel Preview Docs

Get authentication attempt state

Polls the current state of an authentication attempt. Returns the attempt's state, available factors for the next challenge, challenges issued so far, and any errors preventing progress. Use this for polling during long-running factor verifications (e.g., waiting for a federated IdP callback or a device flow).

GET
/auth_attempts/{attempt_id}

Polls the current state of an authentication attempt.

Returns the attempt's state, available factors for the next challenge, challenges issued so far, and any errors preventing progress.

Use this for polling during long-running factor verifications (e.g., waiting for a federated IdP callback or a device flow).

Authorization

oauth2 auth_attempts.read
AuthorizationBearer <token>

In: header

Scope: auth_attempts.read

Path Parameters

attempt_id*string

The unique identifier of the authentication attempt

Response Body

application/json

application/json

curl -X GET "https://example.com/auth_attempts/abc123def456"
{  "attempt_id": "abc123def456",  "project_id": "river-8421",  "state": "in_progress",  "session_id": "abc123def456",  "user_id": "user_id_12345",  "required_factors": [    "identifier",    "password"  ],  "completed_factors": [    {      "method": "password",      "verified_at": "2026-04-28T15:32:00Z",      "payload": {        "user_id": "user_id_12345"      }    }  ],  "challenges": [    {      "challenge_id": "abc123def456",      "method": "password",      "state": "pending",      "created_at": "2026-04-28T15:31:00Z",      "expires_at": "2026-04-28T15:41:00Z",      "payload": {}    }  ],  "expires_at": "2026-04-28T15:45:00Z",  "created_at": "2026-04-28T15:30:00Z"}

{  "code": "att.not_found",  "message": "The auth attempt was not found."}