Broker API HubMenu

Place an order: broker API endpoints compared

19 documented calls from 10 of the 12 APIs with endpoint records here, and 6 functions and messages from 4 APIs whose interfaces are not HTTP, each with the page it was read on.

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.

What this task is

Placing an order sends an instruction to deal: the instrument, the direction, the size and the order type, often with a stop and a limit attached. Some APIs use one call for every order type, others separate dealing at market from orders that wait for a level.

A reply to this call is not always a fill. Many APIs answer with a reference and expect you to confirm the outcome with a second call. Never resend an order because a reply was slow until you have checked whether the first one was accepted.

The documented endpoint, API by API

Ordered by the name of the broker or platform API, then by path. The order is not a ranking. Open a row for the parameters, the response and a sample request.

Broker or platformEndpointWhat the record says it doesSource
Capital.comPOST/api/v1/positionsOpen a position at market. The response is only a dealReference: confirm the result with GET /api/v1/confirms/{dealReference}.open-api.capital.comchecked
Capital.comPOST/api/v1/workingordersCreate a LIMIT or STOP order at a price level, optionally with a cancellation date, stop loss and take profit.open-api.capital.comchecked
DXtrade APIsPOST/accounts/{accountCode}/ordersPlace a market, limit or stop order, or a group of orders, on an account. The client gives each order a code of its own so a repeat is refused.demo.dx.tradechecked
eToroPOST/api/v2/trading/execution/demo/ordersPlaces an order on the demo account, by amount or units, with optional leverage, stop loss and take profit. The real account version is POST /api/v2/trading/execution/orders.api-portal.etoro.comchecked
eToroPOST/api/v2/trading/execution/ordersPlaces an order on the real account, by amount, units or contracts, with optional leverage, stop loss and take profit. A 200 reply means the order was accepted, not that it was executed.api-portal.etoro.comchecked
eToroPOST/api/v3/trading/execution/demo/ordersSubmits an order on the demo account for processing in the background. The version 3 form of the order call: a 202 reply means it was queued, not executed.api-portal.etoro.comchecked
eToroPOST/api/v3/trading/execution/ordersSubmits an order on the real account for processing in the background. The version 3 form of the order call: a 202 reply means it was queued, not executed.api-portal.etoro.comchecked
IGPOST/positions/otcOpen an OTC position. Returns a dealReference only: the deal is not confirmed until you call GET /confirms/{dealReference}.labs.ig.comchecked
IGPOST/working-orders/otcCreate a working order (LIMIT or STOP) that triggers at a level.labs.ig.comchecked
Interactive BrokersPOST/iserver/account/{accountId}/ordersSubmits an order ticket, a bracket or an OCA group. The reply is either the order ID or a question you must confirm with POST /iserver/reply/{replyId}.interactivebrokers.comchecked
Match-Trader Platform APIPOST/mtr-api/{SYSTEM_UUID}/pending-order/createPlace a pending order that waits for a price, with a side, a volume, a type and an optional stop loss and take profit.app.theneo.iochecked
Match-Trader Platform APIPOST/mtr-api/{SYSTEM_UUID}/position/openOpen a position in an instrument, on the buy or the sell side, with a volume and an optional stop loss and take profit.app.theneo.iochecked
OANDAPOST/v3/accounts/{accountID}/ordersCreate an order. Market, limit, stop, market if touched and dependent orders all go through this one endpoint. Returns 201.developer.oanda.comchecked
Saxo OpenAPIPOST/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.developer.saxochecked
TradeLocker APIPOST/trade/accounts/{accountId}/ordersPlace a market, limit or stop order on the account, with an optional stop loss and take profit. The reply carries the new orderId.public-api.tradelocker.comchecked
Trading 212POST/api/v0/equity/orders/limitPlace a limit order, which fills at the limit price or better. The sign of quantity sets the direction.docs.trading212.comchecked
Trading 212POST/api/v0/equity/orders/marketPlace a market order, to deal at the next available price. The sign of quantity sets the direction. If the market is closed the order waits for it to open.docs.trading212.comchecked
Trading 212POST/api/v0/equity/orders/stopPlace a stop order, which becomes a market order once the last traded price reaches the stop price. The sign of quantity sets the direction.docs.trading212.comchecked
Trading 212POST/api/v0/equity/orders/stop_limitPlace a stop limit order: when the last traded price reaches the stop price, a limit order is placed at the limit price. The sign of quantity sets the direction.docs.trading212.comchecked

The same task where the interface is not HTTP

Some platform APIs, and the streaming interfaces of some broker APIs, are not sent as HTTP requests. A function is called from a program in its language, and a message is sent over an open connection. None has a method or a path, so each row is labelled with its kind and its interface. A record is put on this page by hand, from what the vendor's page says the call does, and one call can do several jobs, so the same function can be on more than one task page. Ordered by the name of the broker or platform API, then interface, then name.

APICallWhat the record says it doesSource
cTrader Open APImessageProtoOANewOrderReq cTrader Open APISends a new order. The definition allows it only where the access token has trade permission for the account.help.ctrader.comchecked
Derivmessagebuy Deriv WebSocket APIBuys a contract: either the one a proposal priced, by the id that proposal returned, or one described in full in parameters. price is the most you accept to pay.developers.deriv.comchecked
MetaTrader 4 (MQL4)functionOrderSend() MQL4Opens a market order or places a pending order. The page calls it the main function for doing either.docs.mql4.comchecked
MetaTrader 5 (Python package and MQL5)functionorder_send() MetaTrader5 Python packageSends a trade request from the terminal to the trade server. One call covers a market order, a pending order, a change to an order or position, a cancellation and a close: the request's action field says which.mql5.comchecked
MetaTrader 5 (Python package and MQL5)functionOrderSend() MQL5Sends a trade request to the trade server and waits for its answer. One function covers a market order, a pending order, a change, a cancellation and a close: the action field of the request says which.mql5.comchecked
MetaTrader 5 (Python package and MQL5)functionOrderSendAsync() MQL5Sends a trade request to the trade server without waiting for its answer. The page describes it as made for high frequency trading, where waiting for the server is not acceptable.mql5.comchecked

None documented here yet

These APIs have endpoint records on this site, but none is assigned to this task. That describes this dataset. It is not a statement that the API lacks such a call.

Brokers and platforms with no endpoint records at all are not listed above. The broker directory shows what is recorded for each.

Sections