PerformanceBlog
Tempo MCP serverGive agents search and read tools for Tempo docs
Skip to content
LogoLogo

API Errors

The Tempo API uses conventional HTTP status codes to indicate the result of a request:

  • 2xx: the request succeeded.
  • 4xx: the request failed given the information provided (for example, a missing parameter or an unknown resource).
  • 5xx: something went wrong on Tempo's side.

API error response format

Every error returns the same JSON envelope:

{
  "error": {
    "code": "token_not_found",
    "message": "No token exists at the given address.",
    "details": [
      { "message": "Check the address and try again.", "path": ["param", "token"] }
    ]
  },
  "requestId": "0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"
}
FieldTypeDescription
error.codestringA short, stable, machine-readable code. Branch on this.
error.messagestringA human-readable explanation. May change without notice.
error.detailsarrayPresent on validation errors. Each entry has a message and a path into your request, such as ["query", "limit"].
requestIdstringThe request's tempo-request-id. Include it when contacting support.

400: Bad Request

The request was malformed or contained invalid data. Validation errors include a details array pointing at the offending fields.

CodeMeaning
query_invalidA query parameter is missing or invalid.
param_invalidA path parameter is invalid.
body_invalidThe request body is missing fields or malformed.
address_invalidAn account address is not a valid 0x 20-byte address.
token_invalidA token address is not a valid TIP-20 token address.
symbol_invalidA token symbol is invalid.
pair_invalidA trading pair is invalid.
pair_id_invalidA pair identifier is invalid.
transaction_invalidA transaction hash or parameter is invalid.
order_invalidAn order identifier or parameter is invalid.
block_invalidA block number or hash is invalid.
chain_id_invalidchainId is not a known alias or numeric chain id.
chain_id_unsupportedchainId is valid but not served by this deployment.
url_invalidA supplied URL (such as a webhook target) is invalid.
api_key_malformedThe API key token is malformed.

401: Unauthorized

Authentication failed or is required. See Authentication.

CodeMeaning
api_key_missingThe endpoint requires a key and none was supplied.
api_key_invalidThe API key is not recognized, or has been revoked.
unauthorizedThe request is not properly authenticated.

402: Payment Required

The request exceeded the anonymous quota and carried no valid payment. This response is protocol-native, not the JSON error envelope: read the WWW-Authenticate header for the challenge, settle it, and retry with an Authorization: Payment credential. See paying per request with MPP.

403: Forbidden

The credential is valid but not permitted to perform the request.

CodeMeaning
api_key_forbiddenThe API key is missing a scope required by this endpoint.
limit_exceededA resource limit was reached (for example, the maximum number of webhooks).

404: Not Found

The requested resource does not exist, or is not available on the selected chain.

CodeMeaning
not_foundThe route or resource does not exist.
token_not_foundNo token exists at the given address.
token_logo_not_foundNo logo is available for the token.
block_not_foundNo block matches the request.
transaction_not_foundNo transaction matches the hash.
receipt_not_foundNo receipt is available for the transaction.
order_not_foundNo order matches the request.
pair_not_foundNo trading pair matches the request.
verified_token_not_foundThe token is not on the verified list.
webhook_not_foundNo webhook matches the id.
delivery_not_foundNo webhook delivery matches the id.
webhooks_not_enabledWebhooks are not enabled on this deployment.

429: Too Many Requests

You exceeded the rate limit. The response carries a Retry-After header. See Rate Limits.

CodeMeaning
rate_limit_exceededThe request exceeded the quota for its window.
payment_requiredThe request was over quota on an endpoint where payment is accepted but none was supplied.

5xx: Tempo server errors

Something went wrong on Tempo's side. These are transient. Retry with exponential backoff.

StatusCodeMeaning
500internal_errorAn unexpected error occurred.
502upstream_errorAn upstream node or indexer failed to respond.