Developer resources
REST API
Read Robinhood Chain network and indexed data through the documented Blockscout-compatible v2 routes served by this explorer.
Quick start
/api/v2/health
The API base is the configured public endpoint: https://api.poa.net.
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
/api/v2/token-transfers
Use the comma-separated type filter for NFT events. The explorer requests type=ERC-721,ERC-1155.
curl --fail --silent --show-error 'https://api.poa.net/api/v2/token-transfers?type=ERC-721%2CERC-1155'
Token transfers by contract
/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 --fail --silent --show-error 'https://api.poa.net/api/v2/tokens/{address}/transfers'
Transfer parameters
| Route | Parameter group | Rules |
|---|---|---|
| Global | type | Required NFT selection. Use ERC-721, ERC-1155, or both as a comma-separated value. |
| Both | limit / items_count | Optional page size from 1 through 50; default 50. If both names are sent, their values must be equal. |
| Both | block_number + index | Standard cursor. Send both fields or neither. |
| Both | batch quartet | Send 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
| Field | Type | Meaning |
|---|---|---|
| total.token_id | decimal string | The actual ERC-721 or ERC-1155 token ID. |
| total.value | decimal string | The quantity moved for this item. |
| item_ordinal | unsigned integer | Additive zero-based item position within the log. Single-item events use 0. |
| token_type | string | ERC-20, ERC-721, or ERC-1155. |
| log_index | unsigned integer | The 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.
{
"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, andindex_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.