Skip to main content
POST
X Account Email Verification API & Login Challenges
Free - does not consume credits
Use this endpoint after Connect X Account returns 202 Email Code Required. Submit the one-time code from the account email inbox before expiresAt while the challenge is still active.
This endpoint cannot reopen an expired, failed, completed, or replaced challenge. After 409, 410, or 422, start Connect X Account again for a new account. For an existing account, use Re-authenticate X Account with the current password and any required TOTP secret key.

Continue the pending login

Use the returned challenge ID

Keep the id from the 202 response and submit the inbox code to that challenge. The challenge belongs to the same pending login attempt.

Enter the account email code

Use the one-time code X sent to the account email inbox. Xquik strips spaces before submission, so 123 456 and 123456 are handled the same way.

Handle another code prompt

If X asks for a new email code, this endpoint returns 202 again. Keep the same flow open and submit the next inbox code before expiresAt.

Start over when stale

410 means the code expired. 409 means the challenge was already completed, failed, expired, or replaced. Start Connect X Account again for a new account, or use Re-authenticate X Account for an existing account.
The dashboard follows the same flow: it keeps the pending row open, asks for the email code, accepts a new 202 prompt if X asks again, and refreshes the account list after the 201 response.

Headers

string
required
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.
string
required
Must be application/json.

Path Parameters

string
required
Challenge ID returned by Connect X Account.

Body

string
required
Email verification code for the pending connection. Codes from 4 to 64 characters are accepted. Spaces are stripped before submission.

Response

201 Created

string
Unique account ID.
string
Connected X username.
string
X user ID.
string
Account connection status (e.g. "active").
string
Derived login/cookie health. One of healthy, locked, needsReauth, recovering, suspended, temporaryIssue. See Account health for meanings.
string
ISO 8601 timestamp of when the account was connected.

202 Email Code Required

string
Always x_account_connection_challenge.
string
Challenge ID to submit with the next email verification code.
string
Always requires_email_code.
string
ISO 8601 expiration time for the challenge.
string
Human-readable next step.
string
X username being connected.
The connection still needs a valid email code. Submit the new code to the same endpoint.

400 Invalid Input

Missing email_code, invalid JSON, or a code outside the accepted length.

401 Unauthenticated

Missing or invalid API key.

404 Not Found

The challenge ID does not exist or does not belong to the authenticated user.

409 Conflict

The challenge was already completed, failed, expired, or replaced.

410 Expired

Start a new account connection to receive a fresh challenge.

422 Login Failed

The code or account login state was rejected. Start a new connection if the account requires fresh credentials.

429 Rate Limit Exceeded

Wait for the Retry-After header before retrying.

503 Service Unavailable

Retry after a short delay.
Related: Connect X Account starts the challenge, and List X Accounts verifies the account after connection.