API error codes

When a call fails, the response is a Problem Details object (RFC 9457) with a code and a link to that code's page.

CodeHTTP statusMeaning
IDEMPOTENCY_KEY_INVALID400Invalid Idempotency-Key
IDEMPOTENCY_KEY_REQUIRED400Idempotency-Key required
INVALID_CURSOR400Invalid page cursor
VALIDATION_FAILED400The request is invalid
INVALID_CREDENTIALS401Wrong e-mail or password
OAUTH_REJECTED401Sign-in with that account failed
PASSKEY_REJECTED401Passkey not accepted
TOKEN_EXPIRED401Link has expired
TOKEN_INVALID401Link is not valid
TOKEN_USED401Link already used
UNAUTHENTICATED401Authentication failed
CREDIT_EXPIRED402Credit expired
NO_CREDIT402Not enough credit
ACCOUNT_SUSPENDED403Account suspended
FORBIDDEN403Not allowed
INVITE_EMAIL_MISMATCH403This invite is for a different email
KEY_NOT_YOURS403You cannot change or revoke an API key someone else created
NOT_VIA_API_KEY403Not available with an API key
ORIGIN_NOT_ALLOWED403This request must come from the Checkslip web app
PASSWORD_INCORRECT403Current password is wrong
PHONE_NOT_VERIFIED403Mobile number not confirmed
ROLE_NOT_ALLOWED403Your role in this team cannot do this
STEP_UP_REQUIRED403Re-authentication required
TWO_STEP_REQUIRED403Two-step code required
ATTACHMENT_NOT_FOUND404Attachment not found
DELIVERY_NOT_FOUND404Delivery not found
ENDPOINT_NOT_FOUND404Endpoint not found
KEY_NOT_FOUND404API key not found
NOT_FOUND404Not found
OAUTH_NOT_LINKED404That account is not connected to Checkslip
ORDER_NOT_FOUND404Order not found
PACKAGE_NOT_FOUND404Package not found
RECEIPT_NOT_FOUND404Receipt not found
TICKET_NOT_FOUND404Ticket not found
ALREADY_MEMBER409This email is already in the team
ATTACHMENT_LIMIT_REACHED409Attachment limit reached
BILLING_INFO_REQUIRED409Receipt details missing
DELETE_BALANCE_CHANGED409Credit balance changed before deletion
ENDPOINT_DISABLED409Endpoint is disabled
ENDPOINT_LIMIT_REACHED409Endpoint limit reached
EXPORT_NOT_READY409Export not ready
HOME_WORKSPACE409A first team cannot be deleted on its own
IDEMPOTENCY_IN_FLIGHT409Original request still in progress
KEY_LIMIT_REACHED409Active API key limit reached
KEY_NOT_ACTIVE409This API key is no longer active
LAST_OWNER409An account always needs an owner
LAST_SIGN_IN_METHOD409An account always needs a way to sign in
OAUTH_ALREADY_LINKED409An account from this provider is already connected
OAUTH_EMAIL_IN_USE409This email already has a Checkslip account
OAUTH_IN_USE409That account is connected to another user
ORDER_ALREADY_PAID409This order is already paid
ORDER_CANCELLED409This order was cancelled
ORDER_PENDING409An order is waiting for payment
OWNS_OTHER_WORKSPACES409Still the owner of another team
PASSWORD_NOT_SET409This account has no password yet
PASSWORD_SET409This account already has a password
PAYLOAD_INTEGRITY_MISMATCH409Cannot resend: the original message was not kept
PHONE_TAKEN409Phone number in use by another account
ROTATION_IN_PROGRESS409Secret rotation in progress
STALE_WRITE409Changed since you loaded it
TICKET_CLOSED409Ticket is closed
TICKET_LIMIT_REACHED409Too many open tickets
TICKET_NOT_CLOSED409Ticket is not closed
TICKET_REOPEN_EXPIRED409Reopen window has passed
TICKET_VERSION_CONFLICT409Ticket was changed
TOO_MANY_INVITES409Too many invites awaiting a reply
TOO_MANY_WORKSPACES409Already own the maximum number of teams
TWO_STEP_ALREADY_ON409Two-step sign-in is already on
TWO_STEP_NOT_SET_UP409Two-step sign-in not set up yet
ATTACHMENT_EXPIRED410Attachment removed
ENDPOINT_DELETED410Endpoint was deleted
EXPORT_EXPIRED410Export expired
OTP_EXPIRED410Code no longer valid
PAYLOAD_EXPIRED410Payload no longer available
ATTACHMENT_TOO_LARGE413File is too large to attach
PAYLOAD_TOO_LARGE413Payload too large
ATTACHMENT_TYPE_NOT_ALLOWED415This file type cannot be attached
UNSUPPORTED_MEDIA_TYPE415Unsupported media type
MISDIRECTED_REQUEST421Request sent to the wrong host
ATTACHMENT_INFECTED422File failed the virus scan
ATTACHMENT_UNREADABLE422This image could not be read
AVATAR_REFUSED422This picture cannot be used as a profile picture
CAPTCHA_FAILED422Bot check failed
DESTINATION_BLOCKED422Destination not allowed
DNS_UNRESOLVABLE422Host could not be resolved
IDEMPOTENCY_KEY_REUSED422Idempotency-Key reused for a different request
INVALID_FILE422File cannot be read
INVALID_QR422Invalid QR
MULTIPLE_SLIP_QR422More than one slip QR in one image
OTP_INVALID422Wrong code
PACKAGE_NOT_FOR_SALE422This package cannot be bought
PHONE_NOT_SUPPORTED422Only Thai mobile numbers
QR_TAMPERED422QR tampered
RANGE_TOO_LARGE422Range too large
RECOVER_WINDOW_INVALID422Invalid recover window
TOO_OLD422Too old
TWO_STEP_CODE_INVALID422Wrong two-step code
UNKNOWN_EVENT_TYPE422Unknown event type
URL_HAS_USERINFO422URL contains credentials
URL_NOT_HTTPS422URL must use https
RATE_LIMITED429Rate limit exceeded
INTERNAL500Internal error
ATTACHMENT_SCAN_UNAVAILABLE503File scanning temporarily unavailable
AVATAR_CHECK_UNAVAILABLE503Picture check temporarily unavailable
CAPTCHA_UNAVAILABLE503Bot check temporarily unavailable
CREDIT_UNAVAILABLE503Cannot check or hold credits right now
PAYMENTS_UNAVAILABLE503Payments unavailable
SERVICE_UNAVAILABLE503Temporarily unavailable
SMS_UNAVAILABLE503SMS temporarily unavailable
STEP_UP_UNAVAILABLE503Re-authentication check temporarily unavailable
UNAVAILABLE503Unavailable
GATEWAY_TIMEOUT504The answer took too long