Multi-chain NFT and fungible-token API across 80+ chains (EVM, Solana, Bitcoin Ordinals, Flow, Tezos, Aptos) with normalized metadata, floor prices, and webhooks.
- 01wallet NFT galleries across chains
- 02normalized NFT metadata + media
- 03floor prices and listings
- 04Bitcoin Ordinals / inscriptions
- 05fungible token balances and prices
| Variable | Scope | Description |
|---|---|---|
| SIMPLEHASH_API_KEY | Server | SimpleHash API key. Sent in the `X-API-KEY` header. Server-side only. |
SimpleHash has no first-party JS SDK — call the REST API directly. Base URL: `https://api.simplehash.com/api/v0`. Set the header `X-API-KEY: ${process.env.SIMPLEHASH_API_KEY}` on every request. For a wallet's NFTs: `GET /nfts/owners?chains=ethereum,polygon,solana&wallet_addresses=<addr>`. For a single NFT: `GET /nfts/<chain>/<contract>/<token_id>`. For fungibles use the `/fungibles/*` routes. Always pass `chains` as a comma-separated list of SimpleHash chain slugs (e.g. `ethereum`, not `eth-mainnet`).
- ⚑Chain identifiers are SimpleHash-specific slugs (`ethereum`, `polygon`, `base`, `solana`, `bitcoin`) — they are not the EIP-155 numeric IDs and not the same slugs Alchemy/Covalent use.
- ⚑Pagination uses an opaque `next` cursor URL, not page numbers; loop until `next` is null instead of computing offsets.
- ⚑Free / lower tiers throttle aggressively (low RPS) and queue large `wallet_addresses` queries — long lists may time out; chunk them client-side.
- ⚑Bitcoin Ordinals and Runes are returned alongside EVM NFTs in the same endpoint — clients that assume EVM `contract_address` will crash on inscription IDs.
- ⚑Floor price and trait data lag marketplace activity by seconds-to-minutes; do not use for real-time trading decisions.