What’s New
Your trading day opens itself
The live-trading API stops being session-keyed: you trade an account and the day is resolved for you, history is read by date, and a dry-run opens the day. The old /accounts/{id}/sessions… paths are gone, and session_events can now be subscribed by account.
If you trade through the app, today changes nothing you can see — the desk already works this way. If you trade through the API, this one is for you, and it is a break: the session-keyed live paths are gone and the day you trade is now resolved for you.
You trade an account, not a session. POST /accounts/{id}/orders places an order. GET /accounts/{id}/positions, …/orders, …/transactions and …/history read your state. None of them names a day: a write resolves your account's open day, a read resolves its active day (the open day, else today's settled one), and an account with no day at all answers an empty list instead of an error.
There is no call that opens a trading day any more. POST /accounts/{id}/sessions is gone, along with the rest of the /accounts/{id}/sessions… family. Your day opens by itself, inside your first order of the day — and a dry-run opens it too, because the preview is priced by the live exchange, so the day has to exist first. Nothing else about a dry-run changed: it still persists no order. Ask GET /accounts/{id}/days/current afterwards to learn which day you got, or null when none is open.
History is keyed by date. GET /accounts/{id}/days lists every trading day, newest first, and /accounts/{id}/days/{date} — plus …/orders, …/positions, …/transactions, …/history under it — reads any one of them by YYYY-MM-DD. The date-keyed form also carries the writes (cancel, replace, liquidate), which is how you flatten a day that is still open on an earlier date after a delayed settlement.
Over the WebSocket, subscribe by account. session_events now accepts {"action":"subscribe","channel":"session_events","account_id":"<uuid>"}, and it is the form a live client wants: at the moment you subscribe there may be no day to name, so the server enrolls the account's open day now and any day that opens later — including the one your own first order creates. Subscribe once when you pick the account and leave it. Bots keep the session_id form, since a bot runs several sessions per date.
A few error codes moved with the vocabulary: session_closed is now day_closed, blocking an account archive or delete is now day_open, and a placement against an archived account or a broker engine answers 409 account_archived / 409 engine_not_available.
The full contract is in the live-trading reference, the day resource is on Accounts & trading days, and the walkthrough has been rewritten end to end. Practice sessions and the bot endpoints are unchanged.