Was this helpful?
tidx)For developers building on Tempo, Tempo Labs provides a free indexing service built on tidx. It exposes structured Tempo chain data over SQL, with PostgreSQL for point lookups and ClickHouse for analytics queries.
Use it when you need block, transaction, log, token, holder, or decoded event data without running your own indexing pipeline.
tidx endpointsThe public hosted endpoints are unauthenticated, read-only, and CORS-enabled.
| Network | URL | Chain ID |
|---|---|---|
| Mainnet | https://indexer.tempo.xyz | 4217 |
| Testnet | https://indexer.testnet.tempo.xyz | 42431 |
The public hosted endpoints are rate-limited. Responses include X-Ratelimit-Limit, X-Ratelimit-Remaining, and X-Ratelimit-Reset headers.
Clients should keep queries bounded, include explicit LIMIT clauses, avoid polling expensive aggregates, and back off when remaining quota is low.
Requests within the public rate limit are free. When a client exceeds the free quota, the hosted indexer returns an MPP challenge for paid overflow access at $0.001 per request.
Use an MPP-capable client, such as tempo request, for paid overflow traffic. Plain curl and browser requests can use the free quota, but they will not automatically pay a 402 Payment Required challenge.
curl -G "https://indexer.tempo.xyz/query" \
--data-urlencode "chainId=4217" \
--data-urlencode "engine=clickhouse" \
--data-urlencode "sql=SELECT num, hash, timestamp FROM blocks ORDER BY num DESC LIMIT 5"curl -G "https://indexer.tempo.xyz/query" \
--data-urlencode "chainId=4217" \
--data-urlencode "engine=clickhouse" \
--data-urlencode "signature=Transfer(address,address,uint256)" \
--data-urlencode 'sql=SELECT arg0 AS from_address, arg1 AS to_address, arg2 AS value, block_num, tx_hash FROM Transfer ORDER BY block_num DESC LIMIT 5'curl "https://indexer.tempo.xyz/health"Run live SQL against the hosted indexer.
| Endpoint | Description |
|---|---|
GET /health | Health check |
GET /query | Execute a read-only SQL query |
GET /views?chainId= | List ClickHouse materialized views |
GET /views/{name}?chainId= | Get materialized view details |
/query accepts these parameters:
| Parameter | Required | Description |
|---|---|---|
chainId | yes | 4217 for mainnet or 42431 for testnet |
sql | yes | Read-only SQL query |
engine | no | postgres or clickhouse |
signature | no | Event signature for decoded event tables |
live | no | Enables SSE streaming for PostgreSQL queries |
The tidx repository includes Docker, source build, configuration, CLI, schema, and materialized view docs.
git clone https://github.com/tempoxyz/tidx
cd tidx
docker run -v $(pwd)/config.toml:/config.toml ghcr.io/tempoxyz/tidx uptidx QueryRead the most recent blocks from mainnet.
See the tidx README for the full setup guide and CLI reference.
tidx writes chain data into two stores:
The /query endpoint accepts SQL and can expose decoded events on demand through the signature query parameter. For example, passing Transfer(address,address,uint256) creates a virtual Transfer table with decoded arguments such as arg0, arg1, and arg2 for that query.
tidx also maintains ClickHouse materialized tables for expensive common reads, such as token balances, token holders, supply, approvals, and address activity.