Public API
Version 1 · read-only · free
Everything public on Firstprint is also available as JSON: which tokens are coming up, every open market with its pool and outcomes, settled results, and the leaderboard. Use it for bots, dashboards, alerts or research.
- Base URL:
https://www.firstprint.fun/api/v1 - No key, no sign-in. Only
GETrequests. Any website can call it from the browser (CORS is open). - Limit: 60 requests a minute per address, and a shared limit for everyone together. Over a limit you get
429; wait a minute and try again. - Private data is never returned: no emails, wallets, or who predicted what.
- Points have no cash value. Nothing here is financial advice.
Endpoints
GET/api/v1/upcoming
Tokens that aren’t trading yet. Their opening price will be the start price. Sorted by when predictions close, soonest first.
curl https://www.firstprint.fun/api/v1/upcoming
GET/api/v1/markets?status=open&limit=50
Markets, newest activity first.
status:open(taking predictions, the default),closed(predictions closed, waiting for the result),settled(result posted), orall.limit: 1 to 100, default 50.
curl "https://www.firstprint.fun/api/v1/markets?status=settled&limit=10"
GET/api/v1/markets/{id}
One market. Returns 404 if there is no such market.
GET/api/v1/leaderboard?period=week
Top players by profit. period is day, week, month or all. Each entry has rank, username, profit, wins and predictions.
GET/api/v1
A short index of the endpoints above.
A market
{
"id": "m_abc123",
"url": "https://www.firstprint.fun/app/#/market/m_abc123",
"token": { "symbol": "ABC", "name": "Example Token", "logo": "https://…" },
"type": "five_outcomes",
"category": "listing",
"status": "open",
"upcoming": true,
"exchanges": [{ "id": "binance", "name": "Binance", "pair": "ABC/USDT" }],
"startPrice": null,
"startPriceFrom": "opening_price",
"predictionsClose": "2026-10-08T12:00:00.000Z",
"resultAt": "2026-10-09T12:00:00.000Z",
"feePercent": 2,
"pool": 1500,
"participants": 12,
"outcomes": [
{ "outcome": "moon", "range": "+50% or better", "pool": 300, "share": 0.2, "payout": 4.9 },
…
],
"result": null
}
| Field | Meaning |
|---|---|
type | yes_no (above or below the start price) or five_outcomes (price ranges). |
category | listing for a new listing, live for a token that already trades. |
status | open, closed, settled or cancelled. |
upcoming | true while the token isn’t trading yet. |
startPrice | The price outcomes are measured from, or null until it’s known. |
startPriceFrom | set (already known), opening_price (the first trading price) or price_at_close (the price when predictions close). |
pool | Points predicted on this market in total. |
outcomes[].share | Part of the pool on this outcome, from 0 to 1: the crowd’s view. |
outcomes[].payout | What 1 point on this outcome would return if it won, as the pool stands now (after the fee). null when nothing is on it yet. |
result | Once settled: winningOutcome, startPrice, finalPrice, and cancelledReason if it was cancelled. |
Errors
Errors come back as JSON with a short code, for example {"error": "bad_status", "message": "…"}, and a 4xx status. Answers may be cached for up to 15 seconds, so checking every 15 to 30 seconds is plenty.
Fair use
Please keep to the limit, and link back to Firstprint if you show this data publicly. Version 1 won’t change in ways that break your code; new fields may be added. Questions or ideas: [email protected]