Docs

API reference

Base URL, conventions and every endpoint the site reads.

The API is a JSON REST service. The site uses it exclusively; there is nothing the pages show that you cannot read with these endpoints.

Base URL
# productionhttps://api-production-fd26a.up.railway.app# local developmenthttp://localhost:4000

Conventions

  • Base-unit amounts (lamports, wei) are strings so they survive JSON without precision loss.
  • Shares are basis points: 10,000 = 100% of the routed share.
  • Timestamps are ISO-8601 in UTC.
  • Routes carry platform: "apple" and a handle that is a phone number or an email.

Errors

json
{  "error": "routes_invalid",  "message": "Route shares must sum to 10000 bps"}

Config and health

GET/v1/config

Cluster, protocol fee, minPayoutUsd (the $2 gift-card minimum) and which launchpads are live.

GET/health

RPC and database status plus the operator and treasury keys.

GET/v1/solana/status

Health, slot and latency of every RPC node in the pool.

Launches

GET/v1/launches

List launches. Filters: creatorWallet, status, launchpad, limit.

GET/v1/launches/:id

One launch with its routes.

GET/v1/launches/by-mint/:mint

The same record looked up by mint address.

PUT/v1/launches/:id/routes

Replace the routes. Shares must sum to 10,000 bps. Needs the creator wallet's signature.

GET/v1/launches/:id/fees

Uncollected, collected and paid-out base units.

POST/v1/launches/:id/fees/collect

Trigger a collection now instead of waiting for the schedule.

Launch
{  "id": "lch_01J8…",  "launchpad": "pump",  "status": "confirmed",  "name": "Ledger Cat",  "symbol": "LCAT",  "mint": "GY9m…pump",  "creatorShareBps": 8000,  "protocolFeeBps": 2000,  "tokenUrl": "https://ilaunch.run/explore/GY9m…pump",  "routes": [    { "id": "rt_01J8…", "platform": "apple", "handle": "+14155550134", "shareBps": 10000 }  ]}

Listings and stats

GET/v1/explore

Confirmed launches with market cap, paid-out totals, the routed contact and the vault's uncollectedUsd, payoutFloorUsd, minPayoutUsd and payoutReady. Filters: launchpad, search, sort, limit.

GET/v1/tokens/:idOrMint

One launch with its payouts, collections, the payout cadence and the same uncollectedUsd / payoutFloorUsd / payoutReady fields.

GET/v1/stats/overview

Protocol totals, a 30-day series and the split by rail.

GET/v1/stream

Server-sent events: stats, collection, payout and launch.

Collections and payouts

GET/v1/collections

Fee collections, newest first. Filters: launchId, limit.

GET/v1/payouts

Queued and sent gift cards. Filters: launchId, platform, handle, status, limit.

GET/v1/payouts/:id/receipt

One-page PDF receipt for a gift card (application/pdf, inline): issuer and recipient, the card as an item line, total, receipt number IL-… and the fee source.

Payout
{  "id": "pay_01J8…",  "launchId": "lch_01J8…",  "platform": "apple",  "handle": "+14155550134",  "amountLamports": "412000000",  "amountUsd": 50,  "status": "sent",  "externalRef": "IL-7K2Q-9M4X",  "createdAt": "2026-09-18T09:41:02.000Z",  "sentAt": "2026-09-18T09:41:20.000Z"}

platform can also be "wallet" for payouts returned to a plain on-chain address instead of a gift card.

RPC proxy

POST/v1/rpc

Allow-listed JSON-RPC, single or batched, fanned out across a pool of nodes. Subscriptions and heavy scans are rejected.