Documentation Index
Fetch the complete documentation index at: https://blank.build/docs/llms.txt
Use this file to discover all available pages before exploring further.
HTTP Reference
Most integrations should just use the SDK. This page is for debugging, backend adapters, or anyone who wants to see exactly what the SDK is doing under the hood.
The API is versioned at /api/v1/.... Stable endpoints live under that prefix. Unversioned paths (e.g. /api/token/...) exist for the blank.build web UI and are not part of the public stability contract — don’t depend on them.
Launch
| Method | Path | Auth | Use |
|---|
POST | /api/v1/launch/build | API key | Build a server-signed launch transaction bundle. Accepts optional Idempotency-Key header. |
GET | /api/v1/launch/{launchId} | API key | Read launch payload status. |
POST | /api/v1/token/submit | API key + wallet signature | Submit signed transactions by submissionIntentId. SDK-internal for normal apps. |
Build request body:
{
"creator": "<creator-wallet>",
"name": "Example Token",
"symbol": "EXAMPLE",
"metadataUri": "ipfs://bafy.../metadata.json",
"antiSnipeEnabled": true,
"creatorFeeSplit": [
{ "walletAddress": "<wallet-1>", "bps": 7000 },
{ "walletAddress": "<wallet-2>", "bps": 3000 }
],
"staking": {
"shareBps": 2000
},
"launchMode": "basic"
}
bps is basis points: 100 bps = 1%, and the splits in any single launch must total 10,000 bps (100%).
staking.shareBps is optional. When present, the staking pool is created inside the launch bundle and the build response includes stakingPoolAddress.
Build response fields are all live values from the reserved launch: launchId, mintAddress, dbcConfig, poolAddress, feeCollector, feeVault, feeSplitConfig, stakingPoolAddress, lookupTable, submissionIntentId, payload, and expiresAt. expiresAt is the blockhash window for the unsigned bundle; the high-level SDK result intentionally does not expose it after submit succeeds.
Submit request body:
{
"submissionIntentId": "<uuid>",
"transactions": ["<base64-signed-v0-transaction>"],
"transport": "jito",
"bundleOnly": true
}
Basic launches must use transport: "jito" and bundleOnly: true. The SDK sets these for you automatically — you only need to provide them if you’re calling the HTTP endpoint directly.
Staking
| Method | Path | Auth | Use |
|---|
POST | /api/v1/token/{mint}/staking/enable | API key + controller signature | Enable staking after launch for tokens launched without staking. |
POST | /api/v1/token/{mint}/staking/top-up | API key + controller signature | Build a creator-funded staking bonus transaction. |
GET | /api/token/{mint}/staking/top-up/preview?amount=1.5 | User token | Preview a creator-funded staking bonus (web-only path). |
Enable body (here, 2000 bps = 20% of the creator’s fee share routed to stakers):
{ "initialAllocationBps": 2000 }
Top-up body (amount in SOL, as a string):
Public reads
| Method | Path | Auth | Use |
|---|
GET | /api/v1/developers/solana/manifest | None | Read active Solana config and limits. |
GET | /api/v1/token/{mint}/fees | None | Read current fee status. |
GET | /api/v1/token/{mint}/fee-history | None | Read fee distribution history. |
Public reads are rate-limited by IP. Use them for display and diagnostics — they don’t prove who the user is, so don’t use them as a stand-in for auth.