Platform API
DXtrade API guide: auth, limits and brokers
Devexperts' platform with REST and WebSocket push APIs; trader access depends on the broker.
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.
Access, authentication and streaming
API types listed in the record: REST, WebSocket (Push API).
- How you get access
Client-side API exists, but you must go through your broker or prop firm, which controls permitted IPs.
Traders' FAQchecked
- Who can use it
Broker or prop firm dependent; Devexperts does not deal with traders directly.
Traders' FAQchecked
- Demo
No trader demo from Devexperts: the demo on the DXtrade website is for brokers and prop firms to trial the software. Ask your broker for a demo account.
DXtrade: Traders FAQchecked
- Authentication
Unverified. The DXtrade developer portal at demo.dx.trade/developers returned only a page title without scripts on 12 Oct 2026, as it did in September, so the authentication scheme could not be read. Devexperts' APIs page links to that portal and states nothing itself.
UnverifiedDXtrade developer portal (content did not render)checked
- Streaming
Push API over WebSockets for account and market data updates.
- History depth
Unverified. The DXtrade developer portal returned only a page title without scripts on 12 Oct 2026, so candle and trade history depth could not be read.
UnverifiedDXtrade developer portal (content did not render)checked
- Rate limits, as worded
Unverified. The DXtrade developer portal, where a limit would be written, returned only a page title without scripts on 12 Oct 2026. Devexperts' APIs page and its traders FAQ, both opened that day, state no limit. That is not evidence that there is none, and the FAQ says each broker decides whether to open the API at all.
UnverifiedDXtrade traders FAQchecked UnverifiedDXtrade APIschecked
DXtrade API endpoints
21 documented endpoints. They belong to the platform's own API, so the calls are the same whichever broker or firm the account is with. Only the base address can differ. Grouped by what they do
- POST/accounts/{accountCode}/closeClose the open positions on an account, cancel its working orders, or both, in one step, for every instrument or for one.
- GET/accounts/{accountCode}/eventsList events on an account that a trader needs to know of, such as liquidations and margin calls.
- GET/accounts/{accountCode}/instruments/queryRead the details of instruments as they are set for one account, since the platform can configure an instrument differently for different accounts.
- GET/accounts/{accountCode}/metricsRead the current metrics of an account, such as equity and profit and loss. The values move with the market, so the page expects polling or the push API.
- GET/accounts/{accountCode}/ordersList every open order on an account.
- POST/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.
- PUT/accounts/{accountCode}/ordersChange an order that is not yet final by sending the whole order request again with the changed fields.
- DELETE/accounts/{accountCode}/orders/{orderCode}Cancel one order on an account, named by the client's order code or by the platform's own code.
- GET/accounts/{accountCode}/orders/historyList an account's orders, both working and final, filtered by status, type, side, instrument or time.
- GET/accounts/{accountCode}/portfolioRead an account's portfolio: its open positions and working orders. Closed positions and completed orders are not in it.
- GET/accounts/{accountCode}/positionsList every open position on an account.
- GET/accounts/{accountCode}/transfersList the cash movements on an account over a period: deposits, withdrawals, commissions, financing and settled profit and loss.
- GET/conversionRatesRead the current conversion rate between two currencies, or from every currency to one.
- GET/instruments/{symbol}Read the general details of one instrument by its symbol.
- GET/instruments/querySearch the instruments the platform trades by symbol, with a wildcard, or by type, and page through the result.
- POST/loginLog in with a username, a domain and a password and receive a session token to send with every later request.
- POST/loginByTokenCreate a session token from a single sign on token in place of a password, for a system that holds no credentials of its own.
- POST/logoutEnd a token authentication session at once, so the session token stops working.
- POST/marketdataAsk for current quotes or for historical candles for one or more instruments. One call serves both, chosen by the event type in the body.
- POST/pingReset the expiry of a token authentication session without doing anything else. Not needed with HMAC authentication.
- GET/users/{username}Read the details of a user, which is how a program finds the accounts a login can use.
DXtrade messages
8 documented messages. They are messages sent over an open connection, not HTTP endpoints: none has a method or a path. Grouped by what they do, each with its summary
DXtrade Push API
DXtrade API error codes
79 decoded error codes. All DXtrade APIs errors
1 Authorization requiredDXtrade errorCode 1, description "Authorization required" (the vendor's wording).2 Entity not found at serverDXtrade errorCode 2, description "Entity not found at server" (the vendor's wording).3 Incorrect username or passwordDXtrade errorCode 3, description "Incorrect username or password" (the vendor's wording).11 Malformed HMAC signatureDXtrade errorCode 11, description "Malformed HMAC signature" (the vendor's wording).12 HMAC signature too oldDXtrade errorCode 12, description "HMAC signature too old" (the vendor's wording).13 HMAC signature mismatchDXtrade errorCode 13, description "HMAC signature mismatch" (the vendor's wording).31 Malformed query URIDXtrade errorCode 31, description "Malformed query URI" (the vendor's wording).32 Incorrect request parametersDXtrade errorCode 32, description "Incorrect request parameters" (the vendor's wording).33 Incorrect requestDXtrade errorCode 33, description "Incorrect request" (the vendor's wording).34 No proper permission is configuredDXtrade errorCode 34, description "No proper permission is configured" (the vendor's wording).35 Data not ready yetDXtrade errorCode 35, description "Data not ready yet" (the vendor's wording).99 Conditional request requiredDXtrade errorCode 99, description "Conditional request required" (the vendor's wording).100 Order with this id already existsDXtrade errorCode 100, description "Order with this id already exists" (the vendor's wording).101 Client-DXtrade errorCode 101, description "Client-originated identifier is not valid" (the vendor's wording).originated identifier is not valid 110 A system error has occurredDXtrade errorCode 110, description "A system error has occurred" (the vendor's wording).400 Bad RequestDXtrade REST API: The client sent a malformed request, such as one missing the Host header, or a semantically incorrect request.401 UnauthorizedDXtrade REST API: The client is not authorised in the system.403 ForbiddenDXtrade REST API: The client submitted a request without the required condition.404 Not FoundDXtrade REST API: Either the resource does not exist or the client is not permitted to access it.405 Method Not AllowedDXtrade REST API: The HTTP method in the request is not permitted for this resource.406 Not AcceptableDXtrade REST API: The API does not support the representation format asked for.409 ConflictDXtrade REST API: The API understood the request, but it has semantic issues and could not be validated.412 Precondition FailedDXtrade REST API: A conditional request failed.413 Request Entity Too LargeDXtrade REST API: The REST API refuses to process the request because its size is greater than a predefined threshold.415 Unsupported Media TypeDXtrade REST API: The client sent the message body in a format the server does not understand, that is neither application/xml nor application/json.429 Too Many RequestsDXtrade REST API: The user sent too many requests in a given amount of time.500 Internal Server ErrorDXtrade REST API: An unexpected error occurred on the server.1005 Reference order is closedDXtrade errorCode 1005, description "Reference order is closed" (the vendor's wording).BusinessRejectReason 0 OtherIn the DXtrade FIX Trading API, Other is value 0 of the BusinessRejectReason (380) field of a BusinessMessageReject.BusinessRejectReason 1 Unknown IDIn the DXtrade FIX Trading API, Unknown ID is value 1 of the BusinessRejectReason (380) field of a BusinessMessageReject.BusinessRejectReason 2 Unknown SecurityIn the DXtrade FIX Trading API, Unknown Security is value 2 of the BusinessRejectReason (380) field of a BusinessMessageReject.BusinessRejectReason 3 Unsupported Message TypeIn the DXtrade FIX Trading API, Unsupported Message Type is value 3 of the BusinessRejectReason (380) field of a BusinessMessageReject.BusinessRejectReason 5 Conditionally Required Field MissingIn the DXtrade FIX Trading API, Conditionally Required Field Missing is value 5 of the BusinessRejectReason (380) field of a BusinessMessageReject.CONDITIONALLY_In the DXtrade FIX Trading API, CONDITIONALLY_REQUIRED_FIELD_MISSING is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.REQUIRED_ FIELD_ MISSING CxlRejReason 0 TOO_In the DXtrade FIX Trading API, TOO_LATE_TO_CANCEL is value 0 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.LATE_ TO_ CANCEL CxlRejReason 1 UNKNOWN_In the DXtrade FIX Trading API, UNKNOWN_ORDER is value 1 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.ORDER CxlRejReason 2 BROKER_In the DXtrade FIX Trading API, BROKER_EXCHANGE_OPTION is value 2 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.EXCHANGE_ OPTION CxlRejReason 3 ORDER_In the DXtrade FIX Trading API, ORDER_ALREADY_IN_PENDING_CANCEL_OR_PENDING_REPLACE_STATUS is value 3 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.ALREADY_ IN_ PENDING_ CANCEL_ OR_ PENDING_ REPLACE_ STATUS CxlRejReason 5 ORIGORDMODTIME_In the DXtrade FIX Trading API, ORIGORDMODTIME_DID_NOT_MATCH_LAST_TRANSACTTIME_OF_ORDER is value 5 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.DID_ NOT_ MATCH_ LAST_ TRANSACTTIME_ OF_ ORDER CxlRejReason 6 DUPLICATE_In the DXtrade FIX Trading API, DUPLICATE_CLORDID_RECEIVED is value 6 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.CLORDID_ RECEIVED CxlRejReason 18 INVALID_In the DXtrade FIX Trading API, INVALID_PRICE_INCREMENT is value 18 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.PRICE_ INCREMENT CxlRejReason 99 OTHERIn the DXtrade FIX Trading API, OTHER is value 99 of the CxlRejReason (102) field, the reason given when a cancel or replace request is rejected.INTERNAL_In the DXtrade FIX Trading API, INTERNAL_ERROR is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.ERROR MARKET_In the DXtrade FIX Trading API, MARKET_CONDITIONS_CHANGED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.CONDITIONS_ CHANGED NO_In the DXtrade FIX Trading API, NO_LIQUIDITY is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.LIQUIDITY ORDER_In the DXtrade FIX Trading API, ORDER_CANNOT_BE_ACTIVATED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.CANNOT_ BE_ ACTIVATED ORDER_In the DXtrade FIX Trading API, ORDER_NOT_EXECUTED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.NOT_ EXECUTED ORDER_In the DXtrade FIX Trading API, ORDER_QUOTE_NOT_AVAILABLE is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.QUOTE_ NOT_ AVAILABLE ORDER_In the DXtrade FIX Trading API, ORDER_TOO_LATE_TO_CANCEL is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.TOO_ LATE_ TO_ CANCEL ORDER_In the DXtrade FIX Trading API, ORDER_TOO_LATE_TO_REPLACE_CANCEL is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.TOO_ LATE_ TO_ REPLACE_ CANCEL ORDER_In the DXtrade FIX Trading API, ORDER_UNEXPECTED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.UNEXPECTED OrdRejReason 0 BROKER_In the DXtrade FIX Trading API, BROKER_EXCHANGE_OPTION is value 0 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.EXCHANGE_ OPTION OrdRejReason 1 UNKNOWN_In the DXtrade FIX Trading API, UNKNOWN_SYMBOL is value 1 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.SYMBOL OrdRejReason 2 EXCHANGE_In the DXtrade FIX Trading API, EXCHANGE_CLOSED is value 2 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.CLOSED OrdRejReason 3 ORDER_In the DXtrade FIX Trading API, ORDER_EXCEEDS_LIMIT is value 3 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.EXCEEDS_ LIMIT OrdRejReason 6 DUPLICATE_In the DXtrade FIX Trading API, DUPLICATE_ORDER is value 6 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.ORDER OrdRejReason 11 UNSUPPORTED_In the DXtrade FIX Trading API, UNSUPPORTED_ORDER_CHARACTERISTIC is value 11 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.ORDER_ CHARACTERISTIC OrdRejReason 13 INCORRECT_In the DXtrade FIX Trading API, INCORRECT_QUANTITY is value 13 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.QUANTITY OrdRejReason 15 UNKNOWN_In the DXtrade FIX Trading API, UNKNOWN_ACCOUNT is value 15 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.ACCOUNT OrdRejReason 18 INVALID_In the DXtrade FIX Trading API, INVALID_PRICE_INCREMENT is value 18 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.PRICE_ INCREMENT OrdRejReason 99 OTHERIn the DXtrade FIX Trading API, OTHER is value 99 of the OrdRejReason (103) field, which the vendor says is present only on rejected orders.OTHERIn the DXtrade FIX Trading API, OTHER is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.PBASED_In the DXtrade FIX Trading API, PBASED_MARKET_ORDER_REPLACE_NOT_ALLOWED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.MARKET_ ORDER_ REPLACE_ NOT_ ALLOWED PBASED_In the DXtrade FIX Trading API, PBASED_NO_POSITION_FOR_CLOSE is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.NO_ POSITION_ FOR_ CLOSE PBASED_In the DXtrade FIX Trading API, PBASED_ORDER_NOT_ENOUGH_WORKING_QUANTITY is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.ORDER_ NOT_ ENOUGH_ WORKING_ QUANTITY PBASED_In the DXtrade FIX Trading API, PBASED_ORDER_WRONG_CLOSING_DIRECTION is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.ORDER_ WRONG_ CLOSING_ DIRECTION PBASED_In the DXtrade FIX Trading API, PBASED_REPLACE_POSITION_QUANTITY_NOT_ALLOWED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.REPLACE_ POSITION_ QUANTITY_ NOT_ ALLOWED Reject 429 Too Many RequestsDXtrade Push API: the vendor says that if the access rate is exceeded, a Reject message "429 Too Many Requests" is sent.VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_ACCOUNT_EXPIRED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ ACCOUNT_ EXPIRED VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_ACCOUNT_TERMINATED is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ ACCOUNT_ TERMINATED VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_INSTRUMENT_OUT_OF_TRADING_HOURS is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ INSTRUMENT_ OUT_ OF_ TRADING_ HOURS VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_LIQUIDATION_IS_IN_PROGRESS is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ LIQUIDATION_ IS_ IN_ PROGRESS VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_MAX_ORDER_SIZE is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ MAX_ ORDER_ SIZE VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_MIN_ORDER_SIZE is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ MIN_ ORDER_ SIZE VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_MIN_ORDER_SIZE_INCREMENT is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ MIN_ ORDER_ SIZE_ INCREMENT VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_NON_POSITIVE_PROSPECTIVE_BP is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ NON_ POSITIVE_ PROSPECTIVE_ BP VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_OUT_OF_MARKET_HOURS is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ OUT_ OF_ MARKET_ HOURS VALIDATION_In the DXtrade FIX Trading API, VALIDATION_FAILED_POSITION_LIMIT is an error code carried at the start of the Text (58) field of a business reject, in the form Error_Code:Descriptive_Text.FAILED_ POSITION_ LIMIT WebSocket close code 1013DXtrade Push API: when a client cannot consume data fast enough and data builds up in the outgoing queue beyond the maximum queue size configured on the server, the vendor says the websocket session is forcibly closed with the code 1013.
DXtrade API: questions and answers
Each answer is read from the record on this page, not written separately. Where the record is unverified, the answer says so.
How do I get access to the DXtrade API?
Client-side API exists, but you must go through your broker or prop firm, which controls permitted IPs.
Traders' FAQchecked
Who can use the DXtrade API?
Broker or prop firm dependent; Devexperts does not deal with traders directly.
Traders' FAQchecked
DXtrade API demo: is there a demo or sandbox?
No trader demo from Devexperts: the demo on the DXtrade website is for brokers and prop firms to trial the software. Ask your broker for a demo account.
DXtrade: Traders FAQchecked
What are the DXtrade API rate limits?
Unverified. The DXtrade developer portal, where a limit would be written, returned only a page title without scripts on 12 Oct 2026. Devexperts' APIs page and its traders FAQ, both opened that day, state no limit.
UnverifiedDXtrade traders FAQchecked UnverifiedDXtrade APIschecked
How does DXtrade API authentication work?
Unverified. The DXtrade developer portal at demo.dx.trade/developers returned only a page title without scripts on 12 Oct 2026, as it did in September, so the authentication scheme could not be read.
UnverifiedDXtrade developer portal (content did not render)checked
Does the DXtrade API support streaming?
Push API over WebSockets for account and market data updates.
How much history does the DXtrade API return?
Unverified. The DXtrade developer portal returned only a page title without scripts on 12 Oct 2026, so candle and trade history depth could not be read.
UnverifiedDXtrade developer portal (content did not render)checked
DXtrade API questions, each answered in a sentence or two.
Everything this site records for DXtrade APIs, as one JSON file. Each section of the file states its own licence. About the files. This page as Markdown.
DXtrade API guides and reference
DXtrade API compared
The same fields from two records, side by side. No winner is picked.
What changed recently for the DXtrade API
Addition
DXtrade added the ability for firms to manage settings and profiles through its REST API, so brokers can automate configuration across environments.
DXtrade has Announced its Latest Round of Updatesdate last opened not recorded
Documentation
Devexperts published the DXtrade XT FIX Trading API, REST API, Notifications API and Administrative REST API specifications publicly online.
DXtrade XT Updates: Automatic Liquidation for Options, New DXcharts, API Improvementsdate last opened not recorded
Every dated change, all brokers and platforms. Follow DXtrade changes by RSS
Brokers that offer DXtrade APIs
No broker on this register is recorded as offering DXtrade APIs. That is a gap in the records, not a finding that none does.
How to cite this
DXtrade API guide: auth, limits and brokers. Broker API Hub, https://openbrokerapi.com/platforms/dxtrade, newest check .
Where you rely on a single figure, cite the source and the checked date printed beside it as well.