Your first API request
Fetch Launchpad coins, add a read key, and handle errors without guessing response shapes.
Start with a read request. Token discovery does not place orders or require a wallet signature.
Fetch the latest coins
curl --fail-with-body --silent --show-error \
'https://launch-api.supanova.app/api/v1/tokens?limit=5&ranking=latest'The response contains items, page, and meta. Read page.nextCursor when page.hasMore is true. meta.provenance identifies the network, data mode, and timestamp of the data.
Create a read key
Sign in to Launchpad's developer page, open API-key setup, and create a key with the read scope. Save the full key when it is displayed; it is shown once.
Store the key in your server's secret manager or environment. Keep it out of browser bundles, URLs, screenshots, and source control.
# Set SUPANOVA_API_KEY in your environment before running this request.
curl --fail-with-body --silent --show-error \
-H "X-API-Key: $SUPANOVA_API_KEY" \
'https://launch-api.supanova.app/api/v1/market/pairs?limit=5&status=active'Market pair responses use page.next_cursor and page.has_more. Token discovery uses camelCase pagination fields. Use the schema for the particular surface instead of sharing an unchecked response type between them.
Make a request in Node.js
This example uses the built-in fetch available in Node.js 20 and later. It prints a server request ID on failure without printing your credential.
const apiKey = process.env.SUPANOVA_API_KEY;
if (!apiKey) throw new Error("Set SUPANOVA_API_KEY first");
const url = new URL("/api/v1/market/pairs", "https://launch-api.supanova.app");
url.searchParams.set("limit", "5");
url.searchParams.set("status", "active");
const response = await fetch(url, {
headers: { "X-API-Key": apiKey },
signal: AbortSignal.timeout(15_000),
});
const payload = await response.json();
if (!response.ok) {
const code = payload.error?.code ?? `HTTP_${response.status}`;
const requestId = payload.requestId ?? response.headers.get("x-request-id");
throw new Error(`${code}; requestId=${requestId ?? "unavailable"}`);
}
for (const pair of payload.items) {
console.log(pair.pair_id, pair.price, pair.volume.h24);
}Before you build further
- Use the network reported by
GET /api/v1/app-config. A key works only on the network where it was created. - Read rate-limit headers and respect
Retry-Afteron HTTP 429. - Keep monetary values as decimal strings. Preserve
nullwhen a USD conversion or other value is unavailable. - Handle the standard error envelope, including unknown codes.
- For trading, follow the complete order flow. A successful quote is not a completed trade.