Public data, explicit boundaries

Read endpoints are public. Launch and upload endpoints use the authenticated browser session and do not form a standalone public launch SDK.

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.

API lock fields are not fresh on-chain verification. Consumers must validate the lock transaction and contract state independently.

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 shipped
  • sort: newest or oldest
  • limit: 1 to 100, default 20
  • offset: zero-based result offset
bash
curl "https://lckd.tech/api/v1/feed?sort=newest&limit=20"
json
{
  "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.

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

bash
curl "https://lckd.tech/api/v1/token/<mint-address>/lock"
json
{
  "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>"
  }
}
A time lock reports 0 percent unlocked before its cliff and 100 percent at or after the unlock timestamp. Verify the linked Streamflow account independently before using this record for alerts, access control, or trading decisions.

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.

bash
curl "https://lckd.tech/api/v1/dev/<github-username>"
json
{
  "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.

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

json
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
}
json
{
  "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"
}
The exact lookup setup must be signed, checkpointed, and finalized before /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.