openapi: 3.2.0 info: description: Cached proxy layer for multiple blockchain APIs with 24-hour caching and automatic fallback across chains. Supports both Blockscout and ThirdWeb Insights APIs. Add ?mintlify parameter for Mintlify-compatible version. version: 1.0.0 title: B3 Data API - Multi-Chain Data Insights/nfts API contact: name: B3 Team url: https://b3.fun license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://data-api.b3.fun/ description: B3 Data API - Multi-Chain Proxy tags: - name: insights/nfts description: ThirdWeb Insights NFT analytics paths: /insights/v1/nfts/balance/{ownerAddress}: get: summary: Get NFT balances by address description: Get NFT balances for a given address tags: - insights/nfts parameters: - $ref: '#/components/parameters/ownerAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include metadata for the tokens example: 'false' required: false name: metadata in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query - schema: type: array description: The types of NFTs to include in the response items: type: string enum: - erc1155 - erc721 uniqueItems: true default: - erc1155 - erc721 required: false name: token_types in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string balance: type: string name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string owner_addresses: type: array items: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address required: - chain_id - token_address - token_id - balance required: - data '400': description: Bad request '500': description: Internal server error /insights/v1/nfts/collections/{contract_address}: get: summary: Get collection description: Retrieve metadata about a collection tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include stats for the collection example: 'false' required: false name: include_stats in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string stats: type: object properties: owner_count: type: number token_count: type: number mint_count: type: number total_quantity: type: number required: - owner_count - token_count - mint_count - total_quantity required: - data '400': description: Bad request content: application/json: schema: type: object properties: error: type: string required: - error '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts: get: description: Get NFTs summary: Get NFTs tags: - insights/nfts parameters: - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query - schema: type: array description: Address(es) to filter by. You can specify multiple addresses using repeated query parameters, e.g., ?address=0x123&address=0x456 example: - '0x1234567890123456789012345678901234567890' - vitalik.eth items: type: string required: true name: owner_address in: query - schema: type: array description: Address(es) to filter by. You can specify multiple addresses using repeated query parameters, e.g., ?address=0x123&address=0x456 example: - '0x1234567890123456789012345678901234567890' - vitalik.eth items: type: string required: false name: contract_address in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: chain_id: type: number contract_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string token_type: type: string balance: type: string owner_addresses: type: array items: type: string name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address required: - chain_id - contract_address - token_id - token_type - balance required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/owners/{contract_address}: get: description: Get NFT owners by contract summary: Get NFT owners by contract tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Control if the result is an array of addresses only or an array of objects containing the address and balance example: 'true' required: false name: include_balances in: query responses: '200': description: Success content: application/json: schema: type: array items: anyOf: - type: object properties: chain_id: type: string token_address: type: string owner_address: type: string token_id: type: string balance: type: string required: - chain_id - token_address - owner_address - token_id - balance - type: object properties: chain_id: type: string owner_addresses: type: array items: type: string required: - chain_id - owner_addresses '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/owners/{contract_address}/{token_id}: get: description: Get NFT owners by token summary: Get NFT owners by token tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - $ref: '#/components/parameters/tokenId' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Control if the result is an array of addresses only or an array of objects containing the address and balance example: 'true' required: false name: include_balances in: query responses: '200': description: Success content: application/json: schema: type: array items: anyOf: - type: object properties: chain_id: type: string token_address: type: string owner_address: type: string token_id: type: string balance: type: string required: - chain_id - token_address - owner_address - token_id - balance - type: object properties: chain_id: type: string owner_addresses: type: array items: type: string required: - chain_id - owner_addresses '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/transfers: get: description: Get NFT transfers summary: Get NFT transfers tags: - insights/nfts parameters: - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include metadata for the tokens example: 'false' required: false name: metadata in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query - $ref: '#/components/parameters/blockNumberFrom' - $ref: '#/components/parameters/blockTimestampFrom' - $ref: '#/components/parameters/blockTimestampTo' - $ref: '#/components/parameters/ownerAddress' - $ref: '#/components/parameters/contractAddress' - schema: type: string enum: - asc - desc default: desc description: Sort order (asc or desc) example: desc required: false name: sort_order in: query - schema: type: string enum: - mint - transfer - burn - sale description: Only include transfers of a certain type example: mint required: false name: transfer_type in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include sale details for NFT transfers example: 'false' required: false name: sales in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: token_id: type: string chain_id: type: number block_number: type: string block_hash: type: string block_timestamp: type: string transaction_hash: type: string from_address: type: string to_address: type: string log_index: type: number contract_address: type: string transfer_type: type: string enum: - mint - sale - transfer token_type: type: string enum: - erc721 - erc1155 amount: type: string nft_metadata: type: object properties: name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string owner_addresses: type: array items: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address nft_sale: type: object properties: transaction_hash: type: string items_sold: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type payment: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type marketplace_address: type: string marketplace_name: type: string required: - transaction_hash - items_sold - payment - marketplace_address - marketplace_name required: - token_id - chain_id - block_number - block_timestamp - transaction_hash - from_address - to_address - log_index - contract_address - transfer_type - token_type - amount required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/transfers/transaction/{transaction_hash}: get: description: Get NFT transfers by transaction summary: Get NFT transfers by transaction tags: - insights/nfts parameters: - $ref: '#/components/parameters/transactionHash' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include metadata for the tokens example: 'false' required: false name: metadata in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query - schema: type: array description: The types of tokens to include in the response. Can be an empty array to include all types items: type: string enum: - erc1155 - erc721 - erc20 uniqueItems: true required: false name: token_types in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: token_id: type: string chain_id: type: number block_number: type: string block_hash: type: string block_timestamp: type: string transaction_hash: type: string from_address: type: string to_address: type: string log_index: type: number contract_address: type: string transfer_type: type: string enum: - mint - sale - transfer token_type: type: string enum: - erc721 - erc1155 amount: type: string nft_metadata: type: object properties: name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string owner_addresses: type: array items: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address nft_sale: type: object properties: transaction_hash: type: string items_sold: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type payment: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type marketplace_address: type: string marketplace_name: type: string required: - transaction_hash - items_sold - payment - marketplace_address - marketplace_name required: - token_id - chain_id - block_number - block_timestamp - transaction_hash - from_address - to_address - log_index - contract_address - transfer_type - token_type - amount required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/transfers/{contract_address}: get: description: Get NFT transfers by contract summary: Get NFT transfers by contract tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include metadata for the tokens example: 'false' required: false name: metadata in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: token_id: type: string chain_id: type: number block_number: type: string block_hash: type: string block_timestamp: type: string transaction_hash: type: string from_address: type: string to_address: type: string log_index: type: number contract_address: type: string transfer_type: type: string enum: - mint - sale - transfer token_type: type: string enum: - erc721 - erc1155 amount: type: string nft_metadata: type: object properties: name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string owner_addresses: type: array items: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address nft_sale: type: object properties: transaction_hash: type: string items_sold: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type payment: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type marketplace_address: type: string marketplace_name: type: string required: - transaction_hash - items_sold - payment - marketplace_address - marketplace_name required: - token_id - chain_id - block_number - block_timestamp - transaction_hash - from_address - to_address - log_index - contract_address - transfer_type - token_type - amount required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/{contract_address}: get: description: Get NFTs by contract summary: Get NFTs by contract tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: chain_id: type: number contract_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string token_type: type: string balance: type: string owner_addresses: type: array items: type: string name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address required: - chain_id - contract_address - token_id - token_type - balance required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/transfers/{contract_address}/{token_id}: get: description: Get NFT transfers by token summary: Get NFT transfers by token tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - $ref: '#/components/parameters/tokenId' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include metadata for the tokens example: 'false' required: false name: metadata in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include sale details for NFT transfers example: 'false' required: false name: sales in: query - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: token_id: type: string chain_id: type: number block_number: type: string block_hash: type: string block_timestamp: type: string transaction_hash: type: string from_address: type: string to_address: type: string log_index: type: number contract_address: type: string transfer_type: type: string enum: - mint - sale - transfer token_type: type: string enum: - erc721 - erc1155 amount: type: string nft_metadata: type: object properties: name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string owner_addresses: type: array items: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address nft_sale: type: object properties: transaction_hash: type: string items_sold: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type payment: type: array items: type: object properties: token_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string amount: type: string token_type: type: string from_address: type: string title: address (hex or ENS) example: vitalik.eth to_address: type: string title: address (hex or ENS) example: vitalik.eth required: - token_address - token_id - amount - token_type marketplace_address: type: string marketplace_name: type: string required: - transaction_hash - items_sold - payment - marketplace_address - marketplace_name required: - token_id - chain_id - block_number - block_timestamp - transaction_hash - from_address - to_address - log_index - contract_address - transfer_type - token_type - amount required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/{contract_address}/{token_id}: get: description: Get NFT by token ID summary: Get NFT by token ID tags: - insights/nfts parameters: - $ref: '#/components/parameters/contractAddress' - $ref: '#/components/parameters/tokenId' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number - schema: type: string enum: - 'true' - 'false' default: 'false' description: Whether to include owner addresses in the NFT metadata (only if metadata is requested) example: 'false' required: false name: include_owners in: query - schema: type: string enum: - 'true' - 'false' default: 'true' description: Whether to resolve metadata IPFS or Arweave links example: 'false' required: false name: resolve_metadata_links in: query responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: type: object properties: chain_id: type: number contract_address: type: string title: address (hex or ENS) example: vitalik.eth token_id: type: string token_type: type: string balance: type: string owner_addresses: type: array items: type: string name: type: string description: type: string image_url: type: string video_url: type: string animation_url: type: string background_color: type: string external_url: type: string status: type: string metadata_url: type: string extra_metadata: allOf: - type: object additionalProperties: {} - type: object properties: attributes: anyOf: - type: array items: type: object properties: trait_type: type: string value: anyOf: - type: string - type: number display_type: type: string required: - trait_type - value - type: object additionalProperties: {} properties: type: object additionalProperties: {} collection: type: object properties: name: type: string description: type: string image_url: type: string banner_image_url: type: string featured_image_url: type: string external_link: type: string contract: type: object properties: chain_id: type: number description: The chain ID of a relevant entry example: 1 address: type: string title: address (hex or ENS) example: vitalik.eth name: type: string symbol: type: string type: type: string enum: - erc721 - erc1155 required: - chain_id - address required: - chain_id - contract_address - token_id - token_type - balance required: - data '404': description: Not found '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/metadata/refresh/{contract_address}: get: tags: - insights/nfts summary: Force refresh collection metadata description: Force refresh collection metadata for the specified contract (across multiple chains if provided) parameters: - $ref: '#/components/parameters/contractAddress' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: object properties: success: type: boolean message: type: string required: - success - message required: - data '400': description: Bad request content: application/json: schema: type: object properties: error: type: string required: - error '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error /insights/v1/nfts/metadata/refresh/{contract_address}/{token_id}: get: tags: - insights/nfts summary: Force refresh token metadata description: Force refresh token metadata for the specified contract and token ID (across multiple chains if provided) parameters: - $ref: '#/components/parameters/contractAddress' - $ref: '#/components/parameters/tokenId' - name: chain in: query required: false deprecated: true description: Use chain_id instead schema: type: array example: - 20 - 56 - 1 items: type: number - name: chain_id in: query required: false description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain schema: type: array example: - 20 - 56 - 1 items: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: object properties: success: type: boolean message: type: string required: - success - message required: - data '400': description: Bad request content: application/json: schema: type: object properties: error: type: string required: - error '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string required: - error components: parameters: transactionHash: schema: type: string required: true name: transaction_hash in: path page: schema: type: - integer - 'null' minimum: 0 default: 0 description: 'Page number (0-indexed). Maximum value depends on query parameters: 20 for regular queries, 500 when using aggregate or group_by parameters.' example: 0 required: false name: page in: query contractAddress: schema: type: string title: address (hex or ENS) example: vitalik.eth required: true name: contract_address in: path blockTimestampTo: schema: type: integer description: Filter by block timestamp less than or equal to example: 1749768884 exclusiveMinimum: 0 required: false name: block_timestamp_to in: query ownerAddress: schema: type: string title: address (hex or ENS) example: vitalik.eth required: true name: ownerAddress in: path blockTimestampFrom: schema: type: integer description: Filter by block timestamp greater than or equal to example: 1749768884 exclusiveMinimum: 0 required: false name: block_timestamp_from in: query tokenId: schema: type: string required: true name: token_id in: path limit: schema: type: integer maximum: 1000 default: 20 description: The number of items to return example: 20 exclusiveMinimum: 0 required: false name: limit in: query blockNumberFrom: schema: anyOf: - type: number title: number - type: string pattern: ^\d+$ title: string description: Filter by block number greater than or equal to example: '1000000' required: false name: block_number_from in: query securitySchemes: clientId: type: apiKey in: header name: x-client-id description: thirdweb client ID in headers secretKey: type: apiKey in: header name: x-secret-key description: thirdweb secret key in headers dashboard: type: http scheme: bearer bearerFormat: JWT description: thirdweb JWT + Client ID clientId-query: type: apiKey in: query name: clientId description: thirdweb client ID in query params x-proxy-info: supported-chains: - chainId: 243 name: Reach Testnet network: reach-testnet apiUrl: https://reach-testnet.explorer.caldera.xyz/api/v2 - chainId: 1993 name: B3 Testnet network: b3-testnet apiUrl: https://sepolia.explorer.b3.fun/api/v2 - chainId: 4224 name: Arpachain network: arpachain apiUrl: https://arpachain.calderaexplorer.xyz/api/v2 - chainId: 8333 name: B3 Mainnet network: b3 apiUrl: https://blockscout.b3.fun/api/v2 - chainId: 19934 name: B4 Testnet network: b4-testnet apiUrl: https://b4-testnet.explorer.caldera.xyz/api/v2 - chainId: 10211403 name: GLHF Testnet network: glhf-testnet apiUrl: https://glhf-testnet.explorer.caldera.xyz/api/v2 supported-services: - name: blockscout path: /blockscout/* description: Blockchain explorer API with multi-chain fallback - name: thirdweb-insights path: /insights/* description: ThirdWeb Insights API for chain analytics default-chain: 8333 cache-duration: 24 hours cache-strategy: KV store fallback-strategy: 'Blockscout: Query default chain first, then all chains in parallel if no results. ThirdWeb: Direct chain query only.'