Saxo OpenAPI endpoints
68 documented Saxo API endpoints, grouped by what they do. Each has its method, path, parameters and the source it was read from.
Independent and unofficialNewest check
Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.
Accounts and balances
- GET/port/v1/accountsLists the accounts owned by a client. With no ClientKey it answers for the logged in user's own client.
- GET/port/v1/accounts/{AccountKey}Details of one account: its identifiers, type, currency, whether it is active and what it is allowed to trade.
- GET/port/v1/accounts/meLists every account under the client the logged in user belongs to. Each account carries the AccountKey you pass to price, order and portfolio calls.
- POST/port/v1/accounts/subscriptionsSets up a streaming subscription on a list of accounts and returns a first snapshot of them.
- GET/port/v1/balancesBalance figures for a client, an account group or a single account: cash, cash available for trading, collateral and margin.
- GET/port/v1/balances/marginoverviewA margin overview for a client, an account group or a single account, returned as a list of groups.
- GET/port/v1/balances/meReturns cash, margin and total value for the logged in client, rolled up in the client's currency.
- POST/port/v1/balances/subscriptionsSets up a streaming subscription on a balance and returns a first snapshot of it.
Chart data
- GET/chart/v3/chartsReturns timestamped open, high, low and close samples for one instrument, up to 1,200 samples a call. Horizon sets the bar length in minutes.
- POST/chart/v3/charts/subscriptionsSets up a streaming subscription on chart samples and returns the most recent completed ones as a first snapshot.
- DELETE/chart/v3/charts/subscriptions/{ContextId}/{ReferenceId}Removes one chart subscription, identified by its context and reference ids, and frees what it held on the server.
Closed positions and history
- GET/hist/v1/transactionsLists historical transactions, such as trades, within a date range for a client or account. Filter by transaction type, asset type or instrument.
- GET/hist/v4/performance/summaryReturns aggregated trade results and performance figures, such as accumulated profit or loss and win fraction, for a client or account over a period.
- GET/port/v1/closedpositionsLists closed positions for a client, an account group or an account, chosen by query parameters.
- GET/port/v1/closedpositions/{ClosedPositionId}One closed position by its id.
- GET/port/v1/closedpositions/meLists positions closed for the logged in client, with open and close prices, times and realised profit or loss.
- POST/port/v1/closedpositions/subscriptionsSets up a streaming subscription on a list of closed positions and returns a first snapshot of them.
Instruments
- GET/ref/v1/instrumentsSearches Saxo's instrument universe by keyword, asset type, exchange or Uic and returns summary rows. Use it to find the Uic you need for prices, charts and orders.
- GET/ref/v1/instruments/detailsDetailed reference data for a list of instruments in one call, chosen by Uic and asset type.
- GET/ref/v1/instruments/details/{Uic}/{AssetType}Returns full details for one instrument: symbol, currency, tick size, minimum trade size, exchange and the order types it supports.
- GET/ref/v1/instruments/tradingschedule/{Uic}/{AssetType}The trading schedule of one instrument: its sessions and the time zone they are given in.
Orders
- GET/port/v1/ordersLists the open orders of a client or an account. By default only working orders are returned.
- GET/port/v1/orders/{ClientKey}/{OrderId}One open order of a client, looked up by the client's key and the order id.
- GET/port/v1/orders/meLists all open (working) orders across every account of the logged in client. Filled or cancelled orders do not appear here.
- POST/port/v1/orders/subscriptionsSets up a streaming subscription on a list of open orders and returns a first snapshot of them.
- GET/trade/v1/messagesTrade messages for the current user that have not yet been marked as seen.
- DELETE/trade/v2/ordersCancels every order in one instrument on one account in a single call.
- PATCH/trade/v2/ordersChanges one or more existing open orders, for example the price, size or duration. The order is identified by OrderId in the body, not in the path.
- POST/trade/v2/ordersPlaces a new order, optionally with related limit and stop orders as children. A 200 reply can still carry ErrorInfo, so check for OrderId before treating the order as placed.
- DELETE/trade/v2/orders/{OrderIds}Cancels one or more open orders. Pass a comma separated list of order ids in the path and the AccountKey as a query parameter.
- POST/trade/v2/orders/multilegPlaces a combined options order whose legs must all fill together, for strategies such as straddles and calendar spreads. Saxo says only some options exchanges support it.
- POST/trade/v2/orders/precheckChecks an order without placing it and returns the expected costs, cash required and margin impact. Useful to show a cost preview before the user confirms.
Positions
- GET/port/v1/exposure/currency/meThe net exposure in each currency for the logged in user's client.
- GET/port/v1/exposure/fxspot/meThe currency exposure that comes from FX spot positions alone, for the logged in user's client.
- GET/port/v1/exposure/instruments/meThe net exposure in each instrument for the logged in user's client.
- GET/port/v1/netpositionsLists net positions for a client, an account group or an account, with filters by instrument. Each can carry its sub positions if you ask for them.
- GET/port/v1/netpositions/{NetPositionId}One net position by its id, with static details in NetPositionBase and the live view in NetPositionView.
- GET/port/v1/netpositions/meLists positions netted per instrument for the logged in client, with average open price and profit or loss. Add SubPositions to FieldGroups to include the underlying positions.
- POST/port/v1/netpositions/subscriptionsSets up a streaming subscription on a list of net positions and returns a first snapshot of them.
- GET/port/v1/positionsLists open positions for a client, an account group, an account or one net position, chosen by query parameters.
- GET/port/v1/positions/{PositionId}One open position by its id, with opening details in PositionBase and the live view in PositionView.
- GET/port/v1/positions/meLists each open position for the logged in client, with opening details in PositionBase and live price and profit or loss in PositionView.
- POST/port/v1/positions/subscriptionsSets up a streaming subscription on a list of positions and returns a first snapshot of them.
- PATCH/trade/v1/positions/{PositionId}Change a property of an existing position. The documented use is clearing its force open flag so that it can net against an opposite position.
Prices
- GET/trade/v1/infopricesReturns a one off price snapshot (bid, ask, mid and delay) for one instrument. For a live feed Saxo offers price subscriptions over the streaming connection instead.
- GET/trade/v1/infoprices/listInfo prices for several instruments of one asset type in a single call. Info prices are for display, not prices you can trade on.
- POST/trade/v1/infoprices/subscriptionsSets up a streaming subscription on info prices for a list of instruments and returns a first snapshot.
- POST/trade/v1/prices/subscriptionsSets up a streaming price subscription on one instrument and returns an initial snapshot. Updates then arrive on your WebSocket connection under the same ContextId and ReferenceId.
- DELETE/trade/v1/prices/subscriptions/{ContextId}/{ReferenceId}Removes one price subscription from the current streaming session, identified by its context and reference ids.
Reference data
- GET/ref/v1/countriesThe countries Saxo supports, as a list.
- GET/ref/v1/culturesThe cultures Saxo supports for localising a user's preferences, as a list.
- GET/ref/v1/currenciesThe currencies Saxo supports, as a list.
- GET/ref/v1/currencypairsThe currency pairs Saxo supports, as a list.
- GET/ref/v1/exchangesEvery exchange Saxo lists, with details of each such as its identifiers, country, currency and sessions.
- GET/ref/v1/exchanges/{ExchangeId}Details of one exchange: its identifiers, country, currency, time zone and trading sessions.
- GET/ref/v1/languagesThe languages Saxo supports, as a list.
- GET/ref/v1/standarddates/forwardtenor/{Uic}The standard forward tenor dates for one instrument.
- GET/ref/v1/timezonesThe time zones Saxo supports, as a list.
Session and user
- GET/port/v1/clients/{ClientKey}Details of one client by its key: identifiers, default account, default currency and the netting and trading settings that apply.
- GET/port/v1/clients/meReturns the client the logged in user belongs to, including ClientKey, default account and default currency. You need the ClientKey for some history and performance calls.
- GET/port/v1/users/meReturns details about the logged in user, such as name, language, time zone and the ClientKey of the owning client. A good first call to check a token works.
- GET/port/v1/users/me/entitlementsThe market data entitlements held by the logged in user's client, listed per exchange.
- GET/root/v1/diagnostics/getA test call that does nothing but answer. Use it to check that a GET request reaches the gateway.
- GET/root/v1/features/availabilityWhich features are currently available, as a list of feature names each with a flag. Saxo marks this call obsolete.
- GET/root/v1/sessions/capabilitiesWhat the current session is allowed: its authentication level, data level and trade level.
- PUT/root/v1/sessions/capabilitiesChange the trade level of the current session, which decides whether it can trade on quotes and receive real time data.
- POST/root/v1/sessions/events/subscriptionsSets up a streaming subscription on the session's capabilities, so a change in them is pushed to you.
- GET/root/v1/userThe current user's id, client id, roles and the operations the token may perform. Saxo marks this call obsolete.