For Agents & LLMs
The schema below can be copied and pasted into the AI assistant of your choice. Feed this to your assistant, then ask your assistant to construct Insight queries on your behalf, asking it for certain onchain information.
# ATTENTION LLMs - API Usage Instructions## API URLhttps://{chain-id}.insight.thirdweb.com## AuthenticationThe API supports three authentication methods:```typescript// 1. Header Authenticationconst headers = {"x-client-id": "YOUR_CLIENT_ID", // thirdweb Client ID};// 2. Query Parameterconst url = "https://1.insight.thirdweb.com/v1/events?clientId=YOUR_CLIENT_ID";// 3. Bearer Tokenconst headers = {Authorization: "Bearer YOUR_JWT_TOKEN",};// Example using fetch with header authasync function getEvents() {const response = await fetch("https://1.insight.thirdweb.com/v1/events", {headers: {"x-client-id": "YOUR_CLIENT_ID",},});return await response.json();}```## Core Concepts### Chain IDsThe API supports the following chain IDs (with 1 as default):```typescripttype ChainId =| "1"| "2039"| "30"| "98865"| "42793"| "1952959480"| "98864"| "466"| "37714555429"| "8008135"| "55244"| "42019"| "8453"| "480"| "84532"| "888888888"| "43113"| "19934"| "7897"| "2040"| "37111"| "33139"| "80002"| "8333"| "660279"| "42161"| "11155111"| "421614"| "994873017"| "42026"| "43114"| "1946"| "31"| "41455"| "1993"| "98985";// Example: Using a specific chainconst chainId = "1"; // Ethereum Mainnetconst baseUrl = `https://${chainId}.insight.thirdweb.com`;```### Base Response Structure```typescriptinterface BaseResponse<T> {data: T[];meta: {chain_id: number; // Requiredpage: number; // Requiredlimit: number; // Requiredtotal_items: number; // Requiredtotal_pages: number; // Requiredaddress?: string; // Optionalsignature?: string; // Optional}}// Example response from getting events{"data": [{"chain_id": 1,"block_number": "17859301","transaction_hash": "0x123...","address": "0x456...","data": "0x789...","topics": ["0xabc..."]}],"meta": {"chain_id": 1,"page": 0,"limit": 20,"total_items": 150,"total_pages": 8}}```## API Examples### Events API```typescript// 1. Get All Eventsasync function getAllEvents() {const response = await fetch("https://1.insight.thirdweb.com/v1/events", {headers: { "x-client-id": "YOUR_CLIENT_ID" },});return await response.json();}// 2. Get Contract Events with Filteringasync function getContractEvents(contractAddress: string) {const params = new URLSearchParams({filter_block_number_gte: "17000000",sort_by: "block_timestamp",sort_order: "desc",limit: "50",});const url = `https://1.insight.thirdweb.com/v1/events/${contractAddress}?${params}`;const response = await fetch(url, {headers: { "x-client-id": "YOUR_CLIENT_ID" },});return await response.json();}```### Token Balance API```typescript// 1. Get ERC20 Balancesasync function getERC20Balances(ownerAddress: string) {const response = await fetch(`https://1.insight.thirdweb.com/v1/tokens/erc20/${ownerAddress}`,{ headers: { "x-client-id": "YOUR_CLIENT_ID" } },);const data = await response.json();// Example response:// {// "data": [// {// "tokenAddress": "0x123...",// "balance": "1000000000000000000"// }// ]// }return data;}// 2. Get NFT Balancesasync function getNFTBalances(ownerAddress: string) {const response = await fetch(`https://1.insight.thirdweb.com/v1/tokens/erc721/${ownerAddress}`,{ headers: { "x-client-id": "YOUR_CLIENT_ID" } },);const data = await response.json();// Example response:// {// "data": [// {// "collectionAddress": "0x456...",// "tokenId": "1",// "balance": "1"// }// ]// }return data;}```### Using Filters```typescript// Example: Get events with complex filteringasync function getFilteredEvents() {const params = new URLSearchParams({// Block filtersfilter_block_number_gte: "17000000",filter_block_number_lte: "17859301",// Time filtersfilter_block_timestamp_gte: "1715222400",// Transaction filtersfilter_from_address: "0x123...",filter_value_gte: "1000000000000000000", // 1 ETH// Paginationpage: "0",limit: "20",// Sortingsort_by: "block_timestamp",sort_order: "desc",});const response = await fetch(`https://1.insight.thirdweb.com/v1/events?${params}`,{ headers: { "x-client-id": "YOUR_CLIENT_ID" } },);return await response.json();}```### Error Handling```typescriptasync function safeApiCall() {try {const response = await fetch("https://1.insight.thirdweb.com/v1/events", {headers: { "x-client-id": "YOUR_CLIENT_ID" },});if (!response.ok) {const errorData = await response.json();// Example error response:// { "error": "Invalid client ID" }throw new Error(errorData.error);}return await response.json();} catch (error) {console.error("API Error:", error.message);throw error;}}```## API Reference### Events API1. **Get All Events**```typescriptGET /v1/events;```2. **Get Contract Events**```typescriptGET /v1/events/:contractAddress```3. **Get Specific Event Type**```typescriptGET /v1/events/:contractAddress/:signature```### Transactions API1. **Get All Transactions**```typescriptGET / v1 / transactions;```2. **Get Contract Transactions**```typescriptGET /v1/transactions/:contractAddress```3. **Get Specific Transaction Type**```typescriptGET /v1/transactions/:contractAddress/:signature```### Token Balance API1. **ERC20 Balances**```typescriptGET /v1/tokens/erc20/:ownerAddressinterface ERC20Response {data: {tokenAddress: string; // Requiredbalance: string; // Required}[];}```2. **ERC721 & ERC1155 Balances**```typescriptGET /v1/tokens/erc721/:ownerAddressGET /v1/tokens/erc1155/:ownerAddressinterface TokenBalance {data: {collectionAddress: string; // RequiredtokenId: string; // Requiredbalance: string; // Required}[];}```## Query Parameters### Common Parameters```typescriptinterface CommonQueryParams {page?: number; // Default: 0limit?: number; // Default: 20, must be > 0sort_by?: "block_number" | "block_timestamp" | "transaction_index";sort_order?: "asc" | "desc";group_by?: string;aggregate?: string[];}```### Filter Types1. **Block Filters**```typescriptinterface BlockFilters {filter_block_number?: number; // Example: 1000000filter_block_number_gte?: number; // Example: 1000000filter_block_number_gt?: number; // Example: 1000000filter_block_number_lte?: number; // Example: 1000000filter_block_number_lt?: number; // Example: 1000000filter_block_hash?: string; // Example: "0x3a1fba5..."}```2. **Time Filters**```typescriptinterface TimeFilters {filter_block_timestamp?: number; // Example: 1715222400filter_block_timestamp_gte?: number; // Example: 1715222400filter_block_timestamp_gt?: number; // Example: 1715222400filter_block_timestamp_lte?: number; // Example: 1715222400filter_block_timestamp_lt?: number; // Example: 1715222400}```3. **Transaction Filters**```typescriptinterface TransactionFilters {filter_transaction_index?: number;filter_transaction_hash?: string;filter_from_address?: string;filter_value?: number;filter_gas_price?: number;filter_gas?: number;// Additional gte, gt, lte, lt variants for numeric fields}```## Error HandlingAll endpoints return standard error responses for 400 and 500 status codes:```typescript// 400 Bad Request// 500 Internal Server Errorinterface ErrorResponse {error: string; // Required}```