API reference · v1
Introduction
The Launchprint API serves the same verdicts as the Telegram bot, in JSON. Pass a token, pool or config address — or a Solscan, DexScreener, Jupiter or Meteora link — and get the verdict with the flags behind it.
Base URL: https://api.launchprint.xyz. All responses are JSON. Timestamps are unix seconds; SOL amounts are in SOL.
curl https://api.launchprint.xyz/v1/check/<token-or-pool-address>Authentication
Public reads need no key. Send a key in the X-API-Key header to unlock more:
- Without a key — addresses already in the index; a Meteora DAMM v2 / DLMM pool resolves to its token. Creator and receiver addresses are omitted (
launch.creator,config.top_creator,config.fee_claimer,config.leftover_receiver). - With a key — any address is resolved on-chain (including transaction history), added to the index and scored. Addresses are not hidden.
curl -H "X-API-Key: $LAUNCHPRINT_KEY" \
https://api.launchprint.xyz/v1/check/<address>Keys are issued on request — info@launchprint.xyz.
Rate limits
Requests are limited per minute: per IP without a key, with a higher limit for a valid key. Exceeding the limit returns 429 rate_limited; the message states the current limit. Invalid keys are checked after the rate limit, so key guessing is rate-limited too.
Endpoints
GET/v1/check/{address}
Verdict for a token, launch pool, config, or a post-migration Meteora DAMM v2 / DLMM pool (resolved to its token). kind is launch, config, token or unknown. When the address came through a post-migration pool, the response has via: { venue, pool }. Tokens from other launchpads are recognised: { "kind": "token", "dbc": false, "launchpad": "pump.fun" }.
{
"kind": "launch",
"verdict": "AMBER",
"launch": {
"pool": "<dbc-pool>",
"token": "<mint>",
"config": "<config>",
"created_time": 1791261146,
"graduated_time": null,
"trades_sampled": true,
"trades": {
"count": 214,
"wallets": 87,
"creator_opening_buy_sol": 1.5,
"fan_out_sellers": 0
}
},
"config": {
"verdict": "AMBER",
"flags": [ ... ]
}
}GET/v1/latest
Latest launches with RED, RED-LINK or AMBER verdicts.
| Parameter | Default | Description |
|---|---|---|
| hours | 2 | Look-back window, 1–24. |
| limit | 20 | Maximum items, 1–100. |
{
"hours": 2,
"count": 2,
"launches": [
{ "pool": "<pool>", "token": "<mint>", "config": "<config>",
"verdict": "RED", "created_time": 1791261146 },
{ "pool": "<pool>", "token": "<mint>", "config": "<config>",
"verdict": "AMBER", "created_time": 1791260512 }
]
}GET/v1/stats
Launches in the last 24 hours by verdict, and how fresh the analysis is.
{
"launches_24h": 3912,
"by_verdict_24h": { "RED": 1402, "SELF-GRAD": 1180, "GREEN": 1101, "AMBER": 210, "RED-LINK": 19 },
"configs_analysed": 2909,
"analysis_age_secs": 312
}GET/v1/health
Service status and analysis age. No rate limit.
{ "ok": true, "configs": 2909, "analysis_age_secs": 312 }Verdicts
A verdict is about one config — never a whole launchpad. Losses alone never make a verdict negative.
- GREEN
- No major red flags in the rules or observed trading.
- SELF-GRAD
- Instant or self-funded graduation, no real market on the curve.
- AMBER
- Risky rules or suspicious but inconclusive trading; visible before buying.
- RED
- Synthetic launch: trading dominated by the creator and linked wallets.
- RED-LINK
- Rules linked by specific addresses to a known synthetic-launch operator, flagged before the first trade.
Errors
Errors use HTTP status codes and a JSON body with a stable machine code:
{ "error": "rate_limited", "message": "limit is 30 requests per minute" }| Status | Code | Meaning |
|---|---|---|
| 400 | bad_address | The path is not a Solana address (or a link containing one). |
| 401 | invalid_api_key | X-API-Key was sent but is not valid. |
| 404 | not_indexed | Address is not in the index; on-chain lookup requires a key. |
| 404 | not_dbc | Not a supported pool, token or config. |
| 404 | launch_not_found | Launch not found in available history; try the pool address. |
| 429 | rate_limited | Too many requests this minute. |
| 502 | rpc_error | Upstream RPC failed; retry with backoff. |