API overview & keys
Make an API key, find the API addresses and send your first call.
The VortexDeployer API lets your own code or an AI agent do what the app does: buy, sell, launch tokens, run tasks, read your wallets and PnL, and buy wallets from the Wallet Marketplace. Every call uses an API key that you make in the app.
Addresses#
| What | Address |
|---|---|
| REST base | https://api.vortexdeployer.com/api/v1 |
| Live updates | wss://api.vortexdeployer.com/ws |
| OpenAPI document | https://api.vortexdeployer.com/api/v1/openapi.json |
| MCP server | https://api.vortexdeployer.com/api/v1/mcp |
| Index of all addresses | GET https://api.vortexdeployer.com/api/v1 |
The index and the OpenAPI document need no key. Every other call needs one.
The API answers only at the address above. A key sent to any other host gets 404 with a message that names the right host.
Make a key#
- Sign in at
https://vortexdeployer.comand open API from your account menu. You can also go straight tohttps://vortexdeployer.com/developers. - On the Keys tab, click Create key.
- Type a Name, for example "my trading bot". Tick the scopes the key needs.
readis ticked for you. - Set Limits if you want them. They are all optional.
- Type your Account password if the form asks for it. It asks when the key can trade or launch and your account has a password.
- Click Create key, then Copy key.
The app shows the full key only once. A lost key cannot be recovered. Revoke it and make a new one.
A key looks like vd_1a2b3c4d_…. The 8 characters after vd_ are its public prefix. The key's row shows them, so you can tell keys apart.
You can have up to 20 active keys. At 20, Create key is greyed out until you revoke one.
Keys are made, edited and revoked only in the app, while you are signed in. An API key cannot manage keys.
Your first call#
Send the key as a bearer token in the Authorization header:
curl -s https://api.vortexdeployer.com/api/v1/me \
-H "Authorization: Bearer vd_1a2b3c4d_…"GET /me tells you who owns the key and what it may do:
{
"user": { "id": "1", "username": "yourname" },
"key": {
"id": "7",
"name": "my trading bot",
"prefix": "1a2b3c4d",
"scopes": ["read", "trade"],
"settings": { "maxSolPerTrade": 0.5, "dailySolCap": 5 },
"restricted": true
}
}How answers look#
- Answers are JSON. Field names are camelCase, like
walletId. - Ids are strings of digits, like
"812". - Fields that end in
RaworLamportsare strings in base units.amountSolis a plain number in SOL. - An error has a stable
code, a readableerrorand atraceId. Checkcodein your program; theerrortext can change. See Limits, retries & errors. - Long lists take
?limit=(1–500, default 200) and?offset=. The full count is in theX-Total-Countheader.
Scopes#
A scope is a permission you give a key. Give each key only the scopes it needs.
| Scope | Lets the key |
|---|---|
read | Read wallets, balances, portfolio, projects, tasks, events and PnL. Get quotes and checks. Browse the Wallet Marketplace and read your orders. Listen to task updates. |
trade | Buy, sell, batch, convert, burn, lock and claim. Add, edit and delete wallets, groups, projects, tasks and KOLs. Order wallets from the Wallet Marketplace. |
launch | Launch tokens and upload token info (POST /launch, POST /launch/metadata). |
stream | Listen to live trades, live PnL and live wallet balances. |
A call outside the key's scopes gets 403 insufficient_scope.
Limits on a key#
Limits keep a key safe if it leaks or an agent makes a mistake. Set them under Limits in the key form. The API name of each setting is in brackets.
- Max per buy (
maxSolPerTrade) — the largest single buy, in SOL or ETH. Up to 1,000,000. A bigger buy gets403 over_trade_cap. - Daily cap (
dailySolCap) — the total of real buys per chain per UTC day. Up to 10,000,000. A buy that would pass it gets403 over_daily_cap. - Default slippage (
defaultSlippageBps) — the slippage used when a call sends none. 1–10000 basis points. - IP allowlist (
ipAllowlist) — up to 32 IP addresses or ranges. Empty means any IP. A call from anywhere else gets403 ip_not_allowed. - Allowed wallet ids (
allowedWalletIds) — the only wallets the key may use. Other wallets get403 wallet_not_allowed. A private key in the body gets403 private_key_not_allowed. - Sandbox (
sandbox) — only dry runs. A real call gets403 sandbox_key.
The daily cap counts a buy before it is sent. If the call is refused or nothing was sent, the amount is given back. If the buy was sent, it still counts, even if it failed on chain.
Restricted keys#
A key with a max per buy, a daily cap, a wallet list or sandbox on is a restricted key. GET /me shows "restricted": true. A restricted key:
- cannot create, edit, start or resume tasks, or send a mixer step;
- can send only dry-run launches and dry-run close-outs.
These calls get 403 key_restricted. Use a separate key without limits for tasks.
Edit, revoke and usage#
- Edit — change the name, scopes or limits. Giving a key more power asks for your password again. Saving closes the key's open live connections, so your program must reconnect.
- Revoke, then Confirm revoke — the key stops working at once. It cannot be restored. It moves to the Revoked keys list.
- Revoke all, then Revoke all keys — every app and agent using your keys stops at once.
- Usage tab — calls per day, per key and per route, for 7, 30 or 90 days. It counts OK, Refused (4xx) and Failed (5xx) calls.
- Feature requests tab — ask for a missing endpoint, field or live topic.
A key with trade or launch can spend the funds in your wallets. Buys, sells and batches are real unless you send dryRun: true. Launches are dry runs unless you send dryRun: false. Keep keys on your server, never in a web page, and add limits.