Developers
SUNFIRE API
Live lock and burn figures for every launch on SUNFIRE, read from the contracts. Public, read-only, no key.
- JSON
- No key
- Read-only
- Robinhood Chain and Solana
Overview
What it gives you
Use it to show, on your own site, how much of a creator's bag is still locked, how much has been burned, and when the lock ends.
Ask for one token: you get its launch, or a 404 if it was not launched on SUNFIRE. A 503 means the site cannot answer for that chain yet: ask again later.
Read the full list on a schedule: every launch, with its current figures. Every 15 minutes is well within the limit.
Start
Base URL
https://sunfi.re/api/v1
Every response is JSON. Any site can call it from the browser: responses carry Access-Control-Allow-Origin: *.
Endpoint
GET /launches
Every launch, newest first. Optional: chain=robinhood or chain=solana. The list is rebuilt at most every 10 seconds. complete is false while the site is still reading a chain, after a restart for example, or does not read it at the moment: the list may then miss launches.
curl https://sunfi.re/api/v1/launches?chain=robinhood
{
"version": 1,
"generatedAt": "2026-11-05T23:02:05.149Z",
"complete": true,
"count": 2,
"launches": [ { …one launch, same fields as below, without "claims"… } ]
}
Endpoint
GET /launch
One launch, with the history of its claims. Both parameters are required: chain (robinhood or solana) and token (the token's address).
curl "https://sunfi.re/api/v1/launch?chain=robinhood&token=0x0a880936bFe4930f1163d4052858e6A234cB7aA7"
{
"version": 1,
"generatedAt": "2026-11-05T23:02:05.149Z",
"launch": {
"chain": "robinhood",
"token": "0x0a880936bFe4930f1163d4052858e6A234cB7aA7",
"name": "Rainbow Catpital",
"symbol": "PURR",
"pair": { "symbol": "ETH", "address": null, "native": true, "decimals": 18 },
"dev": "0x92e060172cFfd49798e68e260241B9294bA8d403",
"vault": "0xf06475ded284A549e406A725B68a5092c6b54600",
"launchedAt": "2026-11-05T21:04:31.000Z",
"launchTx": "0xa891d507298f809938fd9af0653f9a0d88f1b59091cfaa3a37accdc83e1ed671",
"lock": {
"initialTokens": 582993.2539352045,
"lockedTokens": 534344.9895373088,
"burnedTokens": 48648.26439789563,
"burnedPctOfLock": 8.3446,
"initialPctOfSupply": 0.058299,
"endsAt": "2026-11-06T21:04:31.000Z",
"unlocked": false,
"returnedToDev": null
},
"fees": { "claimedTotal": 0.000083401081999995, "unit": "ETH", "claims": 1, "lastClaimAt": "2026-11-05T22:19:27.000Z" },
"market": { "venue": "curve", "curveProgressPct": 0.02, "priceNative": 1.6819605716666667e-9, "marketCapUsd": 3740.33, "totalSupply": 999951351.7356021 },
"links": {
"page": "https://sunfi.re/app#t=RH%3A0x0a880936bfe4930f1163d4052858e6a234cb7aa7",
"token": "https://robinhoodchain.blockscout.com/address/0x0a880936bFe4930f1163d4052858e6A234cB7aA7",
"vault": "https://robinhoodchain.blockscout.com/address/0xf06475ded284A549e406A725B68a5092c6b54600"
},
"claims": [
{ "at": "2026-11-05T22:19:27.000Z", "gross": 0.000083401081999995, "burnedTokens": 48648.26439789563, "burnedPctOfLock": 8.3446, "tx": "0x0c183975bfc66fd45d4de8c306c002dea33c43e09d987b6e39f2ab65a3774301" }
]
}
}
Reference
Fields
| Field | Meaning |
|---|---|
| dev | The wallet that launched the token. It receives the creator fees and, when the bag is unlocked after the lock ends, gets back what has not burned. |
| vault | The address that holds the creator's locked bag. On Robinhood Chain, the launch's vault contract, also the token's creator and fee recipient on Pons. On Solana, the lock program's token account for the launch. |
| lock.initialTokens | Tokens the creator's first buy put in the lock. |
| lock.lockedTokens | Tokens still locked now. 0 once the bag has been unlocked or has fully burned. |
| lock.burnedTokens | Tokens burned from the lock so far. Each claim of creator fees burns part of the bag. |
| lock.burnedPctOfLock | burnedTokens as a percentage of initialTokens. |
| lock.initialPctOfSupply | initialTokens as a percentage of the token's supply at launch. |
| lock.endsAt | When the lock ends (ISO 8601, UTC). |
| lock.unlocked | true once the bag has left the lock. |
| lock.returnedToDev | Tokens given back to the dev when the bag was unlocked. null before. |
| fees.claimedTotal | Creator fees collected by claims so far, in fees.unit: the sum of claims[].gross. |
| market.venue | curve before the bond, migrating while the pool is being created, pool after. |
| market.priceNative | Price of one token in the pair currency (pair.symbol). |
| market.marketCapUsd | Market cap in US dollars, at the price of the pair the site shows. null when that price is not known. |
| market.curveProgressPct | How full the bonding curve is. Never 100 before the bond. |
| market.totalSupply | The token's supply now. It goes down as the bag burns. |
| claims[] | Only on /launch, newest first. gross: fees collected by that claim. burnedTokens and burnedPctOfLock: what that claim burned. On Robinhood Chain, uncollectedFees appears on the entry written at the unlock, for fees counted for the burn but not collected. |
Token amounts are in whole tokens (decimals already applied). A field the site cannot read yet is null.
Reference
Errors and limits
| Status | When |
|---|---|
| 400 | A parameter is missing or invalid. The body says which: {"error": "chain must be robinhood or solana"}. |
| 404 | No SUNFIRE launch for this token. |
| 503 | The site cannot answer for this chain yet: it is still reading it, or does not read it at the moment. The token may be a SUNFIRE launch it has not read. The body says which. Ask again later. |
| 429 | Too many requests: 120 per minute per IP, both endpoints together. The Retry-After header gives the seconds to wait. |
Reference
Verify on-chain
| Chain | Contract |
|---|---|
| Robinhood Chain | Launchpad 0xfA20d9c66C2696B8e29Bd386CF6D9ded4775Da15 |
| Solana | Program HigTUzwEgHcRH4eZxgy8C4w1TosF6m3bA3gTsPx7LQuj |
Each launch has its own vault, given in vault and links.vault.
Reference
Versioning
Fields may be added to v1. None will be removed or renamed without a new version in the path.