Token Metadata
Resolve full metadata for any mint — not just the curated catalog — so you don't replicate the RPC + Metaplex PDA + SPL-mint decode yourself.
Note: this is the plural
/v1/tokens/:mint(collection item). It is distinct from the singularGET /v1/token/:mint, which returns the tracked-token "token page" (price, pools, venues).
GET /v1/tokens/:mint
Resolve metadata for one mint.
Path parameters:
mint— the SPL mint address (base58).
Query parameters:
logo— (optional, defaulttrue) a boolean toggle: setlogo=falseto skip the off-chain image fetch for lower latency. Note the distinction from the response — the resolved image URL comes back in thelogoURIfield (notlogo). ThemetadataUriis always returned so you can resolve the image yourself if you prefer.
Response:
{
"mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm",
"name": "Wrapped SOL",
"symbol": "WSOL",
"decimals": 9,
"logoURI": "https://.../logo.png",
"logoProxyURI": "https://api.venum.dev/v1/tokens/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm/logo",
"description": "Wrapped SOL.",
"priceUsd": 80.31,
"priceSource": "venum-pools",
"priceRoute": "direct",
"metadataUri": "https://.../metadata.json",
"isToken2022": false,
"source": "metaplex"
}| Field | Notes |
|---|---|
decimals | From the on-chain SPL mint account (authoritative). |
name / symbol | Metaplex Token Metadata, falling back to the curated registry symbol. |
logoURI | The token icon, resolved from on-chain metadata, falling back to Jupiter's token registry when a token has no usable on-chain image (legacy majors like USDT/USDC carry an empty on-chain uri). null when logo=false or none anywhere. |
logoProxyURI | A Venum-hosted copy of the icon (GET /v1/tokens/:mint/logo, see below) — stable, CORS-open, non-redirecting. Prefer this for fetch() in a service worker or anywhere a source redirect / 403 / CORS would bite. null when there's no logo to proxy. |
description | The off-chain metadata description, resolved inline from the same fetch as the logo (no second hop to metadataUri). null when logo=false or none. |
priceUsd | Current USD price computed from our own indexed pools (same engine as /v1/prices), for any mint we index a USD route for — not just the catalog. Resolved fresh per request (not part of the ~1h metadata cache). null when we index no USD route. |
priceSource | "venum-pools" when a price was resolved, else null. Explicit so you never mistake a stale/absent price for a real one. |
priceRoute | How the price was derived: "direct" (USDC/USDT pool) or "<mint>/<intermediate> × <intermediate>/USDC". null when unpriced. |
metadataUri | Raw on-chain metadata URI (off-chain JSON), if any. |
isToken2022 | true when the mint is owned by the Token-2022 program. |
source | metaplex | registry | mint — where name/symbol came from. |
For batch pricing across many mints in one request, use /v1/prices?tokens=<mint>,<mint>,….
Errors: 400 INVALID_REQUEST (malformed mint), 404 TOKEN_NOT_FOUND (not a token mint / does not exist). See Error Handling.
Example:
curl -H "x-api-key: $VENUM_API_KEY" \
https://api.venum.dev/v1/tokens/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjmGET /v1/tokens/:mint/logo
The logo proxy — serves the token's icon bytes from Venum's origin. Venum resolves the icon (on-chain + Jupiter fallback), fetches it server-side, and re-serves it CORS-open, cacheable, and non-redirecting. This is the logoProxyURI from the responses above.
Use it wherever hotlinking the raw logoURI is fragile — a service worker doing fetch(), or a source that redirects / 403s non-browser clients / disappears. For a plain <img src> either URL works.
- Returns the image with
Content-Type: image/*,Access-Control-Allow-Origin: *, and a longCache-Control(icons are effectively immutable). 404 TOKEN_NOT_FOUNDwhen the mint has no resolvable logo.- No auth required (anonymous-cacheable), so it drops straight into
<img>.
<img src="https://api.venum.dev/v1/tokens/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm/logo" />Results are cached server-side (~1h) and edge-cacheable, so repeated lookups are fast. The logo image is resolved through an SSRF-guarded fetch.
