Skip to content
IN THIS GUIDE

Errors ​

API errors provide a message and, where available, a machine-readable code. Use the code for application logic and the message for context.

Handling error responses

The sentence is written for a person and may be reworded at any time. The code is part of the contract and will not change within v1.

AUTH_UNAVAILABLE and LOOKUP_FAILED indicate a temporary lookup failure. Retry with backoff; these responses do not establish that a key or collection is invalid.

v1 error catalog ​

This table is generated from the API's 22-code v1 catalog. Mint handlers and middleware can return additional codes; see SDK error handling and retain a message fallback for unfamiliar responses.

codestatusretrymeaning and what to do
API_KEY_EXPIRED401noThe key is past its expiry. Request a new one.
API_KEY_INACTIVE401noThe key exists but is disabled. Request a replacement or ask for its status to be reviewed.
API_KEY_INVALID401noThe key did not match a live record. Check the key. Terminal — do not retry.
API_KEY_REQUIRED401noNo key, and no recognised origin. Send X-API-Key, or ask us to register your origin.
AUTH_UNAVAILABLE503yesThe authentication check could not complete. Retry with backoff; the key has not been rejected.
CHAIN_DISABLED400noThat chain is retired or paused. Terminal. Fall back to capabilities.mintUrl.
CHAIN_NOT_SUPPORTED_BY_SURFACE400nov1 mints Solana only. Use the mint page for other chains.
CLIENT_BROADCAST_NOT_ALLOWED400noYou sent a transaction hash — meaning you broadcast it yourself. Send signedTransaction as base64. GraveMint submits the transaction.
CODE_REQUIRED400noA claim-code check arrived with no code. Send { code } in the body.
COLLECTION_CLOSED409noThe drop is closed. Terminal for minting; the read still works.
COLLECTION_NOT_FOUND404noNo live drop matches that identifier. Check the short ID, UUID or on-chain address and the key scope.
COLLECTION_NOT_IN_SCOPE403noThe key was not issued for that drop. A key is scoped to specific collections. Terminal.
COLLECTION_REQUIRED400noNo collection was supplied. Include collectionId.
LOOKUP_FAILED503yesWe could not load the drop. Retry shortly. Not a statement about whether it exists.
NFTS_LOCKED409yesThe items are briefly held by another mint that is still settling. Supply is temporarily reserved. Ask the collector to try again shortly.
NOT_ELIGIBLE403noThis wallet does not meet the phase requirements. Show the reason from the eligibility endpoint. Terminal for this wallet/phase.
ORIGIN_NOT_ALLOWED403noThis origin is not on the key. Request registration of the exact origin, including staging and previews.
RATE_LIMITED429yesToo many requests. Back off and honour Retry-After.
SESSION_EXPIRED410noThe prepared session timed out before the signature came back. Call prepare again. Never reuse a stale session.
TX_MODIFIED400noThe signed transaction does not match what we built. Check the signing adapter, then prepare a new transaction. Do not resend modified bytes.
UNSUPPORTED_BY_SURFACE409noThe collection requires features outside the core mint flow. Read capabilities.requiresFeatures and offer capabilities.mintUrl when available.
WALLET_MISMATCH400noThe signing wallet is not the wallet the session was prepared for. Prepare and sign with the same wallet.

Mint recovery ​

  • NFTS_LOCKED: supply is temporarily reserved by another mint. Try again shortly.
  • TX_MODIFIED: correct the signing adapter before preparing a new transaction.
  • CLIENT_BROADCAST_NOT_ALLOWED: send signed bytes for server submission. See signing.
  • OUTCOME_UNKNOWN: the SDK cannot confirm the submitted mint's outcome. Retain session IDs and check the wallet before starting another mint. This SDK error is separate from the API catalog above.

For batches, inspect each returned transaction's errorCode and pending fields, even when the HTTP request succeeds.