AlkiraiLinkDocs

Guides

Errors

Every failed response has the same body, with a code that says what happened and who has to act. Branch on the code, never on the wording.

The error body

A sandbox connection made as user_expires_at_sync stops at its first sync, and every sync after that answers this:

409 Conflict

{
  "detail": "Unattended sign-in for this connection was stopped at 2026-10-21 01:01 UTC after a sign-in did not complete (session_expired). Nothing further will be attempted against the institution; the user must reconnect.",
  "error": {
    "code": "session_expired",
    "message": "Unattended sign-in for this connection was stopped at 2026-10-21 01:01 UTC after a sign-in did not complete (session_expired). Nothing further will be attempted against the institution; the user must reconnect.",
    "retryable": false,
    "request_id": "req_1b53be0b41aa8d3237e6b6c3",
    "type": "connection_error",
    "user_action": "reconnect",
    "display_message": "Your AlkiraiLink Sandbox Bank sign-in has expired. Reconnect to keep your accounts up to date.",
    "retry_after": null,
    "stopped_at": "2026-10-21T01:01:17Z"
  }
}

detail repeats message, except on a 422 for the request's shape, where it lists each field that didn't match.

Retrying

Statuses

StatusWhen
400The request can't be carried out as sent; error.message says why.
401The API key is missing, unknown, expired or revoked.
404Nothing by that id that this key may see. Another key's connection is also 404.
409The connection is stopped, or its institution needs the person there to sign in. Nothing was sent to the institution. error.code and error.user_action say what unblocks it.
413The body is over this route's limit, given as x-body-limit.
422The body didn't match the expected shape, or a statement couldn't be read. For a shape error, detail lists each field.
429Refused for now: the connection's sign-in budget is spent, another sign-in is running on it, or this address sent more than 120 requests in a minute. Wait for Retry-After when it is sent. The per-address limit is answered before the API and has no JSON body.
500Something failed on our side. Try again; if it keeps happening, write to hello@alkirai.com with the request ID.
502Signed in, and then the read failed. Nothing was stopped; error.code says why.
503AlkiraiLink can't take the request right now. Try again shortly.

Codes

Each code's type and the person's action never change, so you can map them once. Retry says whether asking again later can help.

CodePerson's actionRetryWhat it means
invalid_credentialsreconnectNoThe institution didn't accept the saved sign-in details, usually because the password changed. The connection is stopped and the person reconnects. Never retry it: repeated wrong passwords lock accounts.
challenge_failednoneLaterThe one-time code or answer wasn't accepted. The person can try again.
session_expiredreconnectNoThe institution no longer accepts the connection's sign-in. The connection is stopped and the person reconnects.
account_lockedcontact_institutionNoThe institution has locked the person's online banking. The connection is stopped. They contact the institution first and then reconnect, because reconnecting into a locked account fails again.
mfa_requiredsign_inNoThis institution needs the person there to sign in. Nothing is broken: refresh it with them, through Connect or a sign-in sync.
institution_downnoneLaterThe institution isn't responding. The connection isn't stopped; try again later.
connector_brokennoneLaterAlkiraiLink couldn't read what the institution sent back, usually because its site changed. It is ours to fix, and nothing is needed from the person. A connection stopped this way restarts once it is fixed, so keep your usual schedule.
rate_limitednoneLaterToo many requests for now. Wait for retry_after when it is set.
unsupportednoneNoThe institution can't do what was asked.
internalnoneLaterSomething failed on our side. Try again; if it keeps happening, write to us with the request ID.
sign_in_incompletereconnectNoA sign-in failed partway, so what the institution now makes of the account is unknown. The connection is stopped to protect it, and the person reconnects.
consent_requiredreconnectNoThe person didn't agree to share these details when they connected. They connect again, through a Connect session that asks for them.
different_loginnoneNoWhile signing in again to a connection you sent as connection_id, the person used a different login from the one the connection was made with. Nothing was saved and the connection is unchanged. Connect asks them to sign in with their original login.
invalid_requestnoneNoThe request was wrong: a missing field, a value that isn't allowed, or a file that can't be read. message says which.
unauthorizednoneNoThe API key is missing, unknown, expired or revoked.
forbiddennoneNoThis key isn't allowed to do that.
not_foundnoneNoNothing by that id that this key may see.
expirednoneNoA Connect session or token has expired. Start again.
service_unavailablenoneLaterAlkiraiLink can't take the request right now. Try again shortly.