Partner Deploy API
Deploy tokens on behalf of your users via a single REST endpoint. Partners authenticate with an X-Partner-Key header and receive a share of on-chain trading fees automatically. Fees accumulate and must be claimed by fee recipient wallet.
Authentication
Include your partner key on every request:
X-Partner-Key: bk_YOUR_PARTNER_KEY
No other authentication is required. Your partner key must be provisioned with a deployment wallet — contact the Bankr team to get set up.
Deploy a Token
POST /token-launches/deploy
Request Body
{
"tokenName": "My Token",
"tokenSymbol": "MTK",
"description": "A token launched via the Bankr API",
"image": "https://example.com/token-logo.png",
"tweetUrl": "https://x.com/user/status/123456",
"websiteUrl": "https://mytoken.xyz",
"feeRecipient": {
"type": "wallet",
"value": "0x87be4dA49869fD055d5a60cAc2a6Dc61fdd3052D"
},
"simulateOnly": false
}
Fields
| Field | Type | Required | Description |
|---|---|---|---|
tokenName | string | Yes | Token name, 1-100 characters |
tokenSymbol | string | No | Ticker symbol, 1-10 characters. Defaults to first 4 characters of tokenName |
description | string | No | Short description, max 500 characters. Stored in on-chain metadata |
image | string | No | URL to a token logo image. Uploaded to IPFS as part of token metadata |
tweetUrl | string | No | URL to a tweet about the token. Stored in on-chain metadata |
websiteUrl | string | No | Token website URL. Stored in on-chain metadata |
feeRecipient | object | Yes | Who receives the creator's share of trading fees. See below |
simulateOnly | boolean | No | When true, returns the predicted token address without broadcasting. Default: false |
Fee Recipient
The feeRecipient field specifies who receives the creator reward from trading fees. It supports resolving addresses from multiple identifier types:
type | value example | Description |
|---|---|---|
wallet | 0x5f8DA8F88eC81e27f2E22fCB9CA5D926c595E508 | A raw EVM address |
x | 0xdeployer | Twitter/X username — resolves to their Bankr wallet |
farcaster | dwr.eth | Farcaster username — resolves to their verified EVM address |
ens | vitalik.eth | ENS name — resolves to the underlying address |
feeRecipient is required when deploying via partner key. The partner wallet signs the transaction, so the API needs to know where the creator's fee share should go.
Response
Status: 201 Created (or 200 OK when simulateOnly: true)
{
"success": true,
"tokenAddress": "0x1234...abcd",
"poolId": "0xabcd...1234",
"txHash": "0x9876...fedc",
"activityId": "665f1a2b3c4d5e6f7a8b9c0d",
"chain": "base",
"feeDistribution": {
"creator": { "address": "0x87be...052D", "bps": 5700 },
"bankr": { "address": "0xBankr...", "bps": 1805 },
"partner": { "address": "0xYour...Fee", "bps": 1805 },
"ecosystem": { "address": "0xAlt...", "bps": 190 },
"protocol": { "address": "0xAirlock...", "bps": 500 }
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Always true on success |
tokenAddress | string | Deployed token contract address on Base |
poolId | string | Uniswap v4 pool ID for the token's bonding curve |
txHash | string | Transaction hash. Absent when simulateOnly: true |
activityId | string | Internal activity record ID |
chain | string | Always base |
simulated | boolean | Present and true when simulateOnly was used |
feeDistribution | object | On-chain fee beneficiary breakdown |
Fee Distribution
The feeDistribution object shows how the 1.2% swap fee is split among beneficiaries. Values are in basis points (10,000 = 100%).
| Role | Description |
|---|---|
creator | The feeRecipient address — receives the creator's share (57%) |
bankr | Bankr platform fee |
partner | Your partner fee share, split from Bankr's portion based on your configured percentage |
ecosystem | Bankr ecosystem fund |
protocol | Doppler protocol fee (5%) |
Errors
| Status | Error | Cause |
|---|---|---|
400 | Validation error | Invalid or missing required fields |
400 | Fee recipient resolution failed | Could not resolve feeRecipient to an address |
400 | feeRecipient is required | Missing feeRecipient with partner key auth |
401 | Invalid partner key | Key not found or inactive |
403 | Partner key not configured for deployment | Key was not provisioned with a wallet |
403 | Write operations require a read-write API key | Key is read-only |
429 | Rate limit exceeded | More than 50 deploys in 24 hours (100 for Bankr Club) |
Examples
Simulate a deploy
Test your integration without broadcasting a transaction:
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-Partner-Key: bk_YOUR_KEY" \
-d '{
"tokenName": "Test Token",
"tokenSymbol": "TEST",
"feeRecipient": {
"type": "wallet",
"value": "0x87be4dA49869fD055d5a60cAc2a6Dc61fdd3052D"
},
"simulateOnly": true
}'
Live deploy with metadata
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-Partner-Key: bk_YOUR_KEY" \
-d '{
"tokenName": "My Token",
"tokenSymbol": "MTK",
"description": "Launched via partner integration",
"image": "https://example.com/logo.png",
"websiteUrl": "https://mytoken.xyz",
"feeRecipient": {
"type": "wallet",
"value": "0x87be4dA49869fD055d5a60cAc2a6Dc61fdd3052D"
}
}'
Claiming Your Partner Fees
Your partner wallet accumulates a share of trading fees from every token deployed through your integration. Fees accrue on-chain and must be claimed by the wallet holder.
The easiest way to claim is with the Bankr CLI's claim-wallet command, which 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 and claim all fees
bankr fees claim-wallet --all --yes
This works for any beneficiary role (partner, creator, etc.) and handles all the on-chain resolution automatically. See Claiming Fees for more details.
Route fees to a Twitter user
curl -X POST https://api.bankr.bot/token-launches/deploy \
-H "Content-Type: application/json" \
-H "X-Partner-Key: bk_YOUR_KEY" \
-d '{
"tokenName": "Community Token",
"feeRecipient": {
"type": "x",
"value": "0xdeployer"
}
}'