DocsAPI

API overview & keys

Trade, launch and run tasks from your own code with an API key — what a key can do, how to call it, and how to keep it safe.

The VortexDeployer API does everything the app does: buy, sell, launch, run tasks, read your wallets and PnL, and stream live trades. Every call acts as your account, so a trade made from code shows up on your Dashboard, Portfolio and Tasks pages exactly like one made by hand.

Open API in the header, the footer or the avatar menu to manage keys, see usage, read these docs and request new API features.

Base URLs#

WhatURL
RESThttps://evm.vortexdeployer.com/evm/api/v1
Live streamswss://evm.vortexdeployer.com/evm/ws
OpenAPI 3.1https://evm.vortexdeployer.com/evm/api/v1/openapi.json — the whole REST surface, for Postman, Insomnia or a client generator. No key needed
MCPhttps://evm.vortexdeployer.com/evm/api/v1/mcp — the same operations as tools for Claude, Cursor or any MCP client (MCP for AI agents)
API indexGET https://evm.vortexdeployer.com/evm/api/v1 — these addresses as JSON, no key needed
For agentshttp://localhost:3000/llms.txt — the docs index for AI agents; every page is also Markdown at its address plus .md (Build an agent on the API)

Every REST call sends the key as a bearer token:

curl https://evm.vortexdeployer.com/evm/api/v1/me \
  -H "Authorization: Bearer vd_1a2b3c4d_…"

A key looks like vd_1a2b3c4d_…. The short part after vd_ is the prefix, shown in the hub so you can tell keys apart; the rest is the secret.

GET /me returns your user, and the key's name, scopes and limits:

{
  "user": { "id": "1", "username": "yourname" },
  "key": {
    "id": "29",
    "name": "my trading bot",
    "prefix": "1a2b3c4d",
    "scopes": ["read", "trade", "stream"],
    "settings": {},
    "restricted": false
  }
}

restricted is true when the key has any limit (a cap, a wallet list or sandbox). A restricted key cannot create, edit or start tasks — see Per-key limits.

What every answer looks like#

  • JSON, camelCase. Every field is camelCase (createdAt, poolAddress, expectedOut), in answers and in the bodies you send. Wallet ids and mints used as map keys are left exactly as they are.
  • Amounts are strings when they are in a chain's smallest unit (lamports, wei, token base units), so nothing is rounded. Amounts in whole coin (amountSol, devBuySol) are numbers.
  • Ids are strings ("812"), including numeric ones.
  • Lists are wrapped: { "wallets": […] }, { "tasks": […] }, { "executions": […] }. The long ones take ?limit=&offset= and report X-Total-Count — see Paging long lists.
  • Every error carries a stable code you can switch on, a human error and a traceId — see Limits, retries & errors.
  • Dates are ISO-8601 strings in UTC. OPTIONS on any route answers 204 with the allowed methods.

The full contract, route by route, is the OpenAPI document above.

Create a key#

  1. APIKeysCreate key.
  2. Name it after the bot or script that will use it.
  3. Tick the scopes it needs, and nothing more.
  4. Set limits if you want them (below).
  5. Enter your account password if you have one set. Keys that can move funds need it.
  6. Copy the secret. It is shown once. If you lose it, revoke the key and create a new one.
The key is your account

Anyone holding a key with trade or launch can spend from your wallets. Never put a key in a website, a public repo or a shared chat. Revoke it at once if it leaks.

Scopes#

ScopeAllows
readWallets, balances, portfolio, projects, PnL, task lists and details
tradeBuy, sell, batches, creating wallets, creating and running tasks
launchLaunching tokens
streamThe txs and pnl live streams

A call outside the key's scopes returns 403.

Per-key limits#

All limits are optional. Set them when you want a key to do less than your account can.

SettingEffect
Max per buyRefuses any single buy above this amount of the chain's coin (SOL on Solana, ETH on EVM)
Daily capRefuses buys once the key has spent this much today (UTC). A buy that was sent counts even if it failed on chain
IP allowlistThe key only works from these IP addresses or ranges
Default slippageUsed when a call leaves slippageBps out
Allowed walletsThe key may only trade from these wallet ids, and cannot import private keys
SandboxOnly dryRun: true calls go through. Nothing is ever sent on chain

A key with any cap, a wallet list or sandbox is a restricted key. Task amounts run later and can't be checked against a cap up front, so a restricted key cannot create, edit or start tasks, and may only simulate launches. Use a key with no limits for those.

Start in sandbox

Create a sandbox key first and send your whole flow with dryRun: true. When it behaves the way you expect, create a real key.

Revoke, edit, delete#

  • Revoke stops the key on its next call and closes its live streams. It can't be undone.
  • Revoke all stops every key on the account in one go.
  • Edit changes name, scopes and limits. The key's open streams close, so reconnect after editing.
  • Signing out of the app does not revoke keys.

Revoked keys stay listed under Revoked so you can still see their past usage.

Usage#

APIUsage shows calls per day, how many were accepted, refused (4xx) or failed (5xx), and the busiest keys and routes.

See also#