Skip to content
TraceFast Docs

API keys

Compare plans →

Every method of the TraceFast REST API is called with an API key. The key goes in one request header; the plan the key belongs to decides which methods it may call, how many requests a day it gets and how fast it may send them.

The same key connects an AI agent to the TraceFast MCP server, where the methods are tools under the same plan and limits; there an agent can also sign in with a TraceFast account instead. The REST API itself takes keys only — a sign-in token sent to /api/v1 is refused with 401. AI agents that would rather not hold a key can pay per call instead — every method is also sold over x402, with no account at all.

Sending the key

Base URL: https://tracefast.xyz/api/v1
Header:   x-api-key: <your key>
curl -s https://tracefast.xyz/api/v1/chains/1/blocks/latest \
  -H "x-api-key: $TRACEFAST_API_KEY"

Without a key every method answers 401 with reason: api_key_required. The OpenAPI document needs no key, so a client can be generated from it before you have one:

https://tracefast.xyz/api/v1/openapi.json

It declares the x-api-key scheme on every method, and marks each operation with x-minimum-plan — the lowest plan that opens it: data (Enriched Data), intelligence or investigation. Every method page names the same plan. An operation without the field states no plan — that does not make it free.

Getting and managing keys

Keys are issued in the TraceFast app under Settings → API keys, on an account with a paid plan; the secret is shown once, at creation. Send it in the x-api-key header from your server — a key does not work from a browser, and belongs in a secret manager, never in a repository. Creating, rotating, disabling and revoking keys, and reading their usage and audit log, are described on Managing API keys.

Plans

Methods are grouped by what they tell you. Each plan opens more of them, and includes everything in the plan below it:

PlanOpens
Enriched Datablocks — their transactions, withdrawals and EIP-7702 authorizations; a transaction, its events and why it reverted; token contracts and their transfers; network token statistics; contracts — metadata, bytecode, selectors, proxy implementations; an address's overview, activity and native balance history
Intelligenceeverything in Enriched Data, plus resolving a name, symbol or address to the addresses it can mean; what the TraceFast knowledge graph states about an address: attributes and relations — now, at a block, their history and their proof — counterparties, portfolio, token balances and token holders; the accounts a block touched; and the consensus layer — validator queues, block proposers and a validator's withdrawals
Investigationeverything in Intelligence, plus the deep feeds: an address's transactions, token transfers and internal transfers, a contract's events; a transaction's execution trace, its call frames page by page and its storage writes; and an address's on-chain blacklist status and events

The Free plan opens the explorer only, not the API. Every method page names the plan it needs. Prices, daily quotas, request rates and the number of keys per plan are on the pricing page.

When a key is refused

The key check answers before the method runs. Its refusals keep the usual envelope and add a reason next to the code — branch on reason:

{
  "error": {
    "code": "auth_failed",
    "message": "authentication failed: this route requires an API key",
    "reason": "api_key_required"
  }
}
StatusreasonWhat happenedWhat to do
401api_key_requiredno key was sentsend x-api-key
401invalid_api_keythe string is not a keycheck the value you send
401key_disabledthe key was switched offenable it, or use another key
401key_expiredthe key's validity ran outissue a new key
401key_revokedthe key was revokedissue a new key — a revoked key never comes back
403plan_scope_missingyour plan does not include this methodupgrade the plan; the key itself is fine
403key_scope_missingyour plan includes this method, but the key was issued without itissue or rotate a key that includes it
403endpoint_group_not_allowedthis key may not call this methodcheck the plan and the key's permissions
403account_suspendedthe account is suspendedcontact support

None of these is fixed by retrying: nothing about waiting changes the answer.

Rate limits and quotas

Each plan sets a daily request quota, a request rate and a cap on concurrent requests per key. Past a limit, a call answers 429 with one of three codes — rate_limited, concurrency_limited or quota_exceeded — and a bucket that names what refused:

bucketMeaningRetry-After
basethe plan's request rate, per key1 second
class:standard, class:heavy, class:extremea smaller budget for costlier methods, on top of the plan's ratethe class's window
concurrencytoo many requests in flight on this key—
quota_dailythe account's daily quota is spent—

The daily quota belongs to the account and resets at 00:00 UTC. Honour Retry-After when it is present; a spent daily quota does not come back before the reset.


Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown