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.
Launch Tokens
For a normal integration, you only need this:The input
creatordefaults to the wallet that signs. API launches are attributed to whoever owns the API key, but the signed creator wallet is recorded on-chain as provenance.namemust be 32 bytes or less, NFKC-normalized, and free of zero-width / RTL / mixed-script characters. Reserved names like"Solana"or"Bitcoin"are rejected.symbolmust be 10 bytes or less, no spaces, and not a reserved ticker (SOL,USDC,BLNK).metadataUrimust be a compactipfs://orar://URI of 72 bytes or less. It must already resolve to public JSON with animagefield before build. Gateway URLs (e.g.https://gateway.pinata.cloud/...) are rejected — see Metadata URI Rules.creatorFeeSplitcan have one to five unique wallets and must total exactly 10,000 bps (100%). 100 bps = 1%, so a7,000 / 3,000split is 70% / 30%.staking.shareBpsoptionally enables staking in the launch bundle. Valid range: 100 to 10,000 bps, where 2,000 means 20% of the creator’s fee share routes to stakers.
Metadata must be public before build
Blank resolves metadata before it creates the transaction bundle. For automated launchers, treat this as part of your launch pipeline:- Upload the image.
- Upload metadata JSON that points to that image.
- Poll a public gateway until the metadata URL returns HTTP 200 JSON with the expected
image. - Call
blank.launch.create()with the canonicalipfs://...orar://...URI, not the gateway URL.
LAUNCH_BUILD_METADATA_UNRESOLVABLE.
What the SDK actually does
When you callblank.launch.create(), it runs through four steps:
- Calls
POST /api/v1/launch/buildwith your input. - Gets back a server-built versioned (v0) Solana transaction bundle — sometimes one transaction, sometimes more.
- Asks your wallet to sign the bundle.
- Calls
POST /api/v1/token/submitwith the signed transactions and returns the result.
What build returns under the hood
If you call /api/v1/launch/build directly, you’ll see:
launchIdmintAddressdbcConfigpoolAddressfeeCollectorfeeVaultfeeSplitConfigstakingPoolAddress(ornullwhen staking was not enabled at launch)lookupTable(ornull)submissionIntentIdpayload.kind— currently"solana-v0-transaction-bundle"payload.transactions— base64-encoded unsigned v0 transactionspayload.requiredUserSigner— the wallet that has to signexpiresAt
Idempotency (safe retries)
Pass anidempotencyKey (any unique-per-attempt string up to 200 bytes) and the worker will dedupe short-window build retries for you for 5 minutes. Useful when network blips make you unsure whether the original build call finished.
- Same key, same body, original already finished → the cached response is replayed (HTTP 201). No new vanity mint is consumed.
- Same key, original still in flight → returns
409 IDEMPOTENCY_KEY_IN_FLIGHT. Wait it out. - Same key, original failed → the lock is released and your retry proceeds normally.
Retrying after a failed submit
If your wallet has already signed but the relay step fails, or a Jito bundle is accepted but does not land before expiry, the SDK throwsLaunchSubmissionFailedError. That error keeps the signed transactions and the submission intent ID, so you can retry without prompting the wallet again:
A note on transports
Basic launches must go through a Jito bundle withbundleOnly: true. Jito bundles are atomic transaction groups designed to land together — this is what keeps a launch from getting partially executed.
The SDK picks the right transport for you. The server will reject submissions that try to use transport: "auto" directly.