REST API (1.0.1)

Welcome to the Integral REST API reference.

Our REST API is for less latency-sensitive participants and has resource-oriented URLs, accepts JSON-encoded requests, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Contact Integral’s account management team to get connection details and credentials for access.

Authentication options

You can choose between two authentication methods:

Token-based authentication

An ID and password will be issued to you to generate and refresh/renew an access token. All REST API calls should pass this token to access authenticated services.

Get token

Users should use /v2/sso/login to get an access token. The access token is in SSO_TOKEN of the response header. Your token is valid for a limited time.

Pass token

The token should be sent in SSO_TOKEN of request headers.

Renew token

To keep your session alive, you can renew your token with /sso/tokens/renew. If your token is expired, you are issued a new token.

HMAC authentication

In this authentication method, you must sign each API request with a 'secret'. The 'secret' and 'userId' are issued to you during set up.

All REST requests must contain following header information:

Header attribute Description
AuthorizationThe base64-encoded signature.
DateA date and time as standard UTC string.
DigestSHA-256=base64(sha256(<body>)) If there is no request body, Digest should be set to the digest of a body of 0 length.
typeSet to hmac.

You must send an authorization header with the following parameterization:

credentials := "hmac" params
params := userId "," algorithm ", " headers ", " signature
userId := "username" "=" plain-string
algorithm := "algorithm" "=" DQUOTE (hmac-sha256) DQUOTE
headers := "headers" "=" plain-string
signature := "signature" "=" plain-string
plain-string   = DQUOTE *( %x20-21 / %x23-5B / %x5D-7E ) DQUOTE

Signature parameters

Parameter Description
usernameThe ID of the credential.
algorithmDigital signature algorithm used to create the signature. You should use hmac-sha256.
headersList of HTTP header names, separated by a single space character, used to sign the request.
signatureBase64 encoded digital signature generated by the client.

Sample authorization header

Authorization: hmac userId="user2@XCN1139",
  algorithm="hmac-sha256",
  headers="date content-type content-length",
  signature="XWL1oxJsbC4z3UvO6ZfvgjMvfj249WXSb7Gl/+t/Ql0="

Signature string construction

To generate the string that is signed with a secret, the client must take the values of each HTTP header specified by headers in the order they appear.

  1. If the header name is not request-line, then append the lowercase header name followed with an ASCII colon : and an ASCII space ' '.
  2. If the header name is request-line, then append the HTTP request line (in ASCII format), otherwise append the header value.
  3. If the value is not the last value, then append an ASCII newline \n. The string must not include a trailing ASCII newline.

API tracing

You can set X-Request-ID on the request's HTTP header to trace each API call. The system echos back this header in the response.

Status and error codes

All Integral REST APIs use the following general status codes. See endpoints for specific codes.

HTTP code HTTP statusMeaning
200OKSuccessful submission.
202ACCEPTEDRequest accepted by the system. You are expected to make another API call. Refer to individual API sections and endpoints for subsequent action.
400BAD REQUESTThere is an issue with request parameters. May have a message body that indicates the error. Refer to individual API sections and endpoints for specific errors.
401UNAUTHORIZEDYour IntegralAPI user is not authorized. May have a message body that indicates the error.
404NOT FOUNDThe endpoint could not be found. Either your valid request did not return any results or your request was malformed. May have a message body that indicates the error. Refer to individual API endpoints to confirm that the endpoint URL and parameters are correct.
500INTERNAL SERVER ERRORStop trading immediately and contact Integral Business Support with a complete error message and full details of the HTTP request and response. May have a message body that indicates the error.

4xx and 5xx status codes may return a JSON response body with the message parameter.

Reason codes

You determine the status of any call with a combination of:

  • Status code from the messaging technology (for example, REST/HTTP codes 200 and 404).
  • The reason code for the server. Not all responses include a reason code.

Use the following codes to interpret and act on status responses.

Reason code Description
RequestValidationError.amountOrder size is invalid.
RequestValidationError.CoIdNotSpecifiedClient order ID not specified.
RequestValidationError.DuplicateOrderOrder already exists for the given client order ID.
RequestValidationError.TypeNotSpecifiedOrder type not specified.
RequestValidationError.TIFNotSpecifiedTime in force not specified.
RequestValidationError.SideNotSpecifiedOrder side (buy or sell) not specified.
RequestValidationError.CurrencyNotSpecifiedOrder dealt currency not specified.
RequestValidationError.InvalidDealtCcyDealt currency is neither base currency nor term currency.
RequestValidationError.SymbolNotSpecifiedSymbol not specified.
RequestValidationError.InvalidCurrencyPairSymbol not valid or not supported by the system.
RequestValidationError.SizeNotSpecifiedOrder size not specified.
RequestValidationError.InvalidOrderQtyOrder size not valid.
RequestValidationError.InvalidPriceAccepted price invalid. Zero is invalid price.
RequestValidationError.BuySellMismatchBuy/Sell side of the accepted price is incorrect.
RequestValidationError.InvalidQuoteIDThe rateId of the previously quoted (PQ) order is invalid.
RequestValidationError.LegalEntitySetIncorrectlyAccount field incorrect.
RequestValidationError.OrderTypeNotSupportedOrder type not supported.
RequestValidationError.PriceMismatchAccepted price not the same as previously quoted price.
RequestValidationError.QuoteExpiredRate associated with the rateId not found. It has expired. Price is no longer valid.
RequestValidationError.tradingDisabledTrading is disabled.
Overview
License Integral
Languages
Servers
Mock server
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/

Authentication API

Endpoints to login with token-based authentication.

Operations

Market data

Endpoints to get prices, indicative rates, benchmark rates, and trade ticker rates.

Operations

Orders

Place, cancel, and query orders.

Operations

Place order

Request

Place a new order. You can place various types of order such as limit, market, at best, previously quoted, stop, algo, pegged, and more. Under algo orders you can execute various strategies such as TWAP.

Returns status code 202 if your order is accepted by the system for processing. Use the query order endpoints to get the current status of your order Query order (client ID or all active orders) or Query order (server ID).

You can get all trades associated with an order using Query all trades on an order by ID. Trades contain information like counterparty, settlement date, and amount.

Required request attributes for all order types

All place-order requests must have the following attributes:

  • coId
  • type
  • side
  • symbol
  • size
  • currency

Conditionally required request attributes and values

Your request may require additional attributes based on the order type or attribute values.

For example, if you place an order with timeInForce=GTT (good-til-canceled) you must also specify expiryTime.

Order typeRequired attributes and values
Limit(IOC)type=Limit, timeInForce=IOC, price
Limit(GTC)type=Limit, timeInForce=GTC, price
Limit(GTT)type=Limit, timeInForce=GTT, expiryTime, price
Market(IOC)type=Market, timeInForce=IOC, price
At besttype=AtBest, timeInForce=FOK, valueDate
Stoptype=Stop, price, stopPrice, execFlags=BidTrigger|OfferTrigger|MidTrigger
Previously quotedtype=PQ, timeInForce=FOK, price, rateId
Algo (TWAP)type=Algo, timeInForce=GTC, targetStrategy
On behalf ofprice, org, account
Bodyapplication/json
coIdstring<= 255 charactersrequired

Client order ID assigned by the API user.

rateIdstring<= 255 characters

Unique identifier for rate. Required for Previously Quoted Orders.

typestring<= 20 charactersrequired
  • Limit
  • AtBest
  • Market
  • Stop
  • StopLimit
  • Pegged
  • Algo
  • PQ (previously quoted)
sidestring<= 10 charactersrequired

Buy or Sell from the order placer’s perspective and always for the dealt currency.

symbolstring<= 35 charactersrequired

Base and term currency separated by a slash / (for example EUR/USD).

sizenumber(double)required

Order amount.

currencystring<= 17 charactersrequired

Dealt currency.

pricenumber(double)

Order’s requested limit price.

priceTypestring<= 32 characters

Optional for At Best orders.

  • Spot
  • Outright
  • NDF
timeInForcestring<= 20 characters
  • GTC
  • IOC
  • FOK (required for at-best orders)
  • GTT (must specify expiryTime)
  • DAY
orgstring<= 30 characters

Organization ID in Integral's system. If the order iss placed on behalf of another organization, this parameter contains the other organization's ID.

accountstring<= 30 characters

The ID of the account (legal entity) for which the order iss placed. Required when placing orders on behalf of another organization.

expiryTimeinteger(int64)

Expiry time when timeInForce=GTT. In seconds. Max value is one day (86399 seconds).

valueDatestring<= 20 characters

Value date in the format YYYY-MM-DD. Required for at-best orders.

stopPricenumber(double)

Order’s stop price (if any).

execFlagsArray of strings

Execution strategy requested with order:

  • BidTrigger: Stay on bid side
  • MidTrigger: Mid price
  • OfferTrigger: Stay on offer side
minQtynumber(double)

Minimum fill size (if any) in dealt currency.

maxShownumber(double)

Amount of the order visible to other market participants:

  • 0 (zero) or undefined: Hidden: Order is not visible to other customers.
  • Equal to size: Display: Full order amount visible to other customers.
  • Less than size: Iceberg: Only the value of maxShow visible.
targetStrategystring<= 32 characters

(Algo) The algo or strategy of the order:

  • Mid
  • Fixing
  • Twap
  • LitSwitch
  • DarkSwitch
executionStartTimestring<= 32 characters

(Algo) Relative time at which the strategy should start execution specified in the format HH:MM:SS.sss. If not specified, the strategy starts executing immediately.

executionEndTimestring<= 32 characters

(Algo) Absolute time in GMT at which the strategy should stop executing. If not specified, the order expires based on the value of its time in force.

pegPriceTypestring<= 32 characters

The rate the order is pegged to:

  • Mid: Pegged to mid rate.
pegOffsetValuenumber(double)

The amount in pips that is added to the price of the peg. Can be positive or negative.

actionOnExpirystring<= 32 characters

(Algo) Action taken at the end of the algo’s duration if there is an unfilled amount remaining. If not specified, the order is cancelled at expiration. NoAction, FillAtMarket, Twap

sliceSizenumber(double)

(Algo) The fixed size of each slice.

passiveTimeinteger(int64)

(Algo) Time for which each slice rests in OCX RiskNet. Specified in milliseconds. Overrides passiveTimeFactor.

passiveTimeFactorPercentagenumber(double)

(Algo) Determines how long each slice rests in OCX RiskNet, calculated as a percent of the actual slice interval. Required if passiveTime is not set

sliceIntervalinteger(int64)

(Algo) Interval between slices in milliseconds. If the interval is fixed, this value is the interval duration. If the interval is randomized, this value is the upper boundary of random values.

randomizeSliceSizePercentagenumber(double)

(Algo) The percentage range that the sliceSize is randomized.

randomizeSliceIntervalPercentagenumber(double)

(Algo) The percentage range that the sliceInterval is randomized.

tobRangenumber(double)

(Algo) If sliceSize undefined, the slice size is this percentage of the top-of-book price size.

application/json
{ "coId": "8932452311944", "type": "Limit", "side": "Buy", "symbol": "EUR/USD", "currency": "EUR", "size": 1000000, "price": 1.0971678, "timeInForce": "IOC" }

Responses

Bodyapplication/json
coIdstring<= 255 charactersrequired

Client order ID assigned by the API user.

typestring<= 20 charactersrequired
  • Limit
  • AtBest
  • Market
  • Stop
  • StopLimit
  • Pegged
  • Algo
  • PQ (previously quoted)
timeInForcestring<= 20 charactersrequired
  • GTC
  • IOC
  • FOK
  • GTT
  • DAY
sidestring<= 10 charactersrequired

Buy or Sell from the order placer’s perspective and always for the dealt currency.

currencystring<= 17 charactersrequired

Dealt currency.

symbolstring<= 35 charactersrequired

Base and term currency separated by a slash / (for example EUR/USD).

sizenumber(double)required

Order amount.

rateIdstring<= 255 characters

Unique identifier for rate. Required for Previously Quoted Orders.

orgstring<= 30 characters

Organization ID in Integral's system. If the order was placed on behalf of another organization, this parameter contains the other organization's ID.

accountstring<= 30 characters

The ID of the account (legal entity) for which the order was placed. Required when placing orders on behalf of another organization.

pricenumber(double)

Order’s limit price, if any.

priceTypestring<= 32 characters

Optional for At Best orders.

  • Spot
  • Outright
  • NDF
expiryTimeinteger(int64)

Expiry time when timeInForce=GTT. In seconds. Max value is one day (86399 seconds).

clientOrderTimestring<= 32 characters

Time the order was submitted in the format yyyy-MM-dd HH:mm:ss,SSS Z.

tradeChannelstring<= 128 characters

The app or workflow that originated the order.

targetStrategystring<= 32 characters

Algo: The algo or strategy of the order:

  • Mid
  • Fixing
  • Twap
  • LitSwitch
  • DarkSwitch
originalCoIdstring<= 255 characters

The original client order ID of the order to be cancelled or replaced by this request.

stopPricenumber(double)

Order’s stop price (if any).

execFlagsArray of strings

Execution strategy requested with order:

  • BidTrigger: Stay on bid side
  • MidTrigger: Mid price
  • OfferTrigger: Stay on offer side
minQtynumber(double)

Minimum fill size (if any) in dealt currency.

maxShownumber(double)

Amount of the order visible to other market participants:

  • 0 (zero) or undefined: Hidden: Order is not visible to other customers.
  • Equal to size: Display: Full order amount visible to other customers.
  • Less than size: Iceberg: Only the value of maxShow visible.
averagePricenumber(double)

Average price of all fills so far. For orders and order types with timeInForce=FOK such as at-best orders, this is the filled price.

cumQtynumber(double)

Total cumulative amount filled so far.

orderIdstring<= 60 characters

Order ID assigned by Integral.

valueDatestring<= 20 characters

Value date in the format YYYY-MM-DD.

tradeDatestring<= 20 characters

Trade date of fill.

executionTypestring<= 30 characters
  • CANCELED
  • NEW
  • PARTIAL_FILL
  • PENDING_NEW
  • TRADE
leavesQtynumber(double)

Unfilled amount as of the most recent fill.

counterpartystring<= 30 characters

Counterparty organization ID.

counterPartyAccountstring<= 30 characters

Counterparty legal entity ID.

transactTimeinteger(int64)

UTC time of last event on the order in milliseconds.

userFullNamestring<= 128 characters

Fully qualified user name of order submitting user, including namespace and organization ID in the format userName@namespace.orgID.

actionstring<= 32 characters
  • place
  • cancel
  • cancelAll
statusstring<= 32 characters
  • RECEIVED: Order received.
  • NEW: Order has been entered and is working according to the order type and specified execution strategy.
  • PARTIALLY_FILLED: Trade done that does not completely fill the order.
  • FILLED: Trade done that completely fills the order.
  • PENDING_CANCEL: Cancel order request has been received and is in process.
  • CANCELED: Order has been canceled.
  • REPLACED: Order has been replaced with a new order.
  • STOPPED: Price matching has been paused for the order.
  • REJECTED: Order has been rejected.
  • EXPIRED: Order expired.
  • FAILED: Order failed.
reasonstring<= 128 characters

Orders with status=FAILED or status=REJECTED, the reason for failure or rejection. INTERNAL_SERVER_ERROR indicates a serious error. Stop trading immediately and contact Business Support to resolve the issue.

customerIdstring<= 30 characters

Customer ID on whose behalf the order is placed.

executionStartTimestring<= 32 characters

Relative time at which the strategy should start execution specified in the format HH:MM:SS.sss. If not specified, the strategy starts executing immediately.

executionEndTimestring<= 32 characters

Absolute time in GMT at which the strategy should stop executing. If not specified, the order expires based on the value of its time in force.

pegPriceTypestring<= 32 characters

The rate the order is pegged to:

  • Mid: Pegged to mid rate.
pegOffsetValuenumber(double)

The amount in pips that is added to the price of the peg. Can be positive or negative.

actionOnExpirystring<= 32 characters

Action taken at the end of the algo’s duration if there is an unfilled amount remaining. If not specified, the order is cancelled at expiration. NoAction, FillAtMarket, Twap

sliceSizenumber(double)

The fixed size of each slice.

passiveTimeinteger(int64)

Time for which each slice rests in OCX RiskNet. Specified in milliseconds. Overrides passiveTimeFactor.

passiveTimeFactorPercentagenumber(double)

Determines how long each slice rests in OCX RiskNet, calculated as a percent of the actual slice interval. Required if passiveTime is not set

sliceIntervalinteger(int64)

Interval between slices in milliseconds. If the interval is fixed, this value is the interval duration. If the interval is randomized, this value is the upper boundary of random values.

randomizeSliceSizePercentagenumber(double)

The percentage range that the sliceSize is randomized.

randomizeSliceIntervalPercentagenumber(double)

The percentage range that the sliceInterval is randomized.

tobRangenumber(double)

If sliceSize undefined, the slice size is this percentage of the top-of-book price size.

Response
application/json

Successful limit order

{ "coId": "8932452311944", "type": "Limit", "timeInForce": "IOC", "side": "Buy", "currency": "EUR", "symbol": "EUR/USD", "size": 1000000, "org": "BrokerOrg1", "price": 1.0971678, "orderId": "4820276016", "userFullName": "User1@pfOrg", "action": "place", "status": "RECEIVED" }

Query order (client ID or all active orders)

Request

Get the order for the given client order ID. Omit the request parameter coId to return all active orders.

Query
coIdstring<= 255 characters

The coId assigned by you when you placed the order. Omit to return all active orders.

Example: coId=Order25
No request payload

Responses

An array of orders that match the request.

Bodyapplication/jsonArray [
coIdstring<= 255 charactersrequired

Client order ID assigned by the API user.

typestring<= 20 charactersrequired
  • Limit
  • AtBest
  • Market
  • Stop
  • StopLimit
  • Pegged
  • Algo
  • PQ (previously quoted)
timeInForcestring<= 20 charactersrequired
  • GTC
  • IOC
  • FOK
  • GTT
  • DAY
sidestring<= 10 charactersrequired

Buy or Sell from the order placer’s perspective and always for the dealt currency.

currencystring<= 17 charactersrequired

Dealt currency.

symbolstring<= 35 charactersrequired

Base and term currency separated by a slash / (for example EUR/USD).

sizenumber(double)required

Order amount.

rateIdstring<= 255 characters

Unique identifier for rate. Required for Previously Quoted Orders.

orgstring<= 30 characters

Organization ID in Integral's system. If the order was placed on behalf of another organization, this parameter contains the other organization's ID.

accountstring<= 30 characters

The ID of the account (legal entity) for which the order was placed. Required when placing orders on behalf of another organization.

pricenumber(double)

Order’s limit price, if any.

priceTypestring<= 32 characters

Optional for At Best orders.

  • Spot
  • Outright
  • NDF
expiryTimeinteger(int64)

Expiry time when timeInForce=GTT. In seconds. Max value is one day (86399 seconds).

clientOrderTimestring<= 32 characters

Time the order was submitted in the format yyyy-MM-dd HH:mm:ss,SSS Z.

tradeChannelstring<= 128 characters

The app or workflow that originated the order.

targetStrategystring<= 32 characters

Algo: The algo or strategy of the order:

  • Mid
  • Fixing
  • Twap
  • LitSwitch
  • DarkSwitch
originalCoIdstring<= 255 characters

The original client order ID of the order to be cancelled or replaced by this request.

stopPricenumber(double)

Order’s stop price (if any).

execFlagsArray of strings

Execution strategy requested with order:

  • BidTrigger: Stay on bid side
  • MidTrigger: Mid price
  • OfferTrigger: Stay on offer side
minQtynumber(double)

Minimum fill size (if any) in dealt currency.

maxShownumber(double)

Amount of the order visible to other market participants:

  • 0 (zero) or undefined: Hidden: Order is not visible to other customers.
  • Equal to size: Display: Full order amount visible to other customers.
  • Less than size: Iceberg: Only the value of maxShow visible.
averagePricenumber(double)

Average price of all fills so far. For orders and order types with timeInForce=FOK such as at-best orders, this is the filled price.

cumQtynumber(double)

Total cumulative amount filled so far.

orderIdstring<= 60 characters

Order ID assigned by Integral.

valueDatestring<= 20 characters

Value date in the format YYYY-MM-DD.

tradeDatestring<= 20 characters

Trade date of fill.

executionTypestring<= 30 characters
  • CANCELED
  • NEW
  • PARTIAL_FILL
  • PENDING_NEW
  • TRADE
leavesQtynumber(double)

Unfilled amount as of the most recent fill.

counterpartystring<= 30 characters

Counterparty organization ID.

counterPartyAccountstring<= 30 characters

Counterparty legal entity ID.

transactTimeinteger(int64)

UTC time of last event on the order in milliseconds.

userFullNamestring<= 128 characters

Fully qualified user name of order submitting user, including namespace and organization ID in the format userName@namespace.orgID.

actionstring<= 32 characters
  • place
  • cancel
  • cancelAll
statusstring<= 32 characters
  • RECEIVED: Order received.
  • NEW: Order has been entered and is working according to the order type and specified execution strategy.
  • PARTIALLY_FILLED: Trade done that does not completely fill the order.
  • FILLED: Trade done that completely fills the order.
  • PENDING_CANCEL: Cancel order request has been received and is in process.
  • CANCELED: Order has been canceled.
  • REPLACED: Order has been replaced with a new order.
  • STOPPED: Price matching has been paused for the order.
  • REJECTED: Order has been rejected.
  • EXPIRED: Order expired.
  • FAILED: Order failed.
reasonstring<= 128 characters

Orders with status=FAILED or status=REJECTED, the reason for failure or rejection. INTERNAL_SERVER_ERROR indicates a serious error. Stop trading immediately and contact Business Support to resolve the issue.

customerIdstring<= 30 characters

Customer ID on whose behalf the order is placed.

executionStartTimestring<= 32 characters

Relative time at which the strategy should start execution specified in the format HH:MM:SS.sss. If not specified, the strategy starts executing immediately.

executionEndTimestring<= 32 characters

Absolute time in GMT at which the strategy should stop executing. If not specified, the order expires based on the value of its time in force.

pegPriceTypestring<= 32 characters

The rate the order is pegged to:

  • Mid: Pegged to mid rate.
pegOffsetValuenumber(double)

The amount in pips that is added to the price of the peg. Can be positive or negative.

actionOnExpirystring<= 32 characters

Action taken at the end of the algo’s duration if there is an unfilled amount remaining. If not specified, the order is cancelled at expiration. NoAction, FillAtMarket, Twap

sliceSizenumber(double)

The fixed size of each slice.

passiveTimeinteger(int64)

Time for which each slice rests in OCX RiskNet. Specified in milliseconds. Overrides passiveTimeFactor.

passiveTimeFactorPercentagenumber(double)

Determines how long each slice rests in OCX RiskNet, calculated as a percent of the actual slice interval. Required if passiveTime is not set

sliceIntervalinteger(int64)

Interval between slices in milliseconds. If the interval is fixed, this value is the interval duration. If the interval is randomized, this value is the upper boundary of random values.

randomizeSliceSizePercentagenumber(double)

The percentage range that the sliceSize is randomized.

randomizeSliceIntervalPercentagenumber(double)

The percentage range that the sliceInterval is randomized.

tobRangenumber(double)

If sliceSize undefined, the slice size is this percentage of the top-of-book price size.

]
Response
application/json

A single order, either by coId or the only active order.

[ { "coId": "Order25", "type": "Limit", "timeInForce": "DAY", "side": "Buy", "currency": "EUR", "symbol": "EUR/USD", "size": 1000000, "org": "pfOrg", "account": "pfOrgLE", "price": 1.1993, "actionOnExpiry": "NoAction", "averagePrice": 0, "cumQty": 0, "orderId": "4860875001", "tradeDate": "2022-10-11", "userFullName": "user1@pfgOrg", "action": "place", "status": "NEW" } ]

Cancel all orders

Request

With best effort, cancel all active orders. This may require you to make the request multiple times until all of the open active orders are cancelled. You can call Query order (client ID or all active orders) to check if any order is still active.

No request payload

Responses

Query order (server ID)

Request

Get the order for the given server order ID.

Path
idstring<= 32 charactersrequired

The unique ID assigned by the server when your order was placed. Returned in response in the orderId field.

Example: 4820276016
No request payload

Responses

The order that matches the given id.

Bodyapplication/json
coIdstring<= 255 charactersrequired

Client order ID assigned by the API user.

typestring<= 20 charactersrequired
  • Limit
  • AtBest
  • Market
  • Stop
  • StopLimit
  • Pegged
  • Algo
  • PQ (previously quoted)
timeInForcestring<= 20 charactersrequired
  • GTC
  • IOC
  • FOK
  • GTT
  • DAY
sidestring<= 10 charactersrequired

Buy or Sell from the order placer’s perspective and always for the dealt currency.

currencystring<= 17 charactersrequired

Dealt currency.

symbolstring<= 35 charactersrequired

Base and term currency separated by a slash / (for example EUR/USD).

sizenumber(double)required

Order amount.

rateIdstring<= 255 characters

Unique identifier for rate. Required for Previously Quoted Orders.

orgstring<= 30 characters

Organization ID in Integral's system. If the order was placed on behalf of another organization, this parameter contains the other organization's ID.

accountstring<= 30 characters

The ID of the account (legal entity) for which the order was placed. Required when placing orders on behalf of another organization.

pricenumber(double)

Order’s limit price, if any.

priceTypestring<= 32 characters

Optional for At Best orders.

  • Spot
  • Outright
  • NDF
expiryTimeinteger(int64)

Expiry time when timeInForce=GTT. In seconds. Max value is one day (86399 seconds).

clientOrderTimestring<= 32 characters

Time the order was submitted in the format yyyy-MM-dd HH:mm:ss,SSS Z.

tradeChannelstring<= 128 characters

The app or workflow that originated the order.

targetStrategystring<= 32 characters

Algo: The algo or strategy of the order:

  • Mid
  • Fixing
  • Twap
  • LitSwitch
  • DarkSwitch
originalCoIdstring<= 255 characters

The original client order ID of the order to be cancelled or replaced by this request.

stopPricenumber(double)

Order’s stop price (if any).

execFlagsArray of strings

Execution strategy requested with order:

  • BidTrigger: Stay on bid side
  • MidTrigger: Mid price
  • OfferTrigger: Stay on offer side
minQtynumber(double)

Minimum fill size (if any) in dealt currency.

maxShownumber(double)

Amount of the order visible to other market participants:

  • 0 (zero) or undefined: Hidden: Order is not visible to other customers.
  • Equal to size: Display: Full order amount visible to other customers.
  • Less than size: Iceberg: Only the value of maxShow visible.
averagePricenumber(double)

Average price of all fills so far. For orders and order types with timeInForce=FOK such as at-best orders, this is the filled price.

cumQtynumber(double)

Total cumulative amount filled so far.

orderIdstring<= 60 characters

Order ID assigned by Integral.

valueDatestring<= 20 characters

Value date in the format YYYY-MM-DD.

tradeDatestring<= 20 characters

Trade date of fill.

executionTypestring<= 30 characters
  • CANCELED
  • NEW
  • PARTIAL_FILL
  • PENDING_NEW
  • TRADE
leavesQtynumber(double)

Unfilled amount as of the most recent fill.

counterpartystring<= 30 characters

Counterparty organization ID.

counterPartyAccountstring<= 30 characters

Counterparty legal entity ID.

transactTimeinteger(int64)

UTC time of last event on the order in milliseconds.

userFullNamestring<= 128 characters

Fully qualified user name of order submitting user, including namespace and organization ID in the format userName@namespace.orgID.

actionstring<= 32 characters
  • place
  • cancel
  • cancelAll
statusstring<= 32 characters
  • RECEIVED: Order received.
  • NEW: Order has been entered and is working according to the order type and specified execution strategy.
  • PARTIALLY_FILLED: Trade done that does not completely fill the order.
  • FILLED: Trade done that completely fills the order.
  • PENDING_CANCEL: Cancel order request has been received and is in process.
  • CANCELED: Order has been canceled.
  • REPLACED: Order has been replaced with a new order.
  • STOPPED: Price matching has been paused for the order.
  • REJECTED: Order has been rejected.
  • EXPIRED: Order expired.
  • FAILED: Order failed.
reasonstring<= 128 characters

Orders with status=FAILED or status=REJECTED, the reason for failure or rejection. INTERNAL_SERVER_ERROR indicates a serious error. Stop trading immediately and contact Business Support to resolve the issue.

customerIdstring<= 30 characters

Customer ID on whose behalf the order is placed.

executionStartTimestring<= 32 characters

Relative time at which the strategy should start execution specified in the format HH:MM:SS.sss. If not specified, the strategy starts executing immediately.

executionEndTimestring<= 32 characters

Absolute time in GMT at which the strategy should stop executing. If not specified, the order expires based on the value of its time in force.

pegPriceTypestring<= 32 characters

The rate the order is pegged to:

  • Mid: Pegged to mid rate.
pegOffsetValuenumber(double)

The amount in pips that is added to the price of the peg. Can be positive or negative.

actionOnExpirystring<= 32 characters

Action taken at the end of the algo’s duration if there is an unfilled amount remaining. If not specified, the order is cancelled at expiration. NoAction, FillAtMarket, Twap

sliceSizenumber(double)

The fixed size of each slice.

passiveTimeinteger(int64)

Time for which each slice rests in OCX RiskNet. Specified in milliseconds. Overrides passiveTimeFactor.

passiveTimeFactorPercentagenumber(double)

Determines how long each slice rests in OCX RiskNet, calculated as a percent of the actual slice interval. Required if passiveTime is not set

sliceIntervalinteger(int64)

Interval between slices in milliseconds. If the interval is fixed, this value is the interval duration. If the interval is randomized, this value is the upper boundary of random values.

randomizeSliceSizePercentagenumber(double)

The percentage range that the sliceSize is randomized.

randomizeSliceIntervalPercentagenumber(double)

The percentage range that the sliceInterval is randomized.

tobRangenumber(double)

If sliceSize undefined, the slice size is this percentage of the top-of-book price size.

Response
application/json

Successful limit order

{ "coId": "8932452311944", "type": "Limit", "timeInForce": "IOC", "side": "Buy", "currency": "EUR", "symbol": "EUR/USD", "size": 1000000, "org": "BrokerOrg1", "price": 1.0971678, "orderId": "4820276016", "userFullName": "User1@pfOrg", "action": "place", "status": "RECEIVED" }

Cancel individual order

Request

Path
idstring<= 32 charactersrequired

The unique ID assigned by the server when your order was placed. Returned in response in the orderId field.

Example: 4820275011
No request payload

Responses

Trades

Trade operations (book, query, amend, roll, allocate, cancel). Also query orders for fills.

Only brokers and sales dealers can amend, roll, and allocate by default. Customer organizations can be configured to allocate trades (work with your Integral Technical Account Manager).

Operations

RFS/RFQ

The RFS/RFQ endpoints provides API access to two trading workflows:

  • Request for Stream (RFS): a stream of firm quotes from liquidity providers against your quote request for a symbol, tenor, amount, and direction for a given price type.
  • Request for Quote (RFQ): a single quote good for a duration you request. The server must be configured to enable the RFQ workflow. Please contact your Technical Account Manager to discuss settings.

You receive responses against your RFS and RFQ requests using the Query request response API and can choose to either accept the quote, withdraw your quote request, or you can allow the your request or quote to expire.

Request for Stream (RFS) workflow:

  1. Send your request:
    • Set the symbol, tenor, amount, and buy/sell direction.
    • Set the rfq parameter to false.
    • Set the expiry parameter to the expiration time of your stream request.
  2. Query the state of your request.
  3. Do one of the following:
    • Accept the quote.
    • Withdraw your quote request.
    • Let your quote request expire.

Request for Quote (RFQ) workflow:

  1. Send your request:
    • Set the symbol, tenor, amount, and buy/sell direction.
    • Set the rfq parameter to true.
    • Set the expiry parameter to your requested duration of the quote.
  2. Query the state of your request.
  3. Do one of the following:
    • Accept the quote.
    • Withdraw your quote request.
    • Let your quote request expire.
Operations

Positions

Get open positions.

Operations

Custody

Custody operations.

Operations

STP download

Get executed trades that have not been downloaded before.

To get trades that have been previously downloaded, you must first call the Prepare trades to resend endpoint.

Operations

Reference data

Fundamental business data (such as accounts, assets, and symbols) used by multiple endpoints.

Operations