/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
settlement carries every field of a settlement row, listed in the
indexing rules and the OpenAPI document.)
sourceisindexfor an indexed row andlivefor a hash read from the network’s RPC because the indexer has not reached it yet.kindissettlement,failed_attempt(a failed transaction with the shape of a settlement, never counted) ornot_x402(withnotX402.exclusion, the check it missed, ornull).- Amounts are atomic units as decimal strings. Only
asset.verified: truenames a Stellar asset.
Paging
Lists return{ items, nextCursor, limit }, newest first. Pass nextCursor back as cursor until it is
null.
limitis 1 to 100 (default 25); anything else isexplorer_invalid_limit.offsetandpageare refused withexplorer_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.