Skip to content

Token metadata API

Hoodl serves every token’s logo and social links from a public, unauthenticated HTTP API. It exists so that terminals, scanners, wallets and aggregators can show a Hoodl token the way its creator set it up — with its image and links — instead of a blank placeholder avatar.

No API key. No rate limit. No registration. CORS is open (access-control-allow-origin: *), so you can call it from a browser as well as a server.

Base URL: https://api.hoodl.app

An ERC-20 has no room for a logo. name, symbol and decimals are all the chain stores — there is no on-chain field for an image, a description or a Twitter handle, and no EVM standard that memecoin terminals read for one. So every launchpad keeps that metadata off-chain and publishes it. This is Hoodl’s publication of it.

Discovery still works entirely on-chain: watch TokenLaunched on the factory (below), then call this API for the parts the chain can’t hold.

Every Hoodl launch, in the Uniswap token list schema. Also served at /.well-known/token-list.json. Cached for 60 seconds.

{
"name": "Hoodl",
"timestamp": "2026-07-12T14:22:31.000Z",
"version": { "major": 1, "minor": 5, "patch": 0 },
"keywords": ["hoodl", "robinhood-chain", "launchpad"],
"tokens": [
{
"chainId": 4663,
"address": "0x9822bc0a7109a0bc5017bca8600297eb7c9b3a63",
"name": "Black Bull",
"symbol": "ANSEM",
"decimals": 18,
"logoURI": "https://maroon-tricky-smelt-296.mypinata.cloud/ipfs/bafkrei...",
"extensions": {
"logoIpfs": "ipfs://bafkrei...",
"twitter": "https://x.com/...",
"website": "https://...",
"telegram": "https://t.me/..."
}
}
]
}

One token. Returns 404 for an address Hoodl didn’t launch.

{
"name": "Black Bull",
"symbol": "ANSEM",
"decimals": 18,
"chainId": 4663,
"address": "0x9822bc0a7109a0bc5017bca8600297eb7c9b3a63",
"description": "...",
"image": "https://maroon-tricky-smelt-296.mypinata.cloud/ipfs/bafkrei...",
"imageIpfs": "ipfs://bafkrei...",
"twitter": "https://x.com/...",
"website": "https://...",
"telegram": "https://t.me/...",
"extensions": { "twitter": "...", "website": "...", "telegram": "..." }
}

Socials are also mirrored flat at the top level, so you can read either shape.

Every token logo is pinned to IPFS when its creator uploads it. You get the same image two ways, and both are always present together:

FieldFormUse it when
logoURI / imagehttps://<gateway>/ipfs/<cid>You want a URL that just works — no IPFS client, no gateway choice
extensions.logoIpfs / imageIpfsipfs://<cid>You resolve IPFS yourself, or want to serve the CID from your own gateway

The CID is identical in both. Because the content is on the public IPFS network, you are not dependent on Hoodl’s gatewayhttps://ipfs.io/ipfs/<cid> or any other gateway serves the same bytes.

A token whose creator never uploaded a logo simply has no logo field. It is omitted, never null or a placeholder — treat its absence as “no image, render your own fallback”.

You don’t have to poll the list. Hoodl’s factory emits an event on every launch:

event TokenLaunched(
address indexed token,
address indexed creator,
address indexed quoteToken,
uint256 tokenId,
address pool,
bytes32 splitId,
uint256 devBuyOut
)
ChainRobinhood Chain mainnet, chain ID 4663
HoodlLaunchFactory0x4e872FB872bEf35C6041855C94B63e59397DECFF
Deployed at block6960162 — no need to scan earlier
PoolUniswap V3, 1% fee tier, full range, LP locked

Index that event for the token and pool addresses, then call /tokens/{address}/metadata.json for the logo and socials. The contract is verified on Blockscout.

  • Cache the list. It’s cached for 60s at our edge; there’s no rate limit, but please don’t poll it every second. For live discovery, watch TokenLaunched and fetch the single token.
  • Addresses are lowercase in responses. Lookups accept any casing.
  • decimals is always 18. Every Hoodl token is a fixed-supply, 18-decimal ERC-20 with no tax, no mint function and no owner. See Contracts & security.
  • Nothing here is authenticated, and nothing here can move funds. It is a read-only view of data the creator chose to publish.