Order Management errors

Errors returned by the Order Management REST API. The Market Data, News v1 and Order Management APIs share this format. Other Openmarkets APIs do not: the back office APIs return a different envelope, and Account Opening returns an RFC 7807 problem document.

Error format

All error responses carry an appropriate HTTP status code and the following body:

{
    "errorCode": "InvalidRequestParameters",
    "message": "Bad request. Please review errors.",
    "errors": [
        {
            "errorCode": "InvalidLifetime",
            "fieldName": "Lifetime",
            "fieldValue": "123",
            "message": "Lifetime: '123' is invalid. Choose from: Date, EndOfDay, GoodTillCancel, FillAndKill, FillOrKill."
        }
    ]
}
FieldDescription
errorCodeTop-level error code. Identifies the type of top-level error.
messageHuman readable message describing the error.
errorsArray of errors specific to invalid request parameters passed by the client. May be null.
errors[].errorCodeParameter-level error code. Identifies the type of parameter error.
errors[].fieldNameThe name of the field in the request.
errors[].fieldValueThe value passed in the field by the client.
errors[].messageHuman readable message describing the error.

Match on errorCode rather than message. Messages are written for humans and may change; codes are stable.

Top-level errors

The three vetting and order action codes are unique to this API.

StatusError codeNotes
400RequestMissingThe entire request is missing and needs to be set by the client.
400InvalidRequestParametersThe request contains invalid parameters. The offending parameters are listed in the errors array.
400BrokenVettingRuleThe parameters used to create or amend an order broke a vetting rule. See message for more details.
400ActionUnavailableThe action requested against the order is unavailable. See message for more details.
400ActionTemporarilyUnavailableThe action requested against the order is temporarily unavailable. See message for more details.
403AccessDeniedYour client doesn't have access to this endpoint. Try calling DELETE /sessions/application/v1 and retrying; if it still fails, contact support.
404EndpointNotFoundThe endpoint called does not exist.
429ApiCallsFrequencyExceededRequests exceeded the maximum allowed for the time period, for example 30 calls per second. Back off and retry with increasing delay.
429ActiveApiCallsExceededToo many requests are in flight at once. Active requests are those that have not returned yet, including open update subscriptions.
429MaxUpdatesQueuedExceededToo many updates queued since the last call. Poll the updates endpoint more often, or narrow the subscription so it returns fewer updates.
500InternalServerErrorAn unhandled error occurred. If it persists after retrying, contact support with the request made.
503ServiceUnavailableA temporary error occurred. If it persists after retrying, contact support with the request made.

Request tracking errors

Update subscriptions are correlated across calls by the X-Request-ID header. These parameter-level codes relate to that header.

Error codeNotes
InvalidRequestIdsThe RequestIds parameter passed in the request is invalid. See message for more details.
RequestAlreadyProcessedThe request ID used in the X-Request-ID header has already been processed by another request.
RequestAlreadyInUseThe request ID used in the X-Request-ID header is already being used for a different updates subscription.
RequestNotFoundThe request ID used to retrieve updates could not be found. Restart the updates subscription flow.

Parameter-level errors

Error codeNotes
InvalidAccountCodeThe account code passed in the request is invalid. See message for more details.
InvalidAccountGroupThe account group passed in the request is invalid. See message for more details.
InvalidAdvisorCodeThe advisor code passed in the request is invalid. See message for more details.
InvalidAdvisorGroupThe advisor group passed in the request is invalid. See message for more details.
InvalidSecurityCodeThe security code passed in the request is invalid. See message for more details.
InvalidSideThe side passed in the request is invalid. See message for more details.
InvalidOrderPriceThe order price passed in the request is invalid. See message for more details.
InvalidOrderVolumeThe order volume passed in the request is invalid. See message for more details.
InvalidPricingInstructionThe pricing instruction passed in the request is invalid. See message for more details.
InvalidLifetimeThe lifetime passed in the request is invalid. See message for more details.
InvalidExpiryDateTimeThe expiry date-time passed in the request is invalid. See message for more details.
InvalidNotesThe notes passed in the request are invalid. See message for more details.
InvalidExchangeThe exchange passed in the request is invalid. See message for more details.
InvalidDestinationThe destination passed in the request is invalid. See message for more details.
InvalidFixedContingentOrderThe fixed contingent order passed in the request is invalid. See message for more details.
InvalidTriggerPriceThe trigger price passed in the request is invalid. See message for more details.
InvalidTriggerPriceTypeThe trigger price type passed in the request is invalid. See message for more details.
InvalidTriggerConditionThe trigger condition passed in the request is invalid. See message for more details.
InvalidOrderNumbersThe order numbers passed in the request are invalid. See message for more details.
InvalidOrderNumberThe order number passed in the request is invalid. See message for more details.
InvalidDateTimeFromThe DateTimeFrom parameter passed in the request is invalid. See message for more details.
InvalidDateTimeToThe DateTimeTo parameter passed in the request is invalid. See message for more details.
InvalidUpdatesThe Updates header parameter passed in the request is invalid. See message for more details.

Post-creation order vetting errors

An order can be accepted by the API and then held by a vetting rule. When that happens the reason appears in Order.StateDescription.

These are not HTTP errors. The request succeeds, so you must read orderState and stateDescription on the order to discover it was held.

Limits and balances

Order.StateDescription
Max order value limit breached
Concurrent bid/offer breached
Order value limit exceeded
Net day limit exceed
Gross day limit exceeded
Check Cash balance
Check Positions

Authorisation required

Order.StateDescription
ETO Orders Require DTR Authorisation
Warrant Orders Require DTR Authorisation
Chi-X Warrant Require DTR Authorisation
NSX Orders Require DTR Authorisation
Out of Market hours. Your order will be authorised the next business day before 10am

Price range breaches

The same six price checks are applied per market phase. The phase appears in parentheses at the start of the description.

CheckPhases
OrderRangePercentBreachETF, OPEN, PRE-CLOSE, PRE-OPEN, TRADING HALT
PriceRangeOrdersValuedLessThanValueBreachETF, OPEN, PRE-CLOSE, PRE-OPEN, TRADING HALT
PriceRangePercentFromBidAskBreachETF, OPEN, PRE-CLOSE, PRE-OPEN, TRADING HALT
PriceRangePercentFromLastBreachETF, PRE-CLOSE, PRE-OPEN, TRADING HALT
PriceRangePercentFromLastValueBreachOPEN
PriceRangeValidPriceStepBidAskBreachETF, OPEN, PRE-CLOSE, PRE-OPEN, TRADING HALT
PriceRangeValidPriceStepFromLastBreachETF, OPEN, PRE-CLOSE, PRE-OPEN, TRADING HALT

ETF phase descriptions are suffixed with - CHECK PRICE, for example:

(ETF) PriceRangePercentFromBidAskBreach - CHECK PRICE
(PRE-OPEN) OrderRangePercentBreach