Developer resources

REST API

Read Robinhood Chain network and indexed data through the documented Blockscout-compatible v2 routes served by this explorer.

Local REST v2
Direct REST. The endpoints below are the stable public routes documented by this explorer. They require no API key. Always follow the server-provided next_page_params instead of constructing page numbers.

Quick start

GET /api/v2/health
Open JSON

The API base is the configured public endpoint: https://api.poa.net.

cURL
curl --fail --silent --show-error 'https://api.poa.net/api/v2/health'

Stable endpoints

GET /api/v2/health
API health, release version, and commit.
GET /api/v2/stats
Indexed chain and transaction totals.
GET /api/v2/blocks?type=block
Recent canonical blocks.
GET /api/v2/blocks/:id
A block by height or hash.
GET /api/v2/transactions
Recent canonical transactions.
GET /api/v2/transactions/:hash
A transaction by hash.
GET /api/v2/addresses/:address
Indexed address summary.
GET /api/v2/token-transfers
Global token transfers with type filters and keyset cursors.
GET /api/v2/tokens/:address/transfers
Transfers for one token contract.

Global token transfers

GET /api/v2/token-transfers
Open NFT JSON

Use the comma-separated type filter for NFT events. The explorer requests type=ERC-721,ERC-1155.

cURL
curl --fail --silent --show-error 'https://api.poa.net/api/v2/token-transfers?type=ERC-721%2CERC-1155'

Token transfers by contract

GET /api/v2/tokens/:address/transfers

Replace :address with the 20-byte token contract address. This route returns ERC-20, ERC-721, or ERC-1155 items for that contract.

cURL template
curl --fail --silent --show-error 'https://api.poa.net/api/v2/tokens/{address}/transfers'

Transfer parameters

Strict query rules for the two documented transfer routes
RouteParameter groupRules
GlobaltypeRequired NFT selection. Use ERC-721, ERC-1155, or both as a comma-separated value.
Bothlimit / items_countOptional page size from 1 through 50; default 50. If both names are sent, their values must be equal.
Bothblock_number + indexStandard cursor. Send both fields or neither.
Bothbatch quartetSend all of batch_log_index, batch_block_hash, batch_transaction_hash, and index_in_batch.

Cursor groups are atomic. Partial groups, mismatched page-size aliases, unknown query fields, malformed hashes, or unsupported types return 422 Unprocessable Entity instead of silently changing the page.

Transfer item schema

ERC-1155 identity and value fields
FieldTypeMeaning
total.token_iddecimal stringThe actual ERC-721 or ERC-1155 token ID.
total.valuedecimal stringThe quantity moved for this item.
item_ordinalunsigned integerAdditive zero-based item position within the log. Single-item events use 0.
token_typestringERC-20, ERC-721, or ERC-1155.
log_indexunsigned integerThe transaction receipt log index.

This flattened item contract applies to GET /api/v2/token-transfers and GET /api/v2/tokens/:address/transfers. Other token-transfer routes retain their existing response shapes and are not covered here.

An ERC-1155 TransferBatch expands to one response item per (token_id, value) pair. Equal pairs remain distinct and are identified by different item_ordinal values.

Response excerpt
{
  "items": [
    {
      "transaction_hash": "0x…",
      "block_number": 12739770,
      "log_index": 15,
      "item_ordinal": 0,
      "token_type": "ERC-1155",
      "from": { "hash": "0x…" },
      "to": { "hash": "0x…" },
      "token": { "address_hash": "0x…" },
      "total": { "token_id": "7", "value": "11" }
    }
  ],
  "next_page_params": null
}

Cursor pagination

Send every field from next_page_params back unchanged on the next request. next_page_params: null means there is no older page.

  • Global transfers use the complete standard pair block_number + index, the complete ERC-1155 batch quartet, or both groups together.
  • The batch quartet is batch_log_index, batch_block_hash, batch_transaction_hash, and index_in_batch.
  • Token-contract transfers use the complete standard pair at log boundaries and the complete batch quartet when a page continues inside one flattened batch.
  • Cursor groups are atomic: do not omit fields or mix values from different responses.