Footprint Analytics Wallet API
Wallet profile, portfolio, and eligibility checks
Wallet profile, portfolio, and eligibility checks
openapi: 3.1.0
info:
title: Footprint Analytics Data Chain Wallet 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: Wallet
description: Wallet profile, portfolio, and eligibility checks
paths:
/api/v1/wallet/{wallet_address}/profile:
get:
operationId: getWalletProfile
summary: Get wallet profile
description: 'Returns a comprehensive on-chain profile for a wallet address including token balances, NFT holdings, DeFi positions, transaction history summary, and cross-chain activity.
'
tags:
- Wallet
parameters:
- name: wallet_address
in: path
required: true
description: Wallet address to query
schema:
type: string
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
- $ref: '#/components/parameters/Chain'
responses:
'200':
description: Wallet profile
content:
application/json:
schema:
$ref: '#/components/schemas/WalletProfile'
'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:
- Wallet
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'
/api/v1/wallet/{wallet_address}/eligibility/token:
get:
operationId: checkTokenHolderEligibility
summary: Verify token holder eligibility
description: 'Checks whether a given wallet address holds at least a minimum balance of a specific token. Used for verifying token-gated campaign or quest eligibility.
'
tags:
- Wallet
parameters:
- name: wallet_address
in: path
required: true
description: Wallet address to check
schema:
type: string
- name: token_address
in: query
required: true
description: Token contract address to check balance for
schema:
type: string
- $ref: '#/components/parameters/Chain'
- name: min_balance
in: query
description: Minimum token balance required for eligibility
schema:
type: number
format: double
default: 0
responses:
'200':
description: Token holder eligibility result
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityResult'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/users/{user_id}/accounts:
post:
operationId: linkWalletAccount
summary: Link wallet to user account
description: 'Associate a blockchain wallet address with a user account to enable cross-chain and cross-identity analytics in the Footprint Growth Analytics platform.
'
tags:
- Wallet
parameters:
- name: user_id
in: path
required: true
description: Unique identifier of the user
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LinkWalletRequest'
examples:
link_metamask:
summary: Link a MetaMask wallet
value:
wallet_address: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
wallet_type: EoA
wallet_provider: metamask
responses:
'200':
description: Wallet linked successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
Chain:
name: chain
in: query
description: Blockchain network to query
schema:
$ref: '#/components/schemas/ChainEnum'
schemas:
LinkWalletRequest:
type: object
required:
- wallet_address
properties:
wallet_address:
type: string
description: Blockchain wallet address to link to the user
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
wallet_type:
type: string
description: Type of wallet account (EoA = Externally Owned Account)
enum:
- EoA
- contract
default: EoA
wallet_provider:
type: string
description: Wallet provider or connector used
example: metamask
default: metamask
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
SuccessResponse:
type: object
properties:
success:
type: boolean
message:
type: string
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
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
WalletProfile:
type: object
properties:
wallet_address:
type: string
description: The queried wallet address
chain:
$ref: '#/components/schemas/ChainEnum'
native_balance:
type: number
format: double
description: Balance in chain native token
native_balance_usd:
type: number
format: double
description: Native balance value in USD
token_holdings:
type: array
items:
$ref: '#/components/schemas/TokenHolder'
nft_holdings_count:
type: integer
description: Total number of NFTs held
defi_positions_count:
type: integer
description: Number of active DeFi positions
transaction_count:
type: integer
description: Total historical transaction count
first_tx_at:
type: string
format: date-time
description: Timestamp of the wallet's first transaction
last_tx_at:
type: string
format: date-time
description: Timestamp of the wallet's most recent transaction
TokenHolder:
type: object
properties:
wallet_address:
type: string
description: Address of the token holder
balance:
type: number
format: double
description: Token balance held
balance_usd:
type: number
format: double
description: Token balance value in USD
rank:
type: integer
description: Rank by balance (1 = largest holder)
percentage:
type: number
format: double
description: Percentage of total supply held
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