API changelog
Every change to the public API, newest first, with what to update in your code.
The API is versioned in the path (/api/v1). Within v1, fields are only ever added, never removed or renamed, except where this page says so. Machine-readable error codes are stable; the human error text is not.
2026-09-19 — New address, no write limits#
Changed
- The API moved to
https://api.vortexdeployer.com: REST basehttps://api.vortexdeployer.com/api/v1, streamswss://api.vortexdeployer.com/ws. The olddev.vortexdeployer.comaddress was retired the same day — calls there now answer404naming this address; update your config. - Writes are no longer rate-limited. Buys, sells, batches and launches have no per-minute cap anymore, per key or per account. Only reads (
GET) keep their bucket (300/min per key, 600/min per account), andX-RateLimit-*headers now ride read answers only. If you paced trades against the old 60/min, you can stop. - MCP
_meta.rateLimitnow appears on read tool calls only.
2026-09-19 — OAuth 2.1 for the MCP endpoint#
Added
- The MCP endpoint is now also an OAuth 2.1 authorization server, so OAuth-only MCP clients — Claude.ai custom connectors among them — can connect: discovery (
/.well-known/oauth-authorization-serverand…/oauth-protected-resourceat the API host root), dynamic client registration (POST /v1/oauth/register), authorization code + PKCE (S256 only) with consent in the webapp, rotating refresh tokens and revocation. See OAuth for connectors. - A grant is bound to one of your API keys, picked at consent. The
vdo_…access token it issues works everywhere avd_key does — MCP, REST, streams — with that key's scopes and caps; revoking the key ends the grant. - A
401onPOST /mcpnow carries aWWW-Authenticateheader pointing at the protected-resource metadata (RFC 9728).
Changed
- Nothing about
vd_keys: they work exactly as before, and every existing client needs no update.
2026-09-17 — Faster two-sided Volume, trading-bot markers#
Added
volumetasks in the Mixed style (a config with nomode, ormode: "mixed"):maxInFlight(1–50, trades out at once, one per wallet),maxSameSideStreakandmaxNetBuySol(0 = off). See Volume.markerPlatformsonvolume(Mixed) andwarmupconfigs: any ofPHOTON,TROJAN,BULLX,AXIOM1,AXIOM2, no repeats, default[]. Each trade also sends 10 lamports to that bot's fee wallet. Solana only.
Changed
minDelayMs/maxDelayMson a Mixedvolumeconfig now start at 20 (was 250) and are the gap between sends, not between confirmations.maxNetBuySolmeasures what the run still holds — the SOL it paid for the tokens it hasn't sold back — not buys minus sells. Round-trip fees and slippage made the old reading grow on their own and pin a long run at the cap while it held nothing.maxConsecutiveErrorscounts bad moments, not failed trades: withmaxInFlightabove 1 the extra trades that a single bad moment takes down with it are forgiven once (the effective threshold ismaxConsecutiveErrors + min(maxInFlight, wallets) − 1).- Sells routed through a temporary wallet carry no
markerPlatformstag — the throwaway wallet signs them, so the tag would label the wrong wallet.POST /tasks/:id/previewnames how many of the task's wallets sell that way.
2026-09-16 — Launch tasks inline on the launch#
Added
tasks[]onPOST /launchis now a typed list of launch tasks:type(one of the 14 launch engines),walletIds,config,label,autostart. Nochain(the launch's) and no pre-created task. Settings are validated at the door with the engine's own rules (400 validation_failednamingtasks[i].config); wallets must be yours and on the key's list.POST /launch/affordabilitytakes the same shape. ThelaunchMCP tool shows the full task schema. See Launch tasks.
Changed
tasks[]used to be forwarded unchecked, withchainrequired on every task. A task with achainfield is now refused; drop it.
2026-09-16 — Everything the app does, on the API#
Every account action the app offers that makes sense from code is now a route, each with an MCP tool of the same name. Key management stays in the app on purpose (a key that could create keys would be a way around its own limits), and no route returns a private key.
Added
- Wallets:
GET/POST /wallets/groups,PATCH/DELETE /wallets/groups/:id;groupIdonPATCH /wallets/:id;?scope=alland?groupId=onGET /wallets;GET /wallets/:id/profile;GET /wallets/cashbackandPOST /wallets/cashback/claim. See Wallet groups. - Projects:
POST /projects(a draft),POST /projects/cto,PATCH/DELETE /projects/:id,GET /projects/:id/wallets,POST /projects/:id/wallets/assign,DELETE /projects/:id/wallets/:walletId,POST /projects/:id/closeout(rehearses by default),POST /pnl/wallet-totals. See Create, edit and delete a project. - Launch helpers:
GET /launch/readiness,GET /launch/mint-address,POST /launch/clone,POST /launch/affordability,POST /launch/supply-preview,POST /launch/metadata,GET /launch/pons/launch-terms,GET /launch/otcdesks/rewards; supply plans at/supply-planswithPOST /supply-plans/:id/mount. See Before you launch. - Trading:
POST /convert/assets,/convert/quote,/convert;POST /tokens/burnand/tokens/lock(rehearse by default);GET /tokens/creator-feesandPOST /tokens/creator-fees/claim. See Convert. - Tasks:
GET /events(your activity feed, paged withbefore) andGET /warmup/candidates. See Events. - Account:
GET/PATCH /settings/trading,GET/POST /kols,PATCH/DELETE /kols/:address. New page: Account settings from the API. - 43 new MCP tools (84 in all).
Rules for keys
- A key with limits (caps, a wallet list or sandbox) can only rehearse a close-out; a sandbox key can only rehearse burns, locks, conversions and cashback claims.
- A wallet-list key may only name wallets on its list, in every new route that takes wallet ids.
2026-09-16 — Rename and delete wallets#
Added
PATCH /wallets/:id: change a wallet'slabel(null clears it) orrole. See Rename a wallet or change its role.DELETE /wallets/:id: delete a wallet;409 conflictwhile a task or a project uses it,?force=trueto delete past the project check. See Delete a wallet.- MCP tools
update_walletanddelete_wallet.
2026-09-16 — Ask which quotes a launchpad takes#
Added
GET /launchpads: every launchpad with its chain, thequoteTokenvalues it accepts and, per quote, whether apairTokenis needed and which dev-buy field applies.GET /launchpads/:launchpad/quotes: what a launch on that launchpad can be quoted in right now, including the live list of tokenized stocks on pump.fun and StonkFun and the pair tokens on pons, each with the exactquoteTokenandpairTokento send. See Which quotes can I launch with?.- MCP tools
list_launchpadsandlaunch_quotes.
2026-09-16 — Import many wallets, into a project#
Added
POST /walletstakesprivateKeys(a list, up to 100) next toprivateKey, andprojectIdto create or import wallets straight into one of your projects. Imports are all-or-nothing and a wallet you already hold comes back unchanged. See Create or import wallets.
Changed
- Re-importing a wallet you already hold through
POST /walletsno longer resets its role totrading; it is returned as it is.
2026-09-16 — Agent discovery#
Added
http://localhost:3000/llms.txtandhttp://localhost:3000/llms-full.txt: the docs as an index and as one Markdown file for AI agents, and every docs page as Markdown at its address plus.md.GET https://evm.vortexdeployer.com/evm/api/v1(no key): a JSON index of the REST base, OpenAPI document, MCP endpoint, WebSocket and docs.- Build an agent on the API: discovery, authentication and the dry-run-then-commit loop.
- These docs no longer need sign-in: every
/docspage, the API index and the OpenAPI document are readable without an account. Keys are still made in the app. http://localhost:3000/agents.txt: the agent manifest — every address, how a key works, the safety rails and the rules, asField: valuelines.GET https://evm.vortexdeployer.com/evm/api/v1names it asagentsTxt.
2026-09-16 — MCP server#
Added
POST https://evm.vortexdeployer.com/evm/api/v1/mcp: the API as a Model Context Protocol server for Claude, Cursor or any MCP client — one tool per operation, your key as the bearer token, stateless Streamable HTTP. See MCP for AI agents.- Every OpenAPI operation now has an
operationId(buy,list_wallets,start_task, …). Client generators name methods by it; it is also the MCP tool name.
Removed
- The unpublished
https://evm.vortexdeployer.com/evm/api/v1andwss://evm.vortexdeployer.com/evm/wsaddresses no longer accept API keys: REST answers404 not_foundnaming the real address, the socket refuses the key. Usehttps://evm.vortexdeployer.com/evm/api/v1andwss://evm.vortexdeployer.com/evm/ws.
2026-09-16 — camelCase answers, error codes, paging, OpenAPI#
Breaking for early keys. If you started before this date, update your code:
- Every answer is camelCase.
pool_address→poolAddress,expected_out→expectedOut,created_at→createdAt,wallet_ids→walletIds, and so on for every field. Wallet ids and mints used as map keys are unchanged. Live stream frames keep their on-chain snake_case names. - Errors carry a
code, andtrace_idis nowtraceId:{ "code": "insufficient_scope", "error": "…", "traceId": "…" }. Switch oncode— see the full table. GET /tasksis wrapped:{ "tasks": [ … ] }instead of a bare array.GET /tasks/:id/executionsis{ "executions": [ … ] }.- Internal columns are gone from task rows:
user_id,run_seq,execution_epoch. - Projects no longer return the stored
metaobject. UsemetadataUrifor the token's metadata JSON. - Validation messages changed wording, e.g.
Too small: expected number to be >0. Match oncode: "validation_failed"anddetails[].path, never on the message.
Added
?limit=&offset=andX-Total-CountonGET /wallets,GET /wallets/balancesandGET /portfolio(Paging long lists).X-RateLimit-Resetnext toX-RateLimit-LimitandX-RateLimit-Remaining, andretryAfterSecondsin every429body.GET /openapi.json: the OpenAPI 3.1 document for the whole REST surface, no key needed.OPTIONSon any route answers204withAllow.
2026-09-16 — v1 opened#
First release: keys and scopes, buy / sell / batch, launch, wallets, portfolio and PnL, the tasks router, live streams. See API overview & keys.