Query events on any indexed rollup
Conduit Indexing simplifies the experience querying smart contract data onchain. This guide will walk you through getting an API key and sending your first query.
Sign in
Log into the Conduit app and head to the Indexing tab. There you will find all the chains that are currently available to be queried on Conduit Indexing.
Get an API key
To start querying without limits, click on the API keys tab and click Get started. Enter your billing details and subscribe to the Indexing Pro plan. For pricing details, check out Pricing & Costs.
How To Query Events
Once you’ve finished setting up billing you can begin querying events with your newly created API key.
There are two ways to query; with the Query builder on the Query tab, or directly via the API.

Using the Indexing API directly
The base API url to use is https://indexing.conduit.xyz/v2/query.
To use your API key you can either;
- Append the API key directly in a query parameter
?api-key=KEY - Add a field to the request body
{ "api-key": "KEY", ... }using aPOSTrequest - Submit an
api-keyinput value as part of a multipart form request to the above base url.
You can copy the API url with your key appended in the API keys section at the bottom of the Indexing page in the Conduit app.
An example query is:
curl 'https://indexing.conduit.xyz/v2/query?api-key=SECRET_KEY' \
-G \
--data-urlencode 'query=select "from", "to", tokens from transfer where chain = 8453 limit 1' \
--data-urlencode 'signatures=Transfer(address indexed from, address indexed to, uint tokens)' | jq .The response would look like:
[
{
"cursor": "8453-30138481",
"columns": [
{
"name": "from",
"pgtype": "bytea"
},
{
"name": "to",
"pgtype": "bytea"
},
{
"name": "tokens",
"pgtype": "numeric"
}
],
"rows": [
[
"0x0000000000000000000000000000000000000000",
"0x0cf966857325db9a9b4dada66e80ce581c18aca1",
"0"
]
]
}
]There is also an official Typescript SDK for Index Supply, which you can find here .
EVM Tables and Columns
When requests include a signature and a query, it is assumed that the query is operating on a virtual table of event logs or transaction inputs (depending on the event or function prefix). However, it is also possible to query the base tables directly.
EVM Tables
| Table |
|---|
| blocks |
| txs |
| logs |
Blocks
Table name: blocks
| Column | Type |
|---|---|
| chain | int8 |
| num | int8 |
| timestamp | timestamptz |
| gas_limit | numeric |
| gas_used | numeric |
| nonce | bytea |
| hash | bytea |
| receipts_root | bytea |
| state_root | bytea |
| extra_data | bytea |
| miner | bytea |
Transactions
Table name: txs
| Column | Type |
|---|---|
| chain | int8 |
| block_num | int8 |
| block_timestamp | timestamptz |
| idx | int4 |
| type | int2 |
| gas | numeric |
| gas_price | numeric |
| nonce | bytea |
| hash | bytea |
| from | bytea |
| to | bytea |
| input | bytea |
| value | numeric |
Logs
Table name: logs
| Column | Type |
|---|---|
| chain | int8 |
| block_num | int8 |
| block_timestamp | timestamptz |
| log_idx | int4 |
| tx_hash | bytea |
| address | bytea |
| topics | bytea[] |
| data | bytea |