Token Launching
Partners can deploy tokens through two distinct flows: org-level deploys using your partner API key, and wallet-level deploys where provisioned wallets deploy on their own behalf. Both hit the same endpoint (POST /token-launches/deploy) but differ in authentication, signing, and fee routing.
For the full interactive endpoint reference (fields, validation, error codes), see Deploy a token →.
Partner token launches are Base-only: both flows below default to Base, and a chain other than base is rejected with 400. So are provider: "bankr_v3", degenMode, and a paired quote token or stock (pairedTokenAddress / pairedStockAddress). Partner launches carry no creator vesting — the full supply goes into the pool, so disableVesting has no effect.
Two Deploy Flows
Org-Level Deploys
Your server calls the deploy endpoint with X-Partner-Key. The org's deployment wallet signs the transaction, and the partner fee split is applied automatically.
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-Partner-Key: bk_ptr_YOUR_KEY" \
-d '{
"tokenName": "My Token",
"tokenSymbol": "MTK",
"feeRecipient": {
"type": "wallet",
"value": "0x87be4dA49869fD055d5a60cAc2a6Dc61fdd3052D"
}
}'
- Auth:
X-Partner-Key - Signing wallet: Your org's deployment wallet
feeRecipient: Required — the org wallet signs, so you must specify where the creator's fee share goes- Fee split: Includes your partner share (from org's
tokenLaunchconfig)
Wallet-Level Deploys
A provisioned wallet with tokenLaunchApiEnabled calls the endpoint using its own X-API-Key. The wallet signs the transaction itself.
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-API-Key: bk_usr_WALLET_KEY" \
-d '{
"tokenName": "User Token",
"tokenSymbol": "UTKN"
}'
- Auth:
X-API-Key(from a provisioned wallet) - Signing wallet: The provisioned wallet itself
feeRecipient: Optional — defaults to the wallet's own address- Fee split: Includes your partner share — the wallet's parent org is resolved automatically via provisioning, so the same fee config applies
- Requires:
tokenLaunchApiEnabledpermission on the wallet's API key +tokenLaunchApicapability on the org
Validated org-level and provisioned-wallet launches are exempt from the retail launch-wallet requirements (a minimum wallet age and a minimum native ETH balance on the launch chain, both runtime switches). The exemption is revalidated at launch: the organization must be active with its token-launch capability and configuration enabled, and a provisioned wallet must remain active and linked to that organization.
The partner fee configuration still applies, gas sponsorship is available when the organization's sponsorship policy allows it, and partner-specific rate limits apply. The universal limit of 3 counted launch attempts per Bankr wallet per rolling 24 hours still applies.
Both partner flows are also exempt from the 2%-per-wallet balance cap that non-partner launches enforce for their first five minutes.
Comparison
Org-Level (X-Partner-Key) | Wallet-Level (X-API-Key) | |
|---|---|---|
| Signing wallet | Org deployment wallet | Provisioned wallet |
feeRecipient | Required | Optional (defaults to wallet) |
| Partner fee share | Yes — from org config | Yes — resolved from provisioning org |
| Who controls the deploy | Your server | The provisioned wallet holder |
| Use case | You deploy on behalf of users | Users deploy their own tokens |
Fee Recipient Resolution
The feeRecipient field supports resolving addresses from multiple identifier types:
type | value example | Resolution |
|---|---|---|
wallet | 0x5f8D...E508 | Used directly |
x | 0xdeployer | Resolves Twitter/X username to their Bankr wallet |
farcaster | dwr.eth | Resolves Farcaster username to their verified EVM address |
ens | vitalik.eth | Resolves ENS name to underlying address |
Response
Both flows return the same response shape:
Response 201
{
"success": true,
"provider": "doppler",
"tokenAddress": "0x1234...abcd",
"poolId": "0xabcd...1234",
"txHash": "0x9876...fedc",
"chain": "base",
"feeDistribution": {
"creator": { "address": "0x87be...052D", "bps": 5700 },
"bankr": { "address": "0xBankr...", "bps": 1805 },
"partner": { "address": "0xYour...Fee", "bps": 1805 },
"alt": { "address": "0xAlt...", "bps": 190 },
"protocol": { "address": "0xAirlock...", "bps": 500 }
}
}
The feeDistribution object shows exactly how the 1.2% swap fee is split. Values are in basis points (10,000 = 100%). Your partner share appears under the partner key in both deploy flows — for wallet-level deploys, the partner org is resolved automatically from the wallet's provisioning relationship.
Fee Wallet Configuration
Your fee wallet is the address that receives your partner share of trading fees from both deploy flows. It must be configured before either flow can deploy — until then a deploy fails with 400 "Partner token launch misconfigured".
Set or update your fee wallet from the Token Launch tab in your partner dashboard. The fee wallet must be a valid Ethereum address.
Retroactivity
Changing the fee wallet only affects future launches. The beneficiary for each token is baked into the deploy transaction at launch time and stored on-chain in the Fees Manager contract. Updating the Token Launch tab setting later:
- Applies to every token deployed after the change
- Does not update beneficiaries on tokens already deployed
- Does not redirect fees already accrued in existing pools
This is intentional — it means you can swap to a new fee wallet (e.g. moving from an EOA to a multisig) without worrying about inadvertently affecting launches already in the wild.
To redirect fees on an existing token, the current beneficiary must call updateBeneficiary(poolId, newBeneficiary) on the Fees Manager contract on-chain. See Transferring Fees to a New Wallet for the REST helper, Bankr-wallet flow, and a walkthrough of migrating a partner fee wallet to a multisig.
Fee Split Types
Standard Split
Most partners get a percentage of Bankr's portion of fees. The feeSplitPercentage field (0–100) determines what fraction of Bankr's share goes to you.
For example, with feeSplitPercentage: 50:
- Creator: 57% (5,700 bps)
- Partner: ~18% (1,805 bps) — half of Bankr's share
- Bankr: ~18% (1,805 bps) — remaining half
- Ecosystem (
alt): 1.9% (190 bps) - Protocol: 5% (500 bps)
Custom Split
Partners with custom arrangements have a customFeeSplitBps object with exact basis-point allocations for each beneficiary. This overrides the standard percentage calculation.
Both split types are visible in your organization's tokenLaunch config and in every deploy response's feeDistribution.
Claiming Fees
Fees accumulate on-chain in the Uniswap V4 pool and must be claimed by the wallet holder. The Bankr CLI's claim-wallet command scans all launches where your wallet is a beneficiary and claims in bulk:
# Install the CLI
npm install -g @bankr/cli
# Set your partner wallet private key
echo "BANKR_PRIVATE_KEY=0xYourPartnerWalletKey" > .env
# Scan all launches and claim fees
bankr fees claim-wallet --all --yes
This works across all beneficiary roles (partner, creator, etc.). See Claiming Fees for the full guide including the interactive fee dashboard (bankr fees).
Simulate Before Deploying
Test your integration without broadcasting a transaction by setting simulateOnly: true. Works with both deploy flows:
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-Partner-Key: bk_ptr_YOUR_KEY" \
-d '{
"tokenName": "Test Token",
"tokenSymbol": "TEST",
"feeRecipient": { "type": "wallet", "value": "0x..." },
"simulateOnly": true
}'
Returns the predicted tokenAddress and feeDistribution with status 200 instead of 201, and simulated: true. No transaction is broadcast, no gas is consumed, and no launch-quota slot is reserved. Retail simulations are capped at 20 per wallet per rolling 24 hours; validated partner deploy paths are exempt from that cap, as they are from the other retail gates.
Rate Limits
| Scope | Limit |
|---|---|
| Org-level deploys, per fee recipient | 1 deploy per minute, 1 in flight |
| Wallet-level deploys, per wallet API key | 1 deploy per minute, 1 in flight |
| Per fee recipient address, all accounts | 20 deploys per 24 hours |
| Per signing Bankr wallet | 3 counted launch attempts per rolling 24 hours |
| Wallet-level deploys, per client IP | Roughly 10 successful deploys per 24 hours |
Org-level limits are keyed by fee recipient, not by partner key, so each end-user address has its own allowance, and org-level deploys are exempt from the per-IP cap. Wallet-level deploys authenticate like any user API key, so every successful deploy your server makes for a provisioned wallet counts toward that server IP's cap. For the 3-attempt wallet quota, an org-level deploy uses the organization deployment wallet's quota, while each provisioned wallet has its own. All 3 attempts are eligible for gas sponsorship when otherwise allowed by the organization's sponsorship policy.
A wallet quota slot is handed back whenever the launch provably never reached the chain — validation, resolution, pricing and metadata pinning. Submit-stage failures release the slot only when Bankr can prove nothing was broadcast; a signer error or timeout that leaves that in doubt keeps the slot counted. The per-fee-recipient daily cap counts the same way. Simulations do not consume a slot.
See Deploy a token → for the interactive endpoint reference.
Launched Tokens Dashboard
The Launched Tokens tab in your partner dashboard shows all tokens deployed under your organization. Use it to monitor token performance and track deployment activity.
Filtering by Source
| Tab | Shows |
|---|---|
| All | Every token launched under your organization |
| Org Wallet | Tokens deployed via X-Partner-Key (org-level deploys) |
| Provisioned Wallets | Tokens deployed by provisioned wallets with tokenLaunchApiEnabled |
Each token displays its name, address, market cap, 24h volume, price changes, transaction count, and deployment time. A badge indicates whether the token was launched from the org wallet or a provisioned wallet.
Sorting
Click column headers to sort by market cap, volume, price change, transaction count, or deployment time. Results are paginated with infinite scroll.
API Access
The dashboard reads this list with your signed-in session (any role), not the partner key:
GET /partner/:orgId/launched-tokens?scope=all&sortBy=marketCapUsd&order=desc&limit=50
| Param | Values | Default | Description |
|---|---|---|---|
scope | all, org, provisioned | all | Filter by launch source |
sortBy | deployedAt, marketCapUsd, vol24h, priceChange24h, txCount24h, lastTradeAt (also vol / priceChange over 1m, 5m, 1h, 6h) | deployedAt | Sort column |
order | asc, desc | desc | Sort direction |
limit | 1–100 | 50 | Results per page |
cursor | string | — | Pagination cursor from previous response |