Skip to main content
The Explorer’s read API is public, unauthenticated and read-only. Every answer is an audit aid: verify the transaction on chain. The OpenAPI 3.1 document is served at /api/v1/openapi.json. {network} is pubnet or testnet. Only GET and HEAD are accepted. Lists cover the network’s current epoch (testnet resets start a new one).

Transactions

(Shortened; settlement carries every field of a settlement row, listed in the indexing rules and the OpenAPI document.)
  • source is index for an indexed row and live for a hash read from the network’s RPC because the indexer has not reached it yet.
  • kind is settlement, failed_attempt (a failed transaction with the shape of a settlement, never counted) or not_x402 (with notX402.exclusion, the check it missed, or null).
  • Amounts are atomic units as decimal strings. Only asset.verified: true names a Stellar asset.

Paging

Lists return { items, nextCursor, limit }, newest first. Pass nextCursor back as cursor until it is null.
  • limit is 1 to 100 (default 25); anything else is explorer_invalid_limit.
  • offset and page are refused with explorer_offset_unsupported; paging is keyset only.
  • A cursor is bound to its list: one taken from another account, role or facilitator is explorer_invalid_cursor.
  • Any other query parameter is explorer_invalid_parameter.

Caching

If-None-Match with a current ETag answers 304.

Errors

Every error is { "error": { "code", "reason", "retryable" } } with a non-empty reason; 429 answers carry Retry-After. The same codes appear on the error code reference.

Limits

Each client (an IPv4 address or an IPv6 /64) may make 120 requests a minute (pages and API together, configurable by the operator), and 6 live lookups a minute per network. /health answers { status, database, reports }, is not rate-limited, and shares one database check (given one second) among all requests in any two seconds. The report (/api/v1/{network}/report) is computed by the indexer and re-read every 30 seconds. Its scope is registry: it covers the ledgers that hold transactions of the registry’s facilitator accounts and upto contracts, from the first ledger of the index to the last ledger every discovery route has walked, cut before the first candidate ledger not read yet or failed; detachedFrom and coverageStop (pending or failed) say where and why it stops, and failedLedgers lists failed ledgers. discovery says how the ledgers were selected (source, routes, the source’s index generations and decoders), how many of them held no row a registry facilitator settled (ledgersWithoutAttributedRow; their own rows count only in the unattributed and failed totals), and where their bytes came from (bytes.lake, bytes.rpc). Until the indexer has published a registry-scope report, the endpoint answers explorer_report_unavailable. Its reproducible field is true when every covered row carries the current rules and registry versions and no ledger failed, so a rebuild of the manifest’s ledger list (rebuildCommand) gives the same totals and files; the manifest’s ledgers lists every ledger read with its hash, rowVersions the versions the rows carry, and anchors the independent ledger hashes the indexer checked. headlineScope is registered-facilitators: aggregates.headline counts the facilitators in the public registry, Rail402 included, never every x402 payment on the network. auditCommand is the full scan of the range, which also measures the unattributed look-alikes in every ledger of the range that this report does not (see checking a published number). networkWide is the network-wide block, or null while the network window job is off or has not run: label (network-wide (sampled window)), scope (full), window (hours, from, to, ledgers, firstClosedAt, lastClosedAt), tiers (rail402, otherRegistered, unattributed, each with payments, volume per asset, payers and sellers, self-payments excluded), rail402Beta, selfPayments, sharedRelayerPayments, failedAttempts, excluded, assets, the rules and registry versions, manifestSha256, totalsSha256, anchorHorizon, rebuildCommand and run (seconds, downloadedBytes). It counts every facilitator, registered or not, but only in its window; it is not part of the report’s own manifest.