There is no dedicated API address yet
This page is the contract, not an invitation. Every endpoint below exists and answers. The only address that serves them today is the path this site's own pages are rendered from, and that is not a published API address: no API hostname has been announced, and no API key system exists.
It will be opened properly. There is no date, and this page will not invent one: when a dedicated API hostname is published the base URL will appear in this card and this notice will be gone.
Nothing you read on Arcscan depends on it. Our own servers render every page over that private address, so a page works the same whether the public API is open or not.
The typed API lives under /v1. It is the surface this site itself renders from, so anything you can see on a page you can also read as JSON, in the same shape.
The compatible API lives at /api?module=…&action=…. It reproduces the de-facto standard explorer REST contract that wallets, indexers, deployment scripts and bots already speak, so existing tooling can be pointed at Arc by changing one base URL. Every scalar in a result is a string, exactly as that contract requires.
GET /v1/blocks/latest GET /api?module=proxy&action=eth_blockNumber GET /api?module=account&action=balance&address=0x…
The examples above are a method and a path, with no host in front of them. There is no published API base URL to print yet — see the notice at the top of this page.
| Method | Path | Parameters | Returns | Cache |
|---|---|---|---|---|
| GET | /v1/chain | — | Chain identity, native and ERC-20 decimals, the live node capability map (including internal_transactions), and index coverage with its own plain-language summary |
/v1/stream/head is a server-sent event stream emitting one head event per committed block. The payload carries server_now so a client can correct for clock skew rather than trusting the browser clock.
event: head data: {"height":54190133,"hash":"0x…","timestamp":1785345456,"tx_count":11,"server_now":1785345456}
There is no pending-transaction stream. The mempool namespace is disabled on this chain, and with a half-second block time a pending view would show a transaction for less time than it takes to read it.
Envelope: {"status":"1","message":"OK","result":…}. An empty-but-valid answer returns {"status":"0","message":"No transactions found","result":[]} and an error returns {"status":"0","message":"NOTOK","result":"Error! …"}. module=proxy returns a bare JSON-RPC envelope instead. Both GET and form-encoded POST are accepted.
| Method | Path | Parameters | Returns | Cache |
|---|---|---|---|---|
| GET |
These return the standard error envelope with HTTP 200 — never a 404, so a client library does not hard-crash. Each carries its own reason rather than one generic sentence: an index we do not build, a structural property of Arc, or a working endpoint under a different name.
The two NFT history actions are the ones most often reached for, and neither can be answered for an address. The ERC-20 form, account.tokentx, is answered, and requires an explicit startblock and endblock.
{"error":{"code":"NOT_FOUND","message":"…","detail":null}}
Codes: INVALID_INPUT (400), NOT_FOUND (404), RATE_LIMITED (429), CAPABILITY_UNAVAILABLE (501), UPSTREAM_ERROR (502), UPSTREAM_TIMEOUT (504).
| GET | /v1/home | blocks?, txs? | Everything the home page renders: head, stats, latest blocks and transactions | no-store |
| GET | /v1/stats/summary | — | Latest height, measured block time, throughput and average fee | no-store |
| GET | /v1/stats/gas | — | Base fee, priority-fee percentiles, and the true cost of a transfer and a swap | no-store |
| GET | /v1/stream/head | — | Server-sent events — one `head` event per committed block, carrying `server_now` | stream |
| GET | /v1/blocks | cursor?, limit? | Paged block summaries, newest first | 1s |
| GET | /v1/blocks/{ref} | ref | Full block detail. `ref` is a height, a 0x-hash or `latest` | immutable |
| GET | /v1/blocks/{ref}/txs | ref, cursor?, limit? | Transactions in one block | immutable |
| GET | /v1/txs | cursor?, limit? | Paged transaction summaries, newest first | 1s |
| GET | /v1/txs/{tx_hash} | tx_hash | Transaction detail with decoded transfers and logs | immutable |
| GET | /v1/txs/{tx_hash}/trace | tx_hash, format?, cursor?, limit? | Call tree. Heavy — runs on a dedicated pool with a wall-clock budget | immutable |
| GET | /v1/txs/{tx_hash}/state | tx_hash, cursor?, limit? | Balance, nonce and storage diff. Needs pre-block state, so bounded by pruning | immutable |
| GET | /v1/txs/{tx_hash}/raw | tx_hash | Verbatim node JSON for the transaction and its receipt | immutable |
| GET | /v1/address/{addr} | addr | Balance at a pinned height, nonce, code, proxy probe and creation record | 5s |
| GET | /v1/address/{addr}/activity | addr, cursor?, limit?, kind?, token? | Value flow reconstructed from logs over an explicitly stated block window | 5s |
| GET | /v1/address/{addr}/logs | addr, cursor?, limit?, topic0? | Logs emitted by or referencing the address | 5s |
| GET | /v1/address/{addr}/tokens | addr, sort? | Token balances observed in the scanned window | 5s |
| GET | /v1/address/{addr}/contract | addr | Bytecode, proxy probe and creation record | 30s |
| GET | /v1/address/{addr}/txs | addr, cursor?, limit? | 501 CAPABILITY_UNAVAILABLE — an address's transaction history is not listable here | — |
| GET | /v1/tokens/{addr} | addr | Token metadata read from the contract, plus supply | 30s |
| GET | /v1/tokens/{addr}/transfers | addr, cursor?, limit? | Transfers over an explicitly stated block window | 5s |
| GET | /v1/tokens/{addr}/holders | addr, cursor?, limit? | 501 CAPABILITY_UNAVAILABLE — a complete holder list is not available here | — |
| GET | /v1/search | q | Exact resolution to a destination, or a disambiguation list | 5s |
| GET | /v1/search/suggest | q?, limit? | Partial and name-prefix matches, for type-ahead | 5s |
| POST | /v1/decode | — | Selector and, where the signature is known, the decoded call | — |
| GET | /v1/export/limits | — | The export row cap, block-span cap and rate limit, plus the indexed range | — |
| GET | /v1/export/resolve | from_date?, to_date?, from_block?, to_block? | A date range mapped onto blocks, with `exact` false where a bound was clamped rather than resolved | — |
| GET | /v1/export/{dataset}/csv | dataset, address, from_block?, to_block?, from_date?, to_date?, order? | Streamed `text/csv` for one address — capped, rate limited separately, and self-describing when a cap bites | no-store |
| GET | /v1/actions/categories | include_signatures? | The category dictionary and the signature table behind it | not stated |
| GET | /v1/address/{addr}/facts | addr | Funded By, first and latest transaction | not stated |
| GET | /v1/ads/click/{creative_id} | creative_id | First-party redirect for a sponsored link | not stated |
| GET | /v1/ads/slots | — | Sponsorship slots and creatives | not stated |
| GET | /v1/agents | cursor?, limit?, sort? | ERC-8004 agents on Arc, with their latest score and who reported it | not stated |
| GET | /v1/agents/{agent_id} | agent_id | One agent: identity, score per subject, and full feedback history | not stated |
| GET | /v1/agents/reporters | cursor?, limit? | Every address that has submitted ERC-8004 feedback, ranked | not stated |
| GET | /v1/approvals/{addr} | addr, cursor?, limit?, live? | Outstanding ERC-20/721/1155 approvals granted by an address | not stated |
| GET | /v1/blocks/{ref}/actions | ref | What the transactions in this block did | not stated |
| GET | /v1/charts | granularity? | Charts index — catalogue and thumbnails | not stated |
| GET | /v1/charts/{metric} | metric, granularity?, days?, from?, to?, limit? | One chart series | not stated |
| GET | /v1/charts/{metric}/csv | metric, granularity?, days?, from?, to?, limit? | One chart series as CSV | not stated |
| GET | /v1/charts/overview | — | Overview stat grid | not stated |
| GET | /v1/charts/top | panel?, cursor?, limit? | Top Statistics — ranked panels | not stated |
| POST | /v1/contracts/{addr}/encode | addr | Encode a state-changing call to calldata for a wallet to sign | not stated |
| POST | /v1/contracts/{addr}/read | addr | Execute one view function through eth_call | not stated |
| GET | /v1/contracts/{addr}/source | addr | Verified source, ABI and compiler settings | not stated |
| GET | /v1/contracts/verified | limit?, cursor? | Recently verified contracts on this chain | not stated |
| GET | /v1/explore/accounts | cursor?, limit? | Top accounts by native USDC balance | not stated |
| GET | /v1/explore/contracts | cursor?, limit?, filter? | Deployed contracts, newest first, with verification state | not stated |
| GET | /v1/explore/directory | q?, kind?, cursor?, limit? | Directory of named on-chain entities | not stated |
| GET | /v1/explore/internal-txs | cursor?, limit?, address?, type?, block? | Contract internal transactions (value-carrying frames) | not stated |
| GET | /v1/explore/labels | — | Label cloud | not stated |
| GET | /v1/explore/labels/{slug} | slug, cursor?, limit? | Addresses carrying one label | not stated |
| GET | /v1/explore/token-transfers | cursor?, limit?, token?, standard?, kind? | Token transfers across the chain, newest first | not stated |
| GET | /v1/explore/tokens | cursor?, limit?, standard? | Token tracker — ERC-20 / 721 / 1155 by transfer activity | not stated |
| GET | /v1/explore/top-stats | window?, size?, panel?, cursor? | Top Statistics — leaderboards over a chosen block window | not stated |
| GET | /v1/export/filter/{dataset}/csv | dataset, address?, role?, counterparty?, token?, method?, min_value_raw?, max_value_raw?, status?, creations_only?, standard?, kind?, from_block?, to_block?, order? | Stream an Advanced Filter result as CSV | not stated |
| GET | /v1/filter/limits | — | Advanced Filter bounds | not stated |
| GET | /v1/filter/token-transfers | address?, role?, counterparty?, token?, method?, min_value?, max_value?, status?, creations_only?, standard?, kind?, from_block?, to_block?, from_date?, to_date?, cursor?, limit? | Token transfers matching a composed query | not stated |
| GET | /v1/filter/transactions | address?, role?, counterparty?, token?, method?, min_value?, max_value?, status?, creations_only?, standard?, kind?, from_block?, to_block?, from_date?, to_date?, cursor?, limit? | Transactions matching a composed query | not stated |
| GET | /v1/network/status | — | What Arcscan is currently serving | not stated |
| GET | /v1/network/validators | — | The Arc proposer set, with the measured rotation schedule | not stated |
| GET | /v1/signatures | keys | Resolve 4-byte selectors and event topic0s | not stated |
| GET | /v1/signatures/resolve | keys, address?, registry? | Resolve selectors and topic0s with provenance and collisions | not stated |
| GET | /v1/stats/tx-history | days? | Transactions per complete UTC day | not stated |
| GET | /v1/tokens/{addr}/concentration | addr | Token Concentration | not stated |
| GET | /v1/tokens/{addr}/info | addr | Curated token information | not stated |
| POST | /v1/tokens/{addr}/info/submit | addr | Propose token information, behind a verified proof of ownership | not stated |
| GET | /v1/tokens/{addr}/logo | addr | The token logo, if one has been published | not stated |
| GET | /v1/tokens/{addr}/ownership | addr | Whether ownership of this contract can be proved, and against what | not stated |
| POST | /v1/tokens/{addr}/ownership/challenge | addr | Issue a one-time message to sign | not stated |
| POST | /v1/tokens/{addr}/ownership/verify | addr | Check a signature against the contract's creator or owner | not stated |
| GET | /v1/txs/{tx_hash}/actions | tx_hash | What this transaction did | not stated |
| POST | /v1/verify/{addr} | addr | Submit source for verification | not stated |
| GET | /v1/verify/compilers | — | Solidity compiler builds, newest first | not stated |
| GET | /v1/verify/jobs/{job_id} | job_id | Poll a verification job | not stated |
| GET | /v1/verify/options | — | What the verification form needs to render | not stated |
The Returns column is published in English only. It is the API's own contract text.
| — |
| Etherscan-compatible REST surface — `?module=…&action=…`, see the table below |
| varies |
| POST | /api | — | The same surface, form-encoded, for clients that POST | varies |
| GET | /mcp | — | MCP endpoint discovery | not stated |
| POST | /mcp | — | Model Context Protocol endpoint (JSON-RPC 2.0) | not stated |
The schema describes one path, because the surface dispatches on module and action in the query string rather than on the route. Those values cannot be enumerated by OpenAPI, so they are listed below.
| module | action | Notes |
|---|---|---|
| account | balance | Native balance, 18-decimal integer string |
| account | balancemulti | Up to 20 addresses per call |
| account | tokenbalance | Genuine ERC-20 query; returns the contract's own decimal scale |
| account | tokentx | Served from the scanned window; requires startblock and endblock |
| account | txlist | Transactions sent or received by an address, read from the index |
| account | txlistinternal | Value-carrying internal frames, by address or by transaction |
| account | addresstokenbalance | Every token balance held by one address |
| block | getblockreward | blockReward is the sum of transaction fees; there is no issuance and no uncle reward |
| block | getblocknobytime | Binary search over heights; immutable, cached permanently |
| block | getblockcountdown | Uses the measured block time, not a constant |
| transaction | getstatus | Execution status |
| transaction | gettxreceiptstatus | Receipt status |
| logs | getLogs | Range-clamped; an over-range request names the maximum span |
| proxy | eth_* passthrough | Block, transaction, call, code, storage, gas and raw-send methods |
| contract | getabi | The ABI of a contract verified on Arcscan |
| contract | getsourcecode | Verified source, compiler settings and ABI |
| contract | getcontractcreation | Up to 5 comma-separated addresses |
| token | tokenholderlist | Holders and balances for one token |
| stats | ethsupply | Native supply, 18-decimal integer string |
| stats | ethprice | The gas token is a dollar by construction, so this reports 1.00 |
| stats | tokensupply | Total supply, read from the contract |
| stats | dailytxnfee | Total transaction fees per complete UTC day |
| stats | dailynewaddress | Addresses seen for the first time, per complete UTC day |