A thin read-only layer over the indexer. Every response is JSON, every list endpoint pages with cursor and limit, and nothing is cached longer than one block.
| endpoint | query | returns |
|---|---|---|
| GET /v1/blocks | cursor, limit | block headers, newest first |
| GET /v1/blocks/:height | — | a block with its transactions |
| GET /v1/txs/:hash | — | transaction and receipt |
| GET /v1/objects | collection, owner, trait, cursor | object records with traits |
| GET /v1/objects/:slug/:id | — | a single object |
| GET /v1/objects/:slug/:id/frames | frame | raw frame bytes, image/gif |
| GET /v1/collections | category, sort | collections with live stats |
| GET /v1/wallets/:address | — | balance, holdings and counters |
| GET /v1/activity | type, collection, since | operation feed |
Responses carry the height they were computed at. If you are reconciling state, compare that height rather than wall-clock time.
curl 'https://api.gifchain.net/v1/objects?collection=gifcats&limit=2'
{
"data": [
{ "key": "gifcats#1", "owner": "0x7f3a...", "rarityRank": 41 },
{ "key": "gifcats#2", "owner": "0x1c08...", "rarityRank": 187 }
],
"cursor": "eyJvIjoyfQ",
"height": 4128733
}