supanovasupanovaDOCS
Open Launchpad
Launchpad documentation
Developers

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

bash
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.

bash
# 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.

javascript
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-After on HTTP 429.
  • Keep monetary values as decimal strings. Preserve null when 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.
supanova Launchpad docsDeveloper settings