API changelog
Every change to the public API, newest first, and what to change in your code.
This page lists every change to the API, newest first. The version is in the address: /api/v1.
Inside v1, fields are only added. They are not removed or renamed, unless an entry here says so. Error code values stay the same. The error text can change.
2026-10-19 — Taking wallets out of a project never deletes them#
Changed
DELETE /projects/:id/wallets/:walletIdandPOST /projects/:id/wallets/removeno longer delete a wallet made inside the project. It moves to your pool, with its key and balance.outcomeis alwaysunassigned, anddeletedis always empty. Both fields stay, so code that reads them keeps working. See A project's wallets.DELETE /projects/:idno longer deletes the project's wallets. They move to your pool. A wallet that another project also uses stays in that project.
2026-10-19 — The Wallet Marketplace is on the API#
Added
GET /marketplace/inventorylists the wallets for sale, with the app's filters, 100 per page.GET /marketplace/inventory/statssums up one wallet type.POST /marketplace/ordersreserves the wallets you pick and answers a payment address. Send arequestKeyof your own: a retry with the same one returns the same order. A sandbox key gets403 sandbox_key.GET /marketplace/orders/:idandPOST /marketplace/orders/:id/checkfollow an order until your wallets are delivered. A check counts as a read toward your rate limit, like aGET.GET /marketplace/orderslists your last 50 orders.- New MCP tools:
list_marketplace_inventory,marketplace_inventory_stats,list_marketplace_orders,get_marketplace_order,create_marketplace_orderandcheck_marketplace_order.
An order moves no funds: you pay it yourself, from any wallet. So a key's max per buy, daily cap and wallet list do not apply. Reads need read; ordering and checking need trade. See Wallet marketplace.
2026-10-17 — Launch tasks follow the same rules as other tasks#
Added
tokendispersercan be a launch tasktypeonPOST /launch.- A
limit_orderlaunch task can pick its wallets withwalletSource(allorroles) and an emptywalletIds, as onPOST /tasks. A key with a wallet list cannot do this.
Changed
- A launch task is now checked before the launch starts, with the same rules as
POST /tasks: its wallets, its settings and the task type's own limits. Before, such a launch went ahead and its answer held a taskerror. Now it gets400before anything is funded or minted. See Launch tasks. - Buy and Snipe launch tasks leave out the creator wallet, as tasks made after a launch do. It stays in only if it is the one wallet picked, or
config.includeDevistrue. On an EVM launch the creator no longer counts toward the cap on instant buyers.POST /launch/affordabilityno longer counts a buy from it.
2026-10-08 — Bulk wallet calls, up to 1,000 wallets each#
Added
POST /wallets/deletedeletes many wallets in one call. A wallet a task uses, or a project still holds, is listed inactiveorassigned. The rest of the call goes on. See Delete wallets.POST /wallets/movemoves many wallets into a group, or out of one.POST /projects/:id/wallets/removetakes many wallets out of a project.labelStartonPOST /walletssets the number for the first new wallet's label. A set of wallets made over several calls keeps one count.- New MCP tools for these:
delete_wallets,move_walletsandremove_project_wallets.
Changed
- One call takes up to 1,000 wallets. This counts for
countandprivateKeysonPOST /wallets, and forwalletIdson the three new calls. A longer list gets400. Send the rest in a second call. Your account still has no wallet limit.
2026-10-08 — Creator fees: unswept fees, and claims the wallet cannot pay for#
Added
- In
GET /tokens/creator-fees, a venue hasunsweptwhen part ofclaimablestill sits on the pump.fun bonding curve or the PumpSwap pool. The claim collects it in the same transaction. See Creator fees.
Changed
POST /tokens/creator-fees/claimnow refuses a claim the creator wallet cannot pay for, before anything is sent. A dry run checks it too. The wallet must hold the network fee plus rent for each new token account the claim opens. The answer isok: false, anderrorsays how much SOL to add. Before, such a claim was sent and failed on the chain.
2026-09-21 — No caps on counts; slow sell batches become a task#
Changed
- No more caps on how many.
POST /trade/batchtakes any number ofwalletIds(it was 500).POST /walletstakes anycountand any number ofprivateKeys(both were 100), into a project of any size (it was 100).POST /projects/:id/wallets/assigntakes any number ofwalletIds(it was 500). The server still splits the work to fit each transaction. The 2026-10-08 entry later set 1,000 per call on the wallet calls. - A slow batch becomes a task, for buys and sells. If the waits add up to over 60 seconds, a sell batch used to get
400. Now it answers202with a task, like a buy batch. That task'stypeisbatch(it wasbuy). A slow buy batch still needs real amounts:token_percentagegets400. See Slow batches become a task.
2026-09-19 — A new address, and no limits on writes#
Changed
- The API moved to its own address:
https://api.vortexdeployer.com/api/v1for REST andwss://api.vortexdeployer.com/wsfor streams. The old address on the app's dev host was shut the same day. Calls there now get404with the new address. Update your settings. - Writes have no rate limit now. Buys, sells, batches and launches have no per-minute cap, per key or per account. Only reads (
GET) are limited: 300 a minute per key and 600 per account. TheX-RateLimit-*headers come on read answers only. If you spaced out trades for the old 60 a minute, you can stop. - In MCP,
_meta.rateLimitnow comes on read tools only.
2026-09-19 — OAuth for the MCP server#
Added
- MCP clients that can only use OAuth, like Claude.ai custom connectors, can now connect. The server offers discovery at the API host's root, client sign-up at
POST https://api.vortexdeployer.com/api/v1/oauth/register, the authorization code flow with PKCE (S256only), consent in the app, refresh tokens that change on each use, and revoking. See OAuth for connectors. - Each grant is tied to one of your API keys, picked on the consent page. Its
vdo_…token works everywhere avd_key does: MCP, REST and streams. It has that key's scopes and caps. Revoke the key and the grant ends. - A
401onPOST /mcpnow has aWWW-Authenticateheader. It points to the server's resource info (RFC 9728).
Changed
- Nothing changed for
vd_keys. Clients that use them need no update.
2026-09-17 — Faster Volume in the Mixed style, and trading-bot markers#
Added
- New settings for
volumetasks in the Mixed style (nomode, ormode: "mixed"):maxInFlight— how many trades may be out at once, 1 to 50, one per wallet.maxSameSideStreak— after this many trades on one side, the next one takes the other side.0turns it off.maxNetBuySol— the most the run may hold, in the chain's coin. At the cap it only sells until it is back under.0turns it off.
markerPlatformsonvolume(Mixed) andwarmupsettings: any ofPHOTON,TROJAN,BULLX,AXIOM1andAXIOM2, each once. Default[]. Each trade also sends 10 lamports to that bot's fee wallet, so the trade looks like it came from that bot. Solana only. See Volume.
Changed
minDelayMsandmaxDelayMsin Mixedvolumenow start at 20 (it was 250). They are now the wait between sends, not between confirmations.maxNetBuySolnow measures what the run still holds: the SOL paid for tokens it has not sold back. Before, it was buys minus sells. Fees and slippage made that number grow by itself, so a long run could hit the cap while it held nothing.maxConsecutiveErrorsnow counts bad moments, not failed trades. WithmaxInFlightabove 1, the extra trades lost in the same bad moment are forgiven once. The real limit ismaxConsecutiveErrors + min(maxInFlight, wallets) − 1.- A sell sent through a temporary wallet carries no
markerPlatformstag. The temporary wallet signs it, so the tag would mark the wrong wallet.POST /tasks/:id/previewsays how many of the task's wallets sell that way.
2026-09-16 — Launch tasks inside the launch call#
Added
tasks[]onPOST /launchis now a typed list. Each task hastype(one of the 14 launch task types at the time),walletIds,config,labelandautostart. It has nochain: it uses the launch's. Settings are checked with the task type's own rules. A bad one gets400 validation_failedthat namestasks[i].config. The wallets must be yours and on the key's list.POST /launch/affordabilitytakes the same list. ThelaunchMCP tool shows the full task shape. See Launch tasks.
Changed
- Before,
tasks[]was passed on without checks, and every task neededchain. A task with achainfield is now refused. Leave it out.
2026-09-16 — Everything the app does, on the API#
Each account action in the app that makes sense from code is now a route. Each route has an MCP tool. Key management stays in the app on purpose: a key that could make keys could get around its own limits. No route returns a private key.
Added
- Wallets:
GETandPOST /wallets/groups,PATCHandDELETE /wallets/groups/:id.groupIdonPATCH /wallets/:id.?scope=alland?groupId=onGET /wallets.GET /wallets/:id/profile.GET /wallets/cashbackandPOST /wallets/cashback/claim. See Groups. - Projects:
POST /projects(makes a draft),POST /projects/cto,PATCHandDELETE /projects/:id,GET /projects/:id/wallets,POST /projects/:id/wallets/assign,DELETE /projects/:id/wallets/:walletId,POST /projects/:id/closeout(a dry run by default) andPOST /pnl/wallet-totals. See Projects. - 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-termsandGET /launch/otcdesks/rewards. Supply plans at/supply-plans, withPOST /supply-plans/:id/mount. See Checks before you launch. - Trading:
POST /convert/assets,/convert/quoteand/convert.POST /tokens/burnand/tokens/lock(dry runs 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:
GETandPATCH /settings/trading.GETandPOST /kols,PATCHandDELETE /kols/:address. New page: Account settings & KOLs. - 43 new MCP tools, 84 in all at the time.
Rules for keys
- A key with limits (caps, a wallet list or sandbox) can only dry-run a close-out. A sandbox key can only dry-run burns, locks, converts and cashback claims.
- A key with a wallet list 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/:idchanges a wallet'slabel(nullclears it) orrole. See Change a wallet.DELETE /wallets/:iddeletes a wallet. It gets409 conflictwhile a task or a project uses the wallet.?force=truedeletes it past the project check. See Delete wallets.- MCP tools
update_walletanddelete_wallet.
2026-09-16 — See which quotes a launchpad takes#
Added
GET /launchpadslists every launchpad. For each it gives the chain and thequoteTokenvalues it takes. For each quote it says if apairTokenis needed and which dev-buy field to use.GET /launchpads/:launchpad/quoteslists what a launch there can be quoted in right now. That includes the live list of tokenized stocks on pump.fun and StonkFun, and the pair tokens on pons. Each entry has the exactquoteTokenandpairTokento send. See Which quotes a launchpad takes.- MCP tools
list_launchpadsandlaunch_quotes.
2026-09-16 — Import many wallets, straight into a project#
Added
POST /walletstakesprivateKeys, a list of up to 100 at the time, next toprivateKey.projectIdputs new or imported wallets straight into one of your projects. An import is all or nothing. A wallet you already have comes back as it is. See Make or import wallets.
Changed
- Importing a wallet you already have no longer resets its role to
trading. It comes back unchanged.
2026-09-16 — Agent discovery#
Added
https://vortexdeployer.com/llms.txtlists the docs for AI agents, andhttps://vortexdeployer.com/llms-full.txthas them all in one Markdown file. Every docs page is also Markdown at its address plus.md.GET https://api.vortexdeployer.com/api/v1needs no key. It answers JSON with the REST address, the OpenAPI document, the MCP server, the WebSocket and the docs.- New page: Build an agent on the API.
- The docs no longer need sign-in. Every
/docspage, the API index and the OpenAPI document are open to all. Keys are still made in the app. https://vortexdeployer.com/agents.txtis a short file for agents: the addresses, how a key works, the safety rules and what may be fetched.GET https://api.vortexdeployer.com/api/v1names it inagentsTxt.
2026-09-16 — MCP server#
Added
POST https://api.vortexdeployer.com/api/v1/mcpserves the API as an MCP server for Claude, Cursor or any MCP client. There is one tool per call, your key signs each request, and the server keeps no session. See MCP for AI agents.- Every call in the OpenAPI document now has an
operationId, likebuy,list_walletsorstart_task. Code generators name methods after it, and it is the MCP tool's name.
Removed
- The EVM site's unpublished
/evm/api/v1and/evm/wsaddresses no longer take API keys. REST there answers404 not_foundwith the right address, and the socket refuses the key. Usehttps://api.vortexdeployer.com/api/v1andwss://api.vortexdeployer.com/ws.
2026-09-16 — camelCase answers, error codes, paging and OpenAPI#
Breaking for early keys. If you started before this date, change your code:
- Every answer is camelCase.
pool_addressis nowpoolAddress,expected_outisexpectedOut,created_atiscreatedAt,wallet_idsiswalletIds, and so on for every field. Wallet ids and mints used as map keys stay as they were. Live stream frames keep their snake_case names. - Errors have a
code, andtrace_idis nowtraceId:{ "code": "insufficient_scope", "error": "…", "traceId": "…" }. Checkcode. See the codes table. GET /tasksis wrapped:{ "tasks": [ … ] }, not a bare list.GET /tasks/:id/executionsis{ "executions": [ … ] }.- Internal fields are gone from tasks:
user_id,run_seqandexecution_epoch. - Projects no longer return the stored
metaobject. UsemetadataUrifor the token's info file. - Check messages have new wording, like
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. See Paging.X-RateLimit-Resetnext toX-RateLimit-LimitandX-RateLimit-Remaining, andretryAfterSecondsin every429body.GET /openapi.json, the OpenAPI 3.1 document for every REST call. No key needed.OPTIONSon any route answers204withAllow.
2026-09-16 — v1 opens#
The first release: keys and scopes, buy, sell and batch, launch, wallets, portfolio and PnL, tasks and live streams. See API overview & keys.