OpenBidDeveloper tools
Build with OpenBid.
Token launches, LBP trading and fee collection for your app.
Use the API, TypeScript SDK or agent tools.
Base URL
All paths are relative to this origin, e.g.
POST https://v2.based.bid/api/create-lbp. The older static / cdn.based.bid origins serve the previous version of the API.| Environment | Origin |
|---|---|
| based.bid v2 | https://v2.based.bid |
API keys & rate limits
Every request needs an API key, sent as
No key: 401. Pending or rejected key, or the wrong board: 403. Over the limit: 429.
X-API-Key: key or Authorization: Bearer key. Create one under Manage API keys. Board owners create their board key there too; it is the key for launches on that board.No key: 401. Pending or rejected key, or the wrong board: 403. Over the limit: 429.
| Key | Requests / second | Requests / day |
|---|---|---|
| User key | 1 | 1,000 |
| Board key · Starter | 10 | No cap |
| Board key · Growth | 25 | No cap |
| Board key · Scale | 50 | No cap |
Create a token
POST /api/create-flash
Builds an unsigned EVM transaction for launching a token straight to the DEX of your choice.
Attributes
Fields get sent through the data object.
chainId(number)required4663: Robinhood56: BNB Chain8453: Base5042: Arc1: Ethereum
creatorAddress(address)requiredThe launching wallet (pool owner and the hook's creator fee row). Or send header `X-Creator-Address`.
token(object)requiredToken identity and metadata.
dex(object)requiredPool venue and LP fee.
sale(object)Board, starting market cap and anti-whale limits.
Response
Send
calls[] in order — each is a ready { to, data, value } (an ERC-20 quote approve when the allowance is short, then the launch). A Fee Builder launch whitelist comes back as followUp.whitelist: send that body to once the launch confirmed. The address stays leased to you until vanityLease.expiresAt — settle it with . dividenedFlash appears only for reward-token templates — the token deploys there when fees.v4.rewardsPct > 0.{
"ok": true,
"functionName": "customFlashLaunchV4",
"address": "0x…diamond",
"args": [ … ],
"value": "100000000000000000",
"calldata": "0x…",
"chain": { "id": 8453, "symbol": "base" },
"warnings": [],
"tokenOption": { "tradingStart": 0, "tradingEnd": 0 },
"predictedTokenAddress": "0x…b1d…",
"vanityLease": {
"id": "api-preview:6f1c…",
"chainId": 8453,
"addresses": ["0x…b1d…"],
"expiresAt": "2026-10-08T12:00:00.000Z"
},
"calls": [
{ "key": "launch", "to": "0x…diamond", "data": "0x…", "value": "100000000000000000" }
],
"followUp": {
"whitelist": {
"method": "POST",
"path": "/api/hook-whitelist",
"body": { "data": { … } },
"when": "after-launch-confirmed"
}
},
"vanityMintAddresses": {
"flash": "0x…b1d…",
"dividenedFlash": "0x…b1d…"
},
"context": {
"baseToken": "0x0000000000000000000000000000000000000000",
"baseTokenDecimals": 18,
"liquidityMarketCapPercent": 20,
"isNativeRaise": true
}
}