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. Nothing breaks on day one: old prefixes keep working until a separately announced sunset, and both surfaces run against the same backend.

The mapping

TodayUnifiedChange
POST /auth/sign-in/magic-link (key emailed)POST /account/register + /verifyOTP relayed by a human; key returned in-band
POST/GET/DELETE /auth/api-key/account/keysRename only
GET /v2/backtesting-data/*GET /context/datasetsOne catalog, all venues, now with gaps + releases
POST /v3/markets/searchGET /context/marketsGET, all venues, backtest_ready flag
GET /v2/intelligence/scan, /setup/:pair/context/scan, /context/setup/:pairPath move; auth now required
GET /v2/leaderboard-strategiesGET /context/leaderboardPath move; auth now required
GET /v2/copy-trading/traders*GET /context/traders*Path move
(no equivalent)GET /context/candles, /context/fundingNew — datasets get an HTTP surface
`POST /v1v2/deployment, POST /v3/deployment(s)`POST /runtime/deployments
`PUTPATCH …/status` (three variants)PUT /runtime/deployments/:id/status
GET …/status (separate)embedded in GET /runtime/deployments/:idOne poll target
`/v2v3/paper-deployment/*` (7 endpoints)"mode": "paper"
…/paper-deployment/:id/profit, pod proxy readsGET …/metricsNormalized across frameworks
POST …/credentials (v2: Privy-only)PUT …/credentialsBYOK — caller supplies a scoped key
`/v1v2/backtesting/, /v3/backtest/`/runtime/backtests
POST /v2/account (create wallet), /onboarding/create-privy-walletimplicit — the managed trading wallet auto-creates on first useNo explicit wallet-creation call
/v2/portfolio/hyperliquid/deposit, /withdrawGET /wallet · POST /wallet/withdrawOne wallet, allocation on deploy; withdrawals to the verified login wallet 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 — becomes internal endpoints behind the Superior Terminal, which keeps its UX unchanged. The unified surface replaces them with two simpler primitives: the managed trading wallet (deposit → allocate-on-deploy → withdraw-to-login-wallet, venue onboarding handled at start) for the default path, and BYOK (your keys, your venue account, client-side onboard ceremony) for self-custody.

Timeline

  1. Now — this design published for review; current API unchanged.
  2. Build — unified surface ships alongside v1/v2/v3, same backend.
  3. Deprecation — old prefixes marked deprecated in their OpenAPI spec with Sunset headers on responses; migration window announced with dates, per-endpoint.
  4. Sunset — old prefixes return 410 with a docs_url pointing at this page.

Existing st_live_ keys work on both surfaces throughout — migration never requires re-registering.