Overview
The production base URL is https://lckd.tech/api/v1. Responses are JSON. Success responses return the endpoint payload directly. Errors use { "error": "message" }.
GET/feed
Directory records with pagination metadata.
GET/token/:ca
One platform token record by mint address or ID.
GET/token/:ca/lock
A lock summary computed from stored platform fields.
GET/dev/:username
Directory records associated with a GitHub username.
Authentication
Public read endpoints and the DexScreener lookup do not require a session. The metadata upload, launch transaction builder, GitHub repository list, and token record writer require a valid GitHub-authenticated session cookie.
Cross-origin access is restricted by the server allowlist. There is no published API-key flow and no supported command-line package. Use the browser wizard for authenticated launches.
GET/feed
Returns directory records and pagination metadata.
Query parameters
tier: locked, verified, builder, or shippedsort: newest or oldestlimit: 1 to 100, default 20offset: zero-based result offset
curl "https://lckd.tech/api/v1/feed?sort=newest&limit=20"{
"tokens": [],
"meta": { "total": 0, "limit": 20, "offset": 0, "sort": "newest" }
}GET/token/:ca
Returns { "token": DisplayToken } for a known mint address or ID. Unknown records return 404.
curl "https://lckd.tech/api/v1/token/<mint-address>"Market fields can be unavailable and appear as --. Treat missing values as unknown, not zero.
GET/token/:ca/lock
Returns a schedule summary derived from the stored launch record. The response includes token name, ticker, verified amount and duration, cliff unlock state, days remaining, timestamps, and the finalized lock transaction.
curl "https://lckd.tech/api/v1/token/<mint-address>/lock"{
"lock": {
"tokenName": "Example",
"ticker": "$EX",
"lockAmount": "998,103",
"lockDuration": "90d",
"percentUnlocked": 0,
"daysRemaining": 90,
"start": "2026-07-17T12:00:00.000Z",
"end": "2026-10-15T12:02:00.000Z",
"status": "locked",
"transaction": "<finalized-lock-signature>"
}
}The recorded lock percentage is recomputed from the finalized Streamflow deposit and the wallet's finalized token purchase in the launch transaction. It is not derived from a later wallet balance or a client-supplied percentage.
GET/dev/:username
Returns directory records associated with an exact GitHub username.
curl "https://lckd.tech/api/v1/dev/<github-username>"{
"developer": "github-username",
"tokens": []
}POST/token/:ca/verify-dex
Requests current DexScreener pairs for a mint and filters the result to Solana. It does not verify token ownership, lock state, or project legitimacy.
curl -X POST "https://lckd.tech/api/v1/token/<mint-address>/verify-dex"POST/launch
This authenticated browser endpoint validates the uploaded metadata, freezes the reviewed launch terms, and returns the exact address lookup table setup transaction. The browser generates the mint and Streamflow metadata keypairs locally. Private keys never leave the browser.
POST /api/v1/launch
Content-Type: application/json
Cookie: <authenticated session>
{
"walletPublicKey": "<wallet-public-key>",
"mintPublicKey": "<client-generated-mint-public-key>",
"metadataPublicKey": "<client-generated-streamflow-metadata-public-key>",
"metadataUri": "https://...",
"imageUri": "https://...",
"name": "Example",
"ticker": "EX",
"description": "Example token",
"buyAmountSol": 1,
"lockDurationDays": 90,
"lockPercentage": 99
}{
"transaction": "<base64 lookup-setup transaction>",
"mintPublicKey": "<client-generated-mint-public-key>",
"metadataPublicKey": "<client-generated-streamflow-metadata-public-key>",
"lookupTableAddress": "<lookup-table-address>",
"quotedTokenAmount": "<base-units>",
"lockAmount": "<base-units>",
"status": "prepared"
} /api/v1/launch/atomic returns the single create, buy, and Streamflow lock transaction. Both endpoints are bound to the authenticated browser workflow.Errors and limits
- 400 for invalid parameters
- 401 for a missing authenticated session on protected endpoints
- 403 when authenticated identity does not match requested account data
- 404 for an unknown directory record
- 429 when a route rate limit is exceeded
- 5xx when an upstream service or server operation fails
Rate-limit values are operational settings and may change. Clients should honor status codes, use bounded retries with backoff, and never interpret a failed response as a successful launch or lock.