REST data API
Markets, prices, candles, holders, and activity from our indexer. Public, no auth, cached at the edge.
Base URL: https://api.ubi.fun (Arc mainnet). Everything is public JSON over GET, no API key; abusive request rates are limited per IP, and most responses carry cache headers, so respect them and you will never be throttled. Addresses are lowercase hex throughout; USDC amounts use 6 decimals, coin amounts 18.
Markets
| Endpoint | What it returns |
|---|---|
GET /markets |
Market list, newest first. limit, offset. sort=marketCap reorders the returned page by market cap (it does not rank the full set). addresses=0x..,0x.. (max 50) fetches specific coins. q= searches name and symbol, prefix matches first |
GET /coin/:address/details |
Everything a market row carries plus description, volume24hEth, trades24h, priceChange24h, and the full fairLaunch state |
GET /coin/:address/ohlcv |
OHLCV candles for charting. interval and limit query params |
GET /coin/:address/activity |
Recent swaps for one coin. limit |
GET /coin/:address/holders |
Holder list with balances |
GET /token/:tokenId |
ERC721 metadata for a Flaunch NFT (standard name / description / image / attributes) |
Every market row (list and details alike) carries identity (address, tokenId, creator, treasury, tokenUri, image), live pricing (priceUsd, marketCapUsd, sqrtPriceX96), and trading stats: lifetime txns and traders, volume24hUsd, athUsd, priceChangePercent for 1h/6h/24h windows, and a 48-point sparkline.
Launch timing rides on the same row: launchedAt (unix seconds), and the anti-sniper fair-launch window as fairLaunchStartsAt, fairLaunchEndsAt, fairLaunchEnded, and fairLaunchTokens (the initial fixed-price allocation, raw 18-decimal units, null when the launch had no window). The timestamps are event-derived, so fairLaunchEndsAt reflects an early close when the allocation sells out, and a coin is in its window exactly when startsAt <= now < endsAt and fairLaunchEnded is false. creatorFeeAllocation is the launcher’s permanent creator/BidWall split in hundredths of a percent (9000 = 90% creator / 10% floor), set once at launch with no setter.
poolId is the Uniswap v4 pool identifier: the keccak256 hash of the pool key. v4 pools live inside the PoolManager singleton and have no contract address of their own, so this bytes32 value is the canonical pair identifier; pairAddress is the same value under the name screener-style tooling expects. Coin details additionally serve the full poolKey (currency0, currency1, fee, tickSpacing, hooks) for quoting or swapping on-chain, verified server-side: it is only non-null when hashing it reproduces poolId.
Social links (website, twitter, telegram, discord) are read from the coin’s immutable metadata document and are null when the creator set none. Both metadata schemas in the wild are understood: ours (website / external_url, twitter, telegram, discord) and the Flaunch SDK’s (external_link, websiteUrl, twitterUrl, telegramUrl, discordUrl). Links are served only when they are scheme-safe (http, https, or schemeless).
Platform-wide
| Endpoint | What it returns |
|---|---|
GET /activity |
Curated platform ticker (what the app’s live ticker reads): buys of $25 or more, every launch, and creator or holder claims of $1 or more. Not a raw swap feed; use /coin/:address/activity for that |
GET /stats |
Platform totals: creator earnings, lifetime volume, and the USDC/USD rate |
GET /health |
Indexer heartbeat: chain id, build, last indexed block and its update timestamp. Check this before trusting freshness |
Holder pool (UBI)
| Endpoint | What it returns |
|---|---|
GET /ubi/status |
Current epoch state of the daily USDC pool |
GET /ubi/epoch/:day |
One day’s epoch: pool size and distribution |
GET /ubi/:address |
An address’s cumulative entitlement and Merkle proof; pair with URD.claimed(account, reward) on-chain to compute what is still claimable |
GET /user/:address/rewards |
An address’s referral earnings (history and totals) and creator withdrawal totals |
GET /user/:address/activity |
An address’s swap history. limit |
Uploads
POST /upload accepts a multipart image file plus metadata text fields (name, symbol, description, and optional website, twitter, telegram, discord links), pins both, and returns { tokenUri, image } as ipfs:// URIs ready for a launch. To iterate on metadata without re-pinning the image, pass an imageCid text field (the CID from a previous upload) instead of the file. IP rate limited; intended for launch flows, not bulk storage.
Example
curl -s 'https://api.ubi.fun/markets?sort=marketCap&limit=3'
curl -s 'https://api.ubi.fun/coin/0x.../details'
curl -s 'https://api.ubi.fun/health'
Field names are self-describing; treat absent fields as not-yet-indexed rather than zero. If you need something the API does not serve, the same data is all on-chain: Contracts and events lists the events our indexer builds these responses from.