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.
You can choose between two authentication methods:
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.
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.
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.
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 |
---|---|
Authorization | The base64-encoded signature. |
Date | A date and time as standard UTC string. |
Digest | SHA-256=base64(sha256(<body>)) If there is no request body, Digest should be set to the digest of a body of 0 length. |
type | Set 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
Parameter | Description |
---|---|
username | The ID of the credential. |
algorithm | Digital signature algorithm used to create the signature. You should use hmac-sha256 . |
headers | List of HTTP header names, separated by a single space character, used to sign the request. |
signature | Base64 encoded digital signature generated by the client. |
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.
request-line
, then append the lowercase header name followed with an ASCII colon :
and an ASCII space ' '
.request-line
, then append the HTTP request line (in ASCII format), otherwise append the header value.\n
. The string must not include a trailing ASCII newline.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.
All Integral REST APIs use the following general status codes. See endpoints for specific codes.
HTTP code | HTTP status | Meaning |
---|---|---|
200 | OK | Successful submission. |
202 | ACCEPTED | Request accepted by the system. You are expected to make another API call. Refer to individual API sections and endpoints for subsequent action. |
400 | BAD REQUEST | There 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. |
401 | UNAUTHORIZED | Your IntegralAPI user is not authorized. May have a message body that indicates the error. |
404 | NOT FOUND | The 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. |
500 | INTERNAL SERVER ERROR | Stop 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.
You determine the status of any call with a combination of:
200
and 404
).Use the following codes to interpret and act on status responses.
Reason code | Description |
---|---|
RequestValidationError.amount | Order size is invalid. |
RequestValidationError.CoIdNotSpecified | Client order ID not specified. |
RequestValidationError.DuplicateOrder | Order already exists for the given client order ID. |
RequestValidationError.TypeNotSpecified | Order type not specified. |
RequestValidationError.TIFNotSpecified | Time in force not specified. |
RequestValidationError.SideNotSpecified | Order side (buy or sell) not specified. |
RequestValidationError.CurrencyNotSpecified | Order dealt currency not specified. |
RequestValidationError.InvalidDealtCcy | Dealt currency is neither base currency nor term currency. |
RequestValidationError.SymbolNotSpecified | Symbol not specified. |
RequestValidationError.InvalidCurrencyPair | Symbol not valid or not supported by the system. |
RequestValidationError.SizeNotSpecified | Order size not specified. |
RequestValidationError.InvalidOrderQty | Order size not valid. |
RequestValidationError.InvalidPrice | Accepted price invalid. Zero is invalid price. |
RequestValidationError.BuySellMismatch | Buy/Sell side of the accepted price is incorrect. |
RequestValidationError.InvalidQuoteID | The rateId of the previously quoted (PQ) order is invalid. |
RequestValidationError.LegalEntitySetIncorrectly | Account field incorrect. |
RequestValidationError.OrderTypeNotSupported | Order type not supported. |
RequestValidationError.PriceMismatch | Accepted price not the same as previously quoted price. |
RequestValidationError.QuoteExpired | Rate associated with the rateId not found. It has expired. Price is no longer valid. |
RequestValidationError.tradingDisabled | Trading is disabled. |
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/v2/rates/spot
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rates/spot
No request payload
{ "symbol": "EUR/USD", "bid": 1.1863, "offer": 1.18638, "bidLimit": 1000000, "offerLimit": 1000000, "time": 1602536120080, "rateId": "2022-11-10-EURUSD-SPOT-435ef73249" }
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/v2/rates/spot/{type}
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rates/spot/{type}
No request payload
type=TOB (spot rate object with top-of-book rates)
{ "symbol": "EUR/USD", "bid": 1.1863, "offer": 1.18638, "bidLimit": 1000000, "offerLimit": 1000000, "time": 1602536120080, "rateId": "2022-11-10-EURUSD-SPOT-435ef73249" }
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/v2/rates/spot/{type}/{org}
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rates/spot/{type}/{org}
No request payload
type=TOB (spot rate object with top-of-book rates)
{ "symbol": "EUR/USD", "bid": 1.1863, "offer": 1.18638, "bidLimit": 1000000, "offerLimit": 1000000, "time": 1602536120080, "rateId": "2022-11-10-EURUSD-SPOT-435ef73249" }
Get rates from market data sets (MDSs) managed by the Integral Pricing engine.
The MDS workflow determines the parameters you need to send and the type of rates you receive.
A regular MDS contains active market rates.
Required parameter values for regular rates:
id
: you must include the ID of a regular MDS.org
: you must omit this parameter for regular rates. If you specify the id
of a regular MDS and the org
parameter, an error is returned.symbol
: you must include either symbol
or symbols
. If neither is included, an error is returned.symbols
: you must include either symbol
or symbols
. If neither is included, an error is returned./marketdataset?id=RealTimeMDS&symbol=EUR/USD
/marketdataset?id=RealTimeMDS&symbols=EUR/USD,USD/JPY,USD/CAD&tenor=1W
An end-of-day MDS contains reference rates and is active after a specific time, typically after the end of the business day.
Required parameter values for end-of-day rates:
id
: you must include the ID of an end-of-day MDS.org
: you must omit this parameter for end-of-day rates. If you specify the id
of a end-of-day MDS and the org
parameter, an error is returned.symbol
: you must include either symbol
or symbols
. If neither is included, an error is returned.symbols
: you must include either symbol
or symbols
. If neither is included, an error is returned./marketdataset?id=EODMDS&symbol=EUR/USD
/marketdataset?id=EODMDS&symbol=EUR/USD&date=2024-10-24
A fixed-period MDS contains rates generated at a specific time and that are active and valid during a specified time window with a start and end time.
Required parameter values for fixed-period rates:
id
: you must include either id
or org
. Do not include both. Specify the MDS ID for fixed-period rates from a specific fixed-period MDS.org
: you must include either id
or org
. Do not include both. Specify the organization ID for rates from all fixed-period MDSs for the organization./marketdataset?id=FixedPeriodMDS&symbol=EUR/USD
/marketdataset?id=FixedPeriodMDS&symbol=EUR/USD&date=2024-10-24&timeWindow=1500-1700
/marketdataset?org=organizationID&date=2024-10-24&timeWindow=1500-1700
ID of market data set from the Integral Pricing Engine.
Required for regular market data sets.
Optional for EOD and fixed-period market data sets.
If not included, you must include org
. Do not include both id
and org
in your request.
ID of the organization that the market-data-set pricing stream is assigned to by the Integral Pricing Engine.
Omit for regular market data sets.
If not included, you must include id
.
Do not include both id
and org
in your request.
Base and term currency separated by a slash "/". Optional for fixed-period workflow. For regular and end-of-day workflows, you must include either symbol
or symbols
. If neither is included, an error is returned.
Comma-separated list of currency pairs. Each currency pair consists of base and term currencies separated by a slash "/" (for example EUR/USD,USD/JPY,NZD/USD
). Optional for fixed-period workflow. For regular and end-of-day workflows, you must include either symbol
or symbols
. If neither is included, an error is returned.
Business date for the market data set in the format YYYY-MM-DD
.
If not specified, the current business date is used.
Applicable only to end-of-day and fixed-period MDSs. Ignored for regular MDSs.
MDS tenor. If not specified, all rates configured in the MDS are returned.
Today
: todayTOD
: todayON
: overnight (today)TN
: tomorrowSP
: spotSPOT
: spotSN
: spot next (spot+1)D
: a number of days after the current business date (for example, 1D, 2D, 10D)W
: a number of weeks after the current business date (for example, 1W, 2W, 3W)M
: a number of months after the current business date (for example, 1M, 2M, 3M)Y
: a number of years after the current business date (for example, 1Y, 2Y, 3Y)IMM
: The next International Monetary Market (IMM) settlement date. IMM dates are the third Wednesday of the last month of every quarter (March, June, September, December). IMM
results in the next IMM date on or after the spot date. 2IMM
results in two IMM dates after the spot date.S
nIMM
: (spot + IMM) for swapsT
nIMM
: (tomorrow + IMM) for swapsTime in 24-hour format during which the market date set is active, either a discrete time hhmm
or a time period with a start time and end time hhmm-hhmm
. If not specified, currently active market data sets are returned.
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/marketdataset
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/marketdataset
No request payload
A market data set object containing one or more rates.
Business date of the current market data set in the format YYYY-MM-DD
. Applicable to end-of-day and fixed-period MDSs only. Null for regular MDSs.
Applicable to fixed-period market data sets only. Time window when the rates in the market data set are active. Specified in 24-hour format from start time to end time (hhmm-hhmm
).
Market data set creation date/time in the 24-hour format yyyy-MM-dd HH:mm:ss,SSS Z
.
Applicable to fixed-period market data sets only. Market data set activation date/time in the 24-hour format yyyy-MM-dd HH:mm:ss,SSS Z
.
Applicable to fixed-period market data sets only. Date/time the market data set is valid until in the 24-hour format yyyy-MM-dd HH:mm:ss,SSS Z
.
Applicable to fixed-period market data sets only. Date/time in 24-hour GMT the next market data set creation in the format yyyy-MM-dd HH:mm:ss,SSS Z
.
Applicable to fixed-period market data sets only. Date/time at which the market data set expires in the format yyyy-MM-dd HH:mm:ss,SSS Z
. The time is calculated by adding the Create Frequency value from the MDS configuration in the pricing engine to the activationTime
value.
[ { "id": "RealTimeMDS", "date": null, "timeWindow": null, "name": "Real-time market data", "createdTime": null, "activationTime": null, "validUntil": null, "nextCreationTime": null, "expirationTime": null, "rates": [ … ] } ]
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/v2/benchmark
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/benchmark
No request payload
{ "symbol": "AUD/USD", "rate": 0.69746, "uid": "G-4796976cd-17528d7b6ea-FXB-6237f19", "timestamp": 1602708027114 }
https://docs.fxinside.net/_mock/openapi/integral-api-reference/rest/v2/ticker
https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/ticker
No request payload
{ "symbol": "AUD/USD", "rate": 0.69746, "isBid": true, "timestamp": 1602505075906, "bid": true }
The RFS/RFQ endpoints provide API access to two trading workflows:
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:
Request for Quote (RFQ) workflow:
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.