API
Read-only JSON endpoints backing the explorer — the same data layer the UI uses. All GET routes are rate-limited to 30 requests/minute per client; /simulate to 10/minute. No API key required.
Executable type, WASM hash, and instance storage for a contract.
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5
WASM bytecode size and a best-effort parsed ABI: function names, args and return types, any events the contract declares (name, topics, data fields), and its own type definitions (structs, unions, enums).
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5/wasm
404s if the contract has no WASM (e.g. a Stellar Asset Contract).
Events emitted by the contract.
params: limit (default 50)
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5/events?limit=10
Full history since the indexer started, when one is configured (see indexer/). Otherwise bounded by the RPC node's retention window (~24h on public nodes).
Invocation history for the contract.
params: limit (default 20)
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5/invocations
Full history since the indexer started, when one is configured. Otherwise derived from recent events and bounded by the same RPC retention window — contracts that never emit events won't show up.
Every storage key observed for the contract, at its latest known value.
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5/storage/full
Requires the indexer (returns 501 without one) — this is the one thing plain RPC access genuinely cannot do (no method exists to list a contract's storage keys). Forward-only: reflects activity since the indexer started, not full chain history.
Look up one persistent/temporary storage entry by key.
params: key (required), kind: symbol|string|u32|address (required), durability: persistent|temporary (default persistent)
example: /api/contract/:id/storage?key=Admin&kind=symbol&durability=persistent
Works against live chain state via RPC regardless of whether an indexer is configured — you have to already know the key. For enumeration without knowing keys in advance, see /storage/full.
Simulate a function call against current ledger state (read-only preview).
body: { "functionName": "current_root", "args": [{ "value": "42", "type": "U32" }] }
example: /api/contract/CDPUJYCTPGPEGS6MBXYLEWTYSGCPVKUHCURLF2ORT3RAVL5TF5JKIAI5/simulate
No signing, no submission, no funds at risk. Rate-limited more tightly than the read routes (10/min).
Transaction detail plus decoded Soroban invocation (function/args) and resource usage, if any.
example: /api/tx/c4a99120ad6b2c66d4b705b76e334f60c2c99af3f70d8b03be02c9df7dfe2fa6
Ledger detail by sequence number.
example: /api/ledger/4064026