Introduction

The DC Explorer API is a public REST surface over Datachain Rope (chainId 271828). All endpoints return JSON and are CORS-enabled. Responses use the Quipu Primitive Canon vocabulary: cord anchors (block-equivalents), strings (per-entity ledgers), and knots (individually addressable events).

Base URL: https://dcscan.io/api/v1 # Anyone can call the API. Identified traffic (X-API-Key) gets an auditable # usage trail and priority when rate-limit tiers activate. curl -s https://dcscan.io/api/v1/stats

API Keys

API keys are minted by authenticated users through Datachain ID - sign in with your Datawallet+ credentials or prove ownership of your wallet key (EIP-191 signature). Keys are shown once at creation; only a hash is stored server-side. Up to 5 active keys per identity.

Using your key

Send the key as an X-API-Key header on any endpoint. Verify it (and read your usage counters) at any time:

# attach the key to any API call curl -s -H "X-API-Key: dcsk_…" https://dcscan.io/api/v1/stats # check validity + usage counters curl -s -H "X-API-Key: dcsk_…" https://dcscan.io/api/v1/keys/verify
POST/keysMint a key (Bearer Datachain ID token)
GET/keysList your keys, masked
DELETE/keys/{id}Revoke a key
GET/keys/verifyValidate an X-API-Key

Stats & Network

GET/statsCord anchors, transactions, events, entity knots, FAT price
GET/stats/charts/{chart_type}Time-series chart data
GET/statusService + RPC health
GET/dcfat/priceCanonical DC FAT price (DCSwap VWAP)
GET/marketsCEX + DEX FAT venues (Tokpie book + DCSwap)
GET/gas/oracleGas price oracle
GET/validatorsActive validator set
GET/ai-agentsCanonical AI testimony agents
GET/testimoniesAI agent testimonies
GET/ecosystem/directoryEcosystem Deployment Console public directory

Strings & Knots

Cord anchor knots (block-equivalents) and their contents.

GET/stringsList cord anchors (paginated)
GET/strings/latestMost recent anchors
GET/strings/{id}One anchor by index or hash
GET/search?q=…Address / tx / anchor / token search

Transactions

GET/transactionsList transactions (paginated)
GET/transactions/latestMost recent transactions
GET/transactions/{hash}Transaction by hash
GET/tokentxnsDCR-20 transfer events

Etherscan-compatible API

Blockscout / Etherscan-style query parameters on /api (no API key required). Same data as the REST endpoints below; preferred for exchange deposit monitors.

GET/api?module=account&action=txlist&address=…Normal tx list (Etherscan txlist)
GET/api?module=account&action=balance&address=…Native FAT balance (wei string)
curl -sS 'https://dcscan.io/api?module=account&action=txlist&address=0x029d65c2759099c6237ed3233736b5c25be31ed0&page=1&offset=100&sort=desc' curl -sS 'https://dcscan.io/api?module=account&action=balance&address=0x029d65c2759099c6237ed3233736b5c25be31ed0'

Accounts

Address lookup is type-aware. Externally owned wallets return native sends and receipts; smart contracts also include transactions discovered through indexed event logs; synthetic 32-byte entity ids resolve through /registry/entity/{id}. Use from, to, and limit for bounded exports. The response role identifies how the address participated (from, to, or log). coverage.complete is true only when historical backfill is complete and the index is within freshness_tolerance_blocks of the requested head. A proven empty history returns source: "addr-index-empty", never a fabricated row.

GET/accounts/{address}Balance, nonce, code, labels
GET/accounts/{address}/transactions?from=&to=&limit=&cursor=Wallet or contract history, newest first
GET/accounts/{address}/tokensDCR-20 balances
GET/accounts/{address}/nftsERC-721 (DCNFT) holdings
GET/accounts/topTop accounts by balance

Tokens & NFTs

GET/tokensDCR-20 token list
GET/tokens/{address}Token details
GET/tokens/{address}/holdersHolder list (full-history index)
GET/tokens/{address}/transfersTransfer history
GET/nfts/{address}/tokensERC-721 tokenId inventory
GET/tanastok/assetsTanastok tokenized-asset registry

FAT Markets

Aggregated CEX and DEX feeds for native DC FAT on Datachain Rope (chain 271828, no token contract). Tokpie FAT/USDT is that native asset. BSC FATCAT is a different token and is rejected. Operator-added HTTPS feeds are allowlisted (tokpie.com, tokpie.io, dcswap.net) and probed before persist. Order-book mid is not 24h volume and does not replace /dcfat/price (WFAT = FAT).

GET/marketsAll venues + CEX aggregate + DCSwap canonical
GET/markets/{id}One venue and capped order book
POST/marketsAdd venue (X-Admin-Token; probe-then-save)
DELETE/markets/{id}Remove or disable venue
# live Tokpie FAT/USDT book via dcscan curl -sS https://dcscan.io/api/v1/markets/tokpie-fat-usdt # add another allowlisted feed (admin) curl -sS -X POST https://dcscan.io/api/v1/markets \ -H 'content-type: application/json' \ -H 'X-Admin-Token: $PROJECTS_ADMIN_TOKEN' \ -d '{"venue":"Tokpie","pair":"FAT/USDT","feedUrl":"https://tokpie.com/api_order_book_v2/?market=FAT@USDT&depth=0","venueKind":"cex"}'

Registry (Quipu Canon v1.2)

Per-entity strings across all kinds: wallet, contract, asset, did, organization, application, ecosystem, partner, cord.

GET/registry/statsPer-kind counts + invariant
GET/registry/strings?kind=…Paginated, kind-filtered strings
GET/registry/labels?kind=…Entity label map (1,626+ entities)
GET/registry/manifestFull entity manifest mirror

JSON-RPC Proxy

Same-origin proxy to the rope-node RPC - accepts every rope_* and eth_* method, so browser apps avoid a CORS preflight to erpc.datachain.network.

POST/api/rpcJSON-RPC body forwarded verbatim
curl -s -X POST https://dcscan.io/api/rpc \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"rope_globalStats","params":[]}'