openapi: 3.1.0 info: title: Footprint Analytics Data Chain NFT API description: 'Footprint Analytics is a blockchain data analytics platform providing unified REST and SQL APIs for querying DeFi protocol metrics, NFT market data, token analytics, GameFi economics, and on-chain activity across 30+ chains including Ethereum, Bitcoin, Solana, BNB Chain, Polygon, Arbitrum, Optimism, and Sui. The platform indexes 30,000+ protocols, 100M+ tokens, 2M+ NFT collections, and 3,000+ blockchain games. Authentication is via API key passed as a query parameter or request header. ' version: 1.0.0 contact: name: Footprint Analytics Support url: https://www.footprint.network/ license: name: Proprietary url: https://www.footprint.network/ servers: - url: https://api.footprint.network description: Footprint Analytics production API - url: https://fp-api.readme.io description: Footprint Analytics documentation API security: - ApiKeyHeader: [] - ApiKeyQuery: [] tags: - name: NFT description: NFT collection and token market data paths: /api/v1/nft/collections: get: operationId: listNftCollections summary: List NFT collections description: 'Returns a paginated list of NFT collections indexed by Footprint Analytics across supported blockchains. Includes metadata such as floor price, volume, and market cap. ' tags: - NFT parameters: - $ref: '#/components/parameters/Chain' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Offset' - name: sort_by in: query description: Field to sort results by schema: type: string enum: - floor_price - volume_24h - market_cap - holder_count default: volume_24h responses: '200': description: List of NFT collections content: application/json: schema: $ref: '#/components/schemas/NftCollectionListResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /api/v1/nft/collections/{collection_address}: get: operationId: getNftCollection summary: Get NFT collection details description: 'Returns detailed metadata and market statistics for a specific NFT collection identified by its contract address and chain. ' tags: - NFT parameters: - name: collection_address in: path required: true description: Contract address of the NFT collection schema: type: string example: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d' - $ref: '#/components/parameters/Chain' responses: '200': description: NFT collection details content: application/json: schema: $ref: '#/components/schemas/NftCollection' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /api/v1/wallet/{wallet_address}/eligibility/nft: get: operationId: checkNftHolderEligibility summary: Verify NFT holder eligibility description: 'Checks whether a given wallet address currently holds tokens from a specific NFT collection. Used for verifying NFT-gated campaign or quest eligibility. ' tags: - NFT parameters: - name: wallet_address in: path required: true description: Wallet address to check schema: type: string - name: collection_address in: query required: true description: NFT collection contract address to check holding in schema: type: string - $ref: '#/components/parameters/Chain' - name: min_count in: query description: Minimum number of NFTs the wallet must hold schema: type: integer default: 1 responses: '200': description: NFT holder eligibility result content: application/json: schema: $ref: '#/components/schemas/EligibilityResult' '401': $ref: '#/components/responses/Unauthorized' components: parameters: Chain: name: chain in: query description: Blockchain network to query schema: $ref: '#/components/schemas/ChainEnum' Offset: name: offset in: query description: Number of results to skip for pagination schema: type: integer minimum: 0 default: 0 Limit: name: limit in: query description: Maximum number of results to return schema: type: integer minimum: 1 maximum: 1000 default: 20 schemas: EligibilityResult: type: object properties: wallet_address: type: string eligible: type: boolean description: Whether the wallet meets the eligibility criteria current_balance: type: number format: double description: Current balance or count for the checked asset required_balance: type: number format: double description: Minimum balance required for eligibility checked_at: type: string format: date-time NftCollectionListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/NftCollection' total: type: integer limit: type: integer offset: type: integer NftCollection: type: object properties: collection_address: type: string description: Contract address of the NFT collection collection_name: type: string description: Display name of the NFT collection chain: $ref: '#/components/schemas/ChainEnum' floor_price_usd: type: number format: double description: Current floor price in USD floor_price_native: type: number format: double description: Current floor price in the chain's native token volume_24h_usd: type: number format: double description: 24-hour trading volume in USD market_cap_usd: type: number format: double description: Market capitalization in USD holder_count: type: integer description: Number of unique holders total_supply: type: integer description: Total number of tokens in the collection updated_at: type: string format: date-time description: Timestamp of the most recent data update ErrorResponse: type: object properties: error: type: object properties: code: type: string description: Machine-readable error code message: type: string description: Human-readable error message details: type: object additionalProperties: true ChainEnum: type: string description: Supported blockchain network identifier enum: - ethereum - bnb - polygon - arbitrum - optimism - avalanche - fantom - solana - bitcoin - sui - starknet - zksync - celo - cronos - ronin - moonbeam - moonriver - base - linea - scroll example: ethereum responses: NotFound: description: Requested resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Missing or invalid API key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' BadRequest: description: Invalid request parameters or malformed query content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: ApiKeyHeader: type: apiKey in: header name: X-API-KEY description: Footprint Analytics API key passed as a request header ApiKeyQuery: type: apiKey in: query name: apiKey description: Footprint Analytics API key passed as a query parameter