canonical: https://jentic.com/apis/bitquery.io/bitquery

# Bitquery GraphQL API

Jentic publishes the only available OpenAPI specification for Bitquery GraphQL API, keeping it validated and agent-ready. Bitquery exposes blockchain data through a unified GraphQL endpoint covering 40+ networks including Bitcoin, Ethereum, BSC, Solana, Tron, and Polygon. A single POST against the root path accepts any GraphQL query in the body, so DEX trades, token transfers, smart contract events, and address balances all sit behind one operation. The newer streaming surface at streaming.bitquery.io serves the same query language for real-time data.

## For AI agents

Query 40+ blockchains for trades, transfers, balances, and contract events through a single GraphQL POST endpoint. Two auth schemes: X-API-KEY header or OAuth Bearer token.

## Scope

Does not broadcast transactions, sign messages, or run a node - use for querying indexed blockchain data via GraphQL only.

## Capabilities

- Submit any GraphQL query against the root endpoint to read DEX trades, token transfers, balances, or contract events
- Cover 40+ blockchains including Bitcoin, Ethereum, BSC, Solana, Tron, and Polygon from one schema
- Authenticate either with an X-API-KEY header or an OAuth Bearer token issued by Bitquery
- Use the V1 endpoint at graphql.bitquery.io for batch queries and the V2 streaming endpoint for real-time data
- Compose multi-chain queries that join data across networks in a single round trip
- Pull historical on-chain analytics without running a node

## Use cases

### Cross-chain analytics for trading research

Trading research teams query Bitquery's GraphQL endpoint to pull DEX trade flows across Ethereum, BSC, Solana, and Polygon in one request. Because the entire schema sits behind a single POST, the same client library can handle every network without per-chain indexers. Queries are rate-limited by points per request rather than per-call quotas, so a research workload can pull months of trades with predictable cost.

Example prompt: POST a GraphQL query for the last 1000 DEX trades on Uniswap v3 with token, amount, and price fields, and write the result to the research warehouse

### Wallet history for risk and compliance

Risk and compliance teams enrich an investigated wallet with its full transfer history across multiple chains. The Bitquery schema exposes ethereum, bitcoin, bsc, solana, and polygon as siblings in a single query, so an analyst can pull a wallet's activity on every chain in one request. Streaming responses through streaming.bitquery.io let an alert pipeline catch new transfers within seconds.

Example prompt: POST a GraphQL query for transfers involving address 0xabc on Ethereum and BSC over the last 30 days and surface unique counterparties

### Smart contract event monitoring

Protocol teams watch their own deployed contracts for events such as Mint, Burn, or Transfer to drive user-facing dashboards. Bitquery's events schema exposes decoded contract logs, so a single GraphQL query returns structured event records without the team running its own indexer. Streaming endpoints let the dashboard update in near real-time.

Example prompt: POST a GraphQL query for the last 500 Transfer events on contract 0xdef and update the protocol dashboard

### Agent integration via Jentic for blockchain queries

An AI agent that needs on-chain data calls Jentic with the intent 'query blockchain data with graphql'. Jentic returns the Bitquery POST operation along with the GraphQL schema, so the agent can compose a typed query before sending. The X-API-KEY or Bearer token stays in your Jentic One instance, so the agent can answer 'what trades happened on Uniswap today' without ever holding the credential.

Example prompt: Search Jentic for 'query blockchain data with graphql', load the Bitquery POST schema, and execute a query for the latest Ethereum DEX trades

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/` | Submit a GraphQL query against the unified Bitquery schema |

## Key resources

- **GraphQL** — Single POST endpoint at the root path that accepts any Bitquery GraphQL query covering 40+ blockchains

## Why Jentic

- **Setup:** Wiring the Bitquery GraphQL API by hand means choosing between its X-API-KEY and bearer schemes, targeting the graphql.bitquery.io host, and framing GraphQL queries against a single POST endpoint yourself. Through Jentic you install once, import Bitquery from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Bitquery exposes one POST GraphQL endpoint, with the query carried in the request body, so limit the agent to the operations it needs, such as querying indexed blockchain data. You choose the operations it may call, so nothing beyond that read query runs unless you add it.
- **Credential handling:** Your Bitquery API key or bearer token is stored once, encrypted, by your own Jentic One instance and injected in the chosen scheme at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'query blockchain data with GraphQL' or 'get token transfers for an address', and Jentic returns the Bitquery POST operation with its GraphQL schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Alchemy** — Multi-chain RPC and indexer with hosted node access and enhanced APIs.
- **Covalent (GoldRush)** — Unified blockchain data REST API across many networks.
- **The Graph** — Decentralised GraphQL indexing protocol for on-chain data.
- **Blockchain.com API** — Public Bitcoin chain data alongside Bitquery's multi-chain coverage.

## FAQ

### Why is there no official OpenAPI spec for Bitquery GraphQL API?

Bitquery does not publish an OpenAPI specification (the API is GraphQL, not REST). Jentic generates and maintains this spec so that AI agents and developers can call Bitquery GraphQL API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Bitquery GraphQL API use?

Bitquery supports two schemes. The simpler is an apiKey passed in the X-API-KEY header. The newer scheme is an OAuth Bearer token issued via Bitquery's IDE. Through Jentic either credential is held encrypted in the vault and injected at call time.

### Can I query multiple blockchains in one Bitquery request?

Yes. The unified schema exposes every supported chain (ethereum, bitcoin, bsc, solana, tron, polygon, and more) as siblings inside a single GraphQL document, so one POST against the root endpoint can return data from several networks together.

### What are the rate limits for the Bitquery GraphQL API?

Bitquery uses a points-based quota rather than fixed per-second limits. Each query costs points based on the data it returns, and plans publish a monthly point allowance. Heavy historical pulls consume more points than narrow recent queries.

### How do I run a Bitquery query through Jentic?

Run pip install jentic, search Jentic for 'query blockchain data with graphql', load the POST / operation schema, and execute with a GraphQL query string in the body. Jentic injects the X-API-KEY or Bearer token automatically.

### What is the difference between the V1 and V2 servers?

graphql.bitquery.io is the V1 endpoint, intended for batch and historical queries. streaming.bitquery.io is the V2 endpoint, intended for real-time streaming queries. Both accept the same GraphQL schema, so a query that runs on V1 will run on V2 with the same shape.

### Can I limit what my agent is allowed to do with the Bitquery GraphQL API?

Yes. Bitquery exposes a single POST GraphQL endpoint with the query carried in the request body, and because Jentic One is self-hosted by you, your own rules decide which operations and credentials the agent may use. You scope the agent to just the read query it needs, such as fetching indexed blockchain data like DEX trades, token transfers, or contract events, and nothing beyond that runs unless you add it. Your X-API-KEY or Bearer token stays inside your own Jentic One instance and is injected only at call time, never entering the agent's prompt or context.
