Migrating from v1/v2/v3
How every current endpoint maps onto the unified surface.
The current API grew as an engine×venue matrix: /v1 (legacy freqtrade), /v2 (freqtrade·Hyperliquid), /v3 (Nautilus·Polymarket/Lighter) — about 138 endpoints once aliases are counted. The unified surface is ~30. Old prefixes keep accepting their established operations until a separately announced sunset. New integrations should use the Unified contract and inspect its live capability state; compatibility acceptance does not prove that every Unified runtime or native signing family is operational.
The mapping#
Equivalent operations across the previous API surfaces are grouped together. For Superior Skills, these legacy paths are comparison-only: an agent must not fall back to them when the Unified API has no public equivalent.
| Operation | Previous API | Unified API | Change |
|---|---|---|---|
| Health check | GET /health | GET /health | Direct |
| Request API access | POST /auth/sign-in/magic-link | POST /account/register, then POST /account/verify | Replaced by an OTP flow |
| List API keys | GET /auth/api-key | GET /account/keys | Direct |
| Create API key | POST /auth/api-key | POST /account/keys | Direct |
| Delete API key | DELETE /auth/api-key/{id} | DELETE /account/keys/{id} | Direct |
| Rename API key | PATCH /auth/api-key/{id} | — | No public equivalent |
| Read account identity | No dedicated equivalent | GET /account | New account, plan, limits, and usage view |
| Read account usage | No dedicated equivalent | GET /account/usage | New |
| List/read trading accounts | GET /v2/account, GET /v3/account | GET /account/{venue} and GET /account/{venue}/{id} | Explicit venue scope; IDs are Unified-owned |
| Create managed trading wallet | POST /v2/account, POST /v3/account | No public Unified API equivalent | Unified API exposes existing venue accounts only |
| Rename trading account | PATCH /v2/account/{address}, PATCH /v3/account/{address} | PATCH /account/{venue}/{id} | Explicit venue and ownership scope |
| Read a trading-account wallet | Venue balance reads | GET /account/{venue}/{id}/wallet | Full managed-wallet overview for the selected account |
| Read venue availability | GET /v2/account/{address}/status/{exchange}, GET /v3/account/{address}/status/{exchange} | GET /context/venues, GET /wallet | Consolidated capability and wallet-readiness checks |
| Set up a venue wallet | POST /v3/account/{address}/hyperliquid, /polymarket, or /lighter | POST /wallet/venues/{venue}/setup | Explicit $50 managed-wallet allocation; poll GET /wallet |
| List backtests | GET /v1/backtesting, GET /v2/backtesting | GET /runtime/backtests | Direct |
| Create backtest | POST /v1/backtesting, POST /v2/backtesting, POST /v3/backtest | POST /runtime/backtests | Creation automatically queues the run |
| Get backtest | Versioned GET by ID | GET /runtime/backtests/{id} | Direct |
| Read backtest status/result | Versioned /status and /result reads | GET /runtime/backtests/{id} | Embedded in the resource |
| Start backtest | Versioned status update | — | Removed; creation queues the run |
| Update backtest | PATCH /v2/backtesting/{id} | — | No public equivalent |
| Delete or cancel backtest | Versioned DELETE by ID | DELETE /runtime/backtests/{id} | Direct |
| Read backtest logs | Versioned GET logs by ID | GET /runtime/backtests/{id}/logs | Direct |
| Check dataset availability | GET /v2/backtesting-data/hyperliquid, /binance, or /aerodrome | GET /context/datasets, GET /runtime/backtests/dataset | Catalog plus exact-market lookup |
| Scan intelligence | GET /v2/intelligence/scan | GET /context/scan | New parameters and response schema |
| Read symbol setup | GET /v2/intelligence/setup/{pair} | GET /context/setup/{symbol} | Renamed identifier and response model |
| Search markets | POST /v3/markets/search | GET /context/markets?query=…&limit=… | New integrations use only query and limit |
| Read leaderboard | GET /v2/leaderboard-strategies | GET /context/leaderboard | Available; reads the apps/api-owned strategy leaderboard |
| List/read tracked traders | GET /v2/copy-trading/traders, GET /v2/copy-trading/traders/{wallet} | GET /context/traders, GET /context/traders/{wallet} | Planned; currently 501 feature_not_available |
| Read candles | No dedicated equivalent | GET /context/candles | New |
| Read funding | No dedicated equivalent | GET /context/funding | New |
| List runtime frameworks | No dedicated equivalent | GET /runtime/frameworks | New |
| List deployments | Versioned deployment lists | GET /runtime/deployments | Consolidated |
| Create deployment | Versioned live and paper creation | POST /runtime/deployments | framework, venue, and mode are request fields |
| Get deployment | Versioned GET by ID | GET /runtime/deployments/{id} | Direct |
| Update deployment metadata | PATCH /v2/deployment/{id} | PATCH /runtime/deployments/{id} | Direct |
| Delete deployment | Versioned DELETE by ID | DELETE /runtime/deployments/{id} | Direct |
| Read deployment status | Versioned /status reads | GET /runtime/deployments/{id} | Embedded in the resource |
| Start or stop deployment | Versioned status operations | PUT /runtime/deployments/{id}/status | Standardized lifecycle action |
| Attach deployment credentials | Versioned POST credentials operations | PUT /runtime/deployments/{id}/credentials | Method and contract changed |
| Read deployment credentials | GET /v2/deployment/{id}/credentials | — | No standalone secret read; safe metadata may appear on the deployment |
| Read deployment logs | Versioned GET logs by ID | GET /runtime/deployments/{id}/logs | Direct |
| Read deployment metrics | Paper profit and pod-proxy reads | GET /runtime/deployments/{id}/metrics | Normalized across frameworks |
| Paper deployment | /v2/paper-deployment resource tree | POST /runtime/deployments with mode: "paper" | Mode becomes a field, not a separate resource |
| Deployment history | GET /v2/deployment-history | GET /runtime/deployments | No dedicated history resource |
| Exit all positions | Versioned deployment and portfolio /exit operations | — | No public equivalent |
| Deposit to a venue | Versioned Hyperliquid, Polymarket, and Lighter deposit operations | POST /wallet/venues/{venue}/setup after funding GET /wallet | Explicit, idempotent $50 minimum allocation; no extra venue or operation GET routes |
| Read deposit history | Venue reconciliation reads | GET /wallet/deposits | Read-only history, not a transfer action |
| Withdraw Hyperliquid funds | POST /v3/portfolio/hyperliquid/withdraw plus v2 withdrawal authorization endpoints | POST /wallet/withdraw/otp then POST /wallet/withdraw | Email-login accounts only; two-step OTP-authorized, tracked withdrawal |
| Withdraw Lighter funds | POST /v3/portfolio/lighter/withdraw | — | No public equivalent |
| Read withdrawal history/status | Venue reconciliation reads | GET /wallet/withdrawals, GET /wallet/withdrawals/{id} | Unified wallet withdrawals only |
| Hyperliquid one-time action | POST /v2/authorize-and-send/hyperliquid | POST /runtime/executions | Native { venue, action } envelope; existing request shapes stay compatible |
| Polymarket one-time action | POST /v3/authorize-and-send/polymarket | POST /runtime/executions | Native { venue, action } envelope; existing request shapes stay compatible |
| Lighter signed action | POST /v3/authorize-and-send/lighter | — | No public equivalent |
| List/read execution records | No dedicated equivalent | GET /runtime/executions, GET /runtime/executions/{id} | New durable, sanitized records |
| Hyperliquid brackets | /v2/bracket resource tree | — | No bracket-resource equivalent |
| Hyperliquid wallet transfer | POST /v2/portfolio/hyperliquid/transfer | — | No public equivalent |
| Discover the HTTP contract | Versioned OpenAPI documents | GET /openapi.json | One authoritative contract |
| Discover or call MCP | No dedicated equivalent | GET /.well-known/mcp.json, POST /mcp | New |
Existing account-owned legacy v2 Freqtrade backtests on Hyperliquid have a narrower compatibility boundary than newly created Unified API backtests. GET /runtime/backtests/{id} can read their persisted terminal finished or error record by known ID, including only the summary fields originally stored by the previous API; missing canonical result fields are not synthesized. DELETE /runtime/backtests/{id} can tombstone those terminal records without contacting the retired runtime workload. This path does not expand list behavior, and active queued/running status, logs, cancellation, and lifecycle ownership do not migrate through it.
Native execution migration#
Use a trade-scoped API key and Idempotency-Key:
{
"venue": "polymarket",
"action": {
"type": "placeMarketOrder",
"tokenID": "1234567890",
"side": "BUY",
"amount": "10",
"orderType": "FOK"
}
}
The public schema has no action-type allowlist. Execution still requires an operational provider family, an execution-ready managed wallet, and a supported native signing family. Unsupported families return native_action_unsupported; incomplete runtime configuration returns execution_provider_unavailable. Superior owns credentials, signing, nonce, timestamp, headers, method, path, and endpoint. Never copy signed or credential-bearing fields from a versioned request into the Unified action.
Market search for new integrations is:
GET /context/markets?query=BTC%20perpetual&limit=20
Deployment lifecycle changes use PUT /runtime/deployments/{id}/status; PATCH /runtime/deployments/{id} updates metadata only.
Slimmed from the public surface#
The remaining custody plumbing — /v2|v3/portfolio transfer/exit variants, /v2|v3/authorize-and-send/*, /v2/bracket, /v3/account/:address/{hyperliquid,polymarket,lighter} bootstrap, /v2/account/login-wallet — remains available only for compatibility or Terminal-owned flows. Do not adopt it in a new integration. The Unified surface replaces it with the managed trading wallet, BYOK, and the native execution envelope.
Timeline#
- Now — Unified ships alongside v1/v2/v3; established versioned operations remain compatible.
- Runtime rollout — each Unified capability reports whether its required backend is configured. One-time execution submits supported signing families when operational and otherwise fails closed.
- Deprecation — old prefixes marked deprecated in their OpenAPI spec with
Sunsetheaders on responses; migration window announced with dates, per-endpoint. - Sunset — old prefixes return
410with adocs_urlpointing at this page.
Existing st_live_ keys work on both surfaces throughout — migration never requires re-registering.