Indexer progress
See how far the transfer indexer has caught up
GET /api/indexer/progress/ tells you per-chunk how caught up the transfer indexer is. Use it for a "data freshness" badge in your UI, or as a heartbeat in your monitoring stack.
Endpoint
No required parameters.
bash
1curl 'https://api.tokenkithq.io/api/indexer/progress/' \2 -H 'api-key: YOUR_API_KEY'Response
json
1{2 "network": "mainnet",3 "chunks": [4 {5 "name": "0_1m",6 "range": [0, 1000000],7 "latest_block": 985432,8 "transfers": 4823015,9 "percent": 0.985410 },11 {12 "name": "1m_2m",13 "range": [1000000, 2000000],14 "latest_block": 1450000,15 "transfers": 2104110,16 "percent": 0.4517 },18 {19 "name": "live",20 "range": [6000000, null],21 "latest_block": 6027419,22 "transfers": 0,23 "percent": null24 }25 ],26 "totals": {27 "transfers": 12500000,28 "latest_block_overall": 602741929 }30}Field reference
| Field | What it means |
|---|---|
chunks[].name | Chunk identifier (0_1m, 1m_2m, ..., live) |
chunks[].range | [start, end]. end is null for the live chunk (it tracks the chain head) |
chunks[].latest_block | Highest block number where this chunk has indexed at least one transfer |
chunks[].transfers | Total transfers indexed in this chunk's range |
chunks[].percent | Range completion (latest_block - start) / (end - start). null for the live chunk. |
totals.transfers | Sum across all chunks |
totals.latest_block_overall | Max latest_block across all chunks. Your "tip of indexed data". |
Tip
Render the live chunk specially. Its range = [N, null], so percent doesn't mean anything. Show latest_block_overall and compare it against the chain head (e.g. via Starknet RPC starknet_blockNumber). Within ~10 blocks of the head is "current".
Drop into your UI
Note
A chunk processing through a stretch of zero-transfer blocks looks paused (because `latest_block` only moves when a transfer shows up). That's expected. For "is the indexer alive?", check that `totals.latest_block_overall` keeps moving, not that every chunk's percent ticks up.