{"items":[{"type":"link","link":"https://docs.fxinside.net/","label":"Integral Developer Portal"},{"type":"group","fsPath":"developer-portal/apis.md","metadata":{"type":"markdown"},"label":"API reference","link":"/developer-portal/apis","routeSlug":"/developer-portal/apis","items":[{"type":"group","fsPath":"openapi/integral-api-reference/rest.yaml","link":"/openapi/integral-api-reference/rest","routeSlug":"/openapi/integral-api-reference/rest","label":"REST API","items":[{"type":"group","label":"Authentication options","link":"/openapi/integral-api-reference/rest/section/authentication-options","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options","items":[{"type":"link","label":"Token-based authentication","link":"/openapi/integral-api-reference/rest/section/authentication-options/token-based-authentication","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/token-based-authentication"},{"type":"link","label":"Get token","link":"/openapi/integral-api-reference/rest/section/authentication-options/get-token","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/get-token"},{"type":"link","label":"Pass token","link":"/openapi/integral-api-reference/rest/section/authentication-options/pass-token","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/pass-token"},{"type":"link","label":"Renew token","link":"/openapi/integral-api-reference/rest/section/authentication-options/renew-token","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/renew-token"},{"type":"link","label":"HMAC authentication","link":"/openapi/integral-api-reference/rest/section/authentication-options/hmac-authentication","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/hmac-authentication"},{"type":"link","label":"Signature parameters","link":"/openapi/integral-api-reference/rest/section/authentication-options/signature-parameters","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/signature-parameters"},{"type":"link","label":"Sample authorization header","link":"/openapi/integral-api-reference/rest/section/authentication-options/sample-authorization-header","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/sample-authorization-header"},{"type":"link","label":"Signature string construction","link":"/openapi/integral-api-reference/rest/section/authentication-options/signature-string-construction","routeSlug":"/openapi/integral-api-reference/rest/section/authentication-options/signature-string-construction"}]},{"type":"link","label":"API tracing","link":"/openapi/integral-api-reference/rest/section/api-tracing","routeSlug":"/openapi/integral-api-reference/rest/section/api-tracing"},{"type":"link","label":"Status and error codes","link":"/openapi/integral-api-reference/rest/section/status-and-error-codes","routeSlug":"/openapi/integral-api-reference/rest/section/status-and-error-codes"},{"type":"link","label":"Reason codes","link":"/openapi/integral-api-reference/rest/section/reason-codes","routeSlug":"/openapi/integral-api-reference/rest/section/reason-codes"},{"type":"group","label":"Authentication API","link":"/openapi/integral-api-reference/rest/authentication-api","routeSlug":"/openapi/integral-api-reference/rest/authentication-api","items":[{"label":"Login and get token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/authentication-api/login","routeSlug":"/openapi/integral-api-reference/rest/authentication-api/login","metadata":{"seo":{"title":"Login and get token","description":"Use the ID and password issued to you to login and generate and refresh/renew an access token. All REST API calls should pass this token to access authenticated services."}},"httpPath":"/v2/sso/login"},{"label":"Renew token","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/authentication-api/renewtoken","routeSlug":"/openapi/integral-api-reference/rest/authentication-api/renewtoken","metadata":{"seo":{"title":"Renew token","description":"To keep your session alive, use the ID and password issued to you to renew your token. If your token is expired, you are issued a new token."}},"httpPath":"/v2/sso/token/renew"}]},{"type":"group","label":"Market data","link":"/openapi/integral-api-reference/rest/market-data","routeSlug":"/openapi/integral-api-reference/rest/market-data","items":[{"label":"Get spot rate by symbol","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getspotrate","routeSlug":"/openapi/integral-api-reference/rest/market-data/getspotrate","metadata":{"seo":{"title":"Get spot rate by symbol","description":"Get real-time, top-of-book spot bid and offer rates for a given symbol. Returns an aggregated list of rates, which may include prices from multiple liquidity providers or external market data sources."}},"httpPath":"/v2/rates/spot"},{"label":"Get spot rate by type and symbol","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getspotratebytype","routeSlug":"/openapi/integral-api-reference/rest/market-data/getspotratebytype","metadata":{"seo":{"title":"Get spot rate by type and symbol","description":"Get real-time spot bid and offer rates by rate type and symbol. Returns an aggregated list of rates, which may include prices from multiple liquidity providers or external market data sources."}},"httpPath":"/v2/rates/spot/{type}"},{"label":"Get spot rate by type and symbol for organization","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getspotratebytypeorg","routeSlug":"/openapi/integral-api-reference/rest/market-data/getspotratebytypeorg","metadata":{"seo":{"title":"Get spot rate by type and symbol for organization","description":"Get real-time spot bid and offer rates by rate type and symbol from liquidity providers for an organization. Returns an aggregated list of rates, which may include prices from multiple liquidity providers or external market data sources."}},"httpPath":"/v2/rates/spot/{type}/{org}"},{"label":"Get market data","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getmarketdataset","routeSlug":"/openapi/integral-api-reference/rest/market-data/getmarketdataset","metadata":{"seo":{"title":"Get market data","description":"Get rates from market data sets (MDSs) managed by the Integral Pricing engine."}},"httpPath":"/v2/marketdataset"},{"label":"Get benchmark","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getbenchmark","routeSlug":"/openapi/integral-api-reference/rest/market-data/getbenchmark","metadata":{"seo":{"title":"Get benchmark","description":"Get the Integral FX benchmark rate for a given symbol."}},"httpPath":"/v2/benchmark"},{"label":"Get ticker","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/market-data/getticker","routeSlug":"/openapi/integral-api-reference/rest/market-data/getticker","metadata":{"seo":{"title":"Get ticker","description":"Get the last traded price for a given symbol."}},"httpPath":"/v2/ticker"}]},{"type":"group","label":"Orders","link":"/openapi/integral-api-reference/rest/orders","routeSlug":"/openapi/integral-api-reference/rest/orders","items":[{"label":"Place order","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/orders/placeorder","routeSlug":"/openapi/integral-api-reference/rest/orders/placeorder","metadata":{"seo":{"title":"Place order","description":"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."}},"httpPath":"/v2/orders"},{"label":"Query order (client ID or all active orders)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/orders/queryorderbyclientid","routeSlug":"/openapi/integral-api-reference/rest/orders/queryorderbyclientid","metadata":{"seo":{"title":"Query order (client ID or all active orders)","description":"Get the order for the given client order ID. Omit the request parameter coId to return all active orders."}},"httpPath":"/v2/orders"},{"label":"Cancel all orders","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/orders/cancelallorders","routeSlug":"/openapi/integral-api-reference/rest/orders/cancelallorders","metadata":{"seo":{"title":"Cancel all orders","description":"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."}},"httpPath":"/v2/orders"},{"label":"Query order (server ID)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/orders/queryorderbyserverid","routeSlug":"/openapi/integral-api-reference/rest/orders/queryorderbyserverid","metadata":{"seo":{"title":"Query order (server ID)","description":"Get the order for the given server order ID."}},"httpPath":"/v2/orders/{id}"},{"label":"Cancel individual order","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/orders/cancelorder","routeSlug":"/openapi/integral-api-reference/rest/orders/cancelorder","metadata":{"seo":{"title":"Cancel individual order","description":"Cancel a single active order by ID (the unique ID assigned by server, received in the place order response). Use Query order (server ID) or Query order (client ID or all active orders) to get the current status of your order."}},"httpPath":"/v2/orders/{id}"}]},{"type":"group","label":"Trades","link":"/openapi/integral-api-reference/rest/trades","routeSlug":"/openapi/integral-api-reference/rest/trades","items":[{"label":"Book trade","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/booktrade","routeSlug":"/openapi/integral-api-reference/rest/trades/booktrade","metadata":{"seo":{"title":"Book trade","description":"Enter trades done in other systems."}},"httpPath":"/v2/trades"},{"label":"Query all trades on an order by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/queryorderallfills","routeSlug":"/openapi/integral-api-reference/rest/trades/queryorderallfills","metadata":{"seo":{"title":"Query all trades on an order by ID","description":"Get all fills for the order ID assigned by Integral returned in the coId or orderId field when the order was placed."}},"httpPath":"/v2/trades"},{"label":"Amend trade","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/tradeamend","routeSlug":"/openapi/integral-api-reference/rest/trades/tradeamend","metadata":{"seo":{"title":"Amend trade","description":"Amend a verified trade by amount, rate, customer, or all three. Available to broker users and sales dealer users."}},"httpPath":"/v2/trades/amendment"},{"label":"Roll trade","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/traderoll","routeSlug":"/openapi/integral-api-reference/rest/trades/traderoll","metadata":{"seo":{"title":"Roll trade","description":"Roll a trade to another value date. Available to broker users and sales dealer users."}},"httpPath":"/v2/trades/roll"},{"label":"Allocate trade","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/tradeallocate","routeSlug":"/openapi/integral-api-reference/rest/trades/tradeallocate","metadata":{"seo":{"title":"Allocate trade","description":"Divide a trade into post-trade allocations among multiple legal entities of the same organization. Available to broker users and sales dealer users. Customer organizations can be configured to allocate trades."}},"httpPath":"/v2/trades/allocations"},{"label":"Cancel trades","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/tradecancel","routeSlug":"/openapi/integral-api-reference/rest/trades/tradecancel","metadata":{"seo":{"title":"Cancel trades","description":"Cancel individual trades by trade ID or one or more trades by your trade request."}},"httpPath":"/v2/trades/cancel"},{"label":"Query trade by trade ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/trades/querytrade","routeSlug":"/openapi/integral-api-reference/rest/trades/querytrade","metadata":{"seo":{"title":"Query trade by trade ID","description":"Get trade details for a given trade ID."}},"httpPath":"/v2/trades/{id}"}]},{"type":"group","label":"RFS/RFQ","link":"/openapi/integral-api-reference/rest/rfsrfq","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq","items":[{"label":"Request quote","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/rfsrfq/quoterequest","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq/quoterequest","metadata":{"seo":{"title":"Request quote","description":"Send a quote request to receive firm quotes from liquidity providers for the specified symbol, tenor, amount, and direction (bid, ask, two-way) for a given price type."}},"httpPath":"/v2/rfs"},{"label":"Query quote request (client ID)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/rfsrfq/queryrequestclientid","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq/queryrequestclientid","metadata":{"seo":{"title":"Query quote request (client ID)","description":"Query the state of quote request by the RFS ID clOrderId assigned by you when you sent the request. The response can include quotes, trades, and state of the Quote request."}},"httpPath":"/v2/rfs"},{"label":"Query quote request (server ID)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/rfsrfq/queryrequestserverid","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq/queryrequestserverid","metadata":{"seo":{"title":"Query quote request (server ID)","description":"Query the state of quote request by the RFS ID assigned by Integral. The response can include quotes, trades, and state of the Quote request."}},"httpPath":"/v2/rfs/{requestId}"},{"label":"Accept quote","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/rfsrfq/acceptquote","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq/acceptquote","metadata":{"seo":{"title":"Accept quote","description":"Accept a quote from liquidity providers that you requested (Request quote)."}},"httpPath":"/v2/rfs/{requestId}"},{"label":"Withdraw quote request","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/rfsrfq/withdrawquoterequest","routeSlug":"/openapi/integral-api-reference/rest/rfsrfq/withdrawquoterequest","metadata":{"seo":{"title":"Withdraw quote request","description":"Withdraw an active quote request."}},"httpPath":"/v2/rfs/{requestId}"}]},{"type":"group","label":"Positions","link":"/openapi/integral-api-reference/rest/positions","routeSlug":"/openapi/integral-api-reference/rest/positions","items":[{"label":"Positions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/positions/getpositions","routeSlug":"/openapi/integral-api-reference/rest/positions/getpositions","metadata":{"seo":{"title":"Positions","description":"Get open positions. All parameters are optional. If no parameters are specified, all open positions for the logged-in user are returned."}},"httpPath":"/v2/positions"},{"label":"Positions by value date","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/positions/getpositionsvaluedate","routeSlug":"/openapi/integral-api-reference/rest/positions/getpositionsvaluedate","metadata":{"seo":{"title":"Positions by value date","description":"Get open positions by value date. All query parameters are optional. If no parameters are specified, all open positions for the logged-in user and specified value date are returned."}},"httpPath":"/v2/positions/{valueDate}"}]},{"type":"group","label":"Custody","link":"/openapi/integral-api-reference/rest/custody","routeSlug":"/openapi/integral-api-reference/rest/custody","items":[{"type":"link","label":"Access and dashboard","link":"/openapi/integral-api-reference/rest/custody/access-and-dashboard","routeSlug":"/openapi/integral-api-reference/rest/custody/access-and-dashboard"},{"type":"link","label":"API authentication","link":"/openapi/integral-api-reference/rest/custody/api-authentication","routeSlug":"/openapi/integral-api-reference/rest/custody/api-authentication"},{"label":"Get deposit address","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/custody/getdepositaddress","routeSlug":"/openapi/integral-api-reference/rest/custody/getdepositaddress","metadata":{"seo":{"title":"Get deposit address","description":"Get the deposit address on a native blockchain which is used to link deposits to specific customer wallets."}},"httpPath":"/custody/v2/deposit/address"},{"label":"Query deposit history","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/custody/getdeposithistory","routeSlug":"/openapi/integral-api-reference/rest/custody/getdeposithistory","metadata":{"seo":{"title":"Query deposit history","description":"Query the deposit history for current customer"}},"httpPath":"/custody/v2/deposit/history"},{"label":"Initiate withdrawal","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/custody/createwithdrawal","routeSlug":"/openapi/integral-api-reference/rest/custody/createwithdrawal","metadata":{"seo":{"title":"Initiate withdrawal","description":"Withdraw a digital asset from a customer wallet."}},"httpPath":"/custody/v2/withdraw/apply"},{"label":"Query withdrawal history","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/custody/getwithdrawhistory","routeSlug":"/openapi/integral-api-reference/rest/custody/getwithdrawhistory","metadata":{"seo":{"title":"Query withdrawal history","description":"Query withdrawal transaction history for current user. Transactions are sorted by createdTime."}},"httpPath":"/custody/v2/withdraw/history"}]},{"type":"group","label":"Accounts","link":"/openapi/integral-api-reference/rest/accounts","routeSlug":"/openapi/integral-api-reference/rest/accounts","items":[{"label":"Get account balance","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/accounts/getaccountbalance","routeSlug":"/openapi/integral-api-reference/rest/accounts/getaccountbalance","metadata":{"seo":{"title":"Get account balance","description":"Get account balances in a specific asset or all assets."}},"httpPath":"/custody/v2/account/balances"},{"label":"Get broker account balances","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/accounts/getaccountbalancebroker","routeSlug":"/openapi/integral-api-reference/rest/accounts/getaccountbalancebroker","metadata":{"seo":{"title":"Get broker account balances","description":"Get account balances for a broker in all assets."}},"httpPath":"/custody/v2/broker/account/balances"},{"label":"Update broker account balance","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/accounts/updatebrokeraccountbalance","routeSlug":"/openapi/integral-api-reference/rest/accounts/updatebrokeraccountbalance","metadata":{"seo":{"title":"Update broker account balance","description":"Update broker account balances in a specific asset or all assets."}},"httpPath":"/custody/v2/broker/account/balances"}]},{"type":"group","label":"STP download","link":"/openapi/integral-api-reference/rest/stp-download","routeSlug":"/openapi/integral-api-reference/rest/stp-download","items":[{"label":"Get done trades","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/stp-download/gettrades","routeSlug":"/openapi/integral-api-reference/rest/stp-download/gettrades","metadata":{"seo":{"title":"Get done trades","description":"Get executed trades that have not been downloaded before. The default maximum number of trades returned is determined by the server. You should poll this endpoint until you receive an empty response indicating that there are no remaining executed trades available for STP download."}},"httpPath":"/v2/trades/stp/messages"},{"label":"Prepare trades to resend","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/stp-download/resend","routeSlug":"/openapi/integral-api-reference/rest/stp-download/resend","metadata":{"seo":{"title":"Prepare trades to resend","description":"Set previously downloaded trades with tradeDate within the specified date range as eligible for download. You must then call the Get trades endpoint to download the trades. The event attribute on previously downloaded trades is always set to RESEND."}},"httpPath":"/v2/trades/stp/resend"}]},{"type":"group","label":"Reference data","link":"/openapi/integral-api-reference/rest/reference-data","routeSlug":"/openapi/integral-api-reference/rest/reference-data","items":[{"label":"Get list of assets","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/reference-data/getassetdetail","routeSlug":"/openapi/integral-api-reference/rest/reference-data/getassetdetail","metadata":{"seo":{"title":"Get list of assets","description":"List of all assets with details, such as whether you can deposit or withdraw, minimum withdrawal amount, and withdrawal fee. Use the currency parameter to get details of a specific asset."}},"httpPath":"/custody/v2/asset/assetDetail"},{"label":"Get instrument properties","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/reference-data/getrefdatacurrencies","routeSlug":"/openapi/integral-api-reference/rest/reference-data/getrefdatacurrencies","metadata":{"seo":{"title":"Get instrument properties","description":"Basic quoting convention properties of an instrument"}},"httpPath":"/v2/refdata/currencies/{instrument}"},{"label":"Get symbol properties","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/reference-data/getrefdatasymbols","routeSlug":"/openapi/integral-api-reference/rest/reference-data/getrefdatasymbols","metadata":{"seo":{"title":"Get symbol properties","description":"Basic quoting convention properties of a symbol"}},"httpPath":"/v2/refdata/symbols/{symbol}"},{"label":"Get all symbols and instruments","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/integral-api-reference/rest/reference-data/getrefdatasymbolslist","routeSlug":"/openapi/integral-api-reference/rest/reference-data/getrefdatasymbolslist","metadata":{"seo":{"title":"Get all symbols and instruments","description":"Depending on the query parameter, returns:"}},"httpPath":"/v2/refdata/currencies"}]}],"metadata":{"type":"openapi","title":"REST API","version":"1.0.1","description":"\nWelcome to the Integral REST API reference. \n\nOur 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.\n\nContact Integral’s account management team to get connection details and credentials for access.\n\n# Authentication options\n\nYou can choose between two authentication methods:\n\n- [Token-based authentication](#section/Authentication-options%2FToken-based-authentication)\n- [HMAC authentication](#section/Authentication-options%2FHMAC-authentication)\n\n## Token-based authentication\n\nAn 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. \n\n### Get token\n\nUsers should use [/v2/sso/login](#operation/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.\n\n### Pass token\n\nThe token should be sent in `SSO_TOKEN` of request headers.\n\n### Renew token\n\nTo keep your session alive, you can renew your token with [/sso/tokens/renew](#operation/renewToken). If your token is expired, you are issued a new token.\n\n## HMAC authentication\n\nIn this authentication method, you must sign each API request with a 'secret'. The 'secret' and 'userId' are issued to you during set up.\n\nAll REST requests must contain following header information:\n\n{% table %}\n  - Header attribute {% width=\"10%\" %}\n  - Description\n  ---\n  - Authorization\n  - The base64-encoded signature.\n  ---\n  - Date\n  - A date and time as [standard UTC string](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Date).\n  ---\n  - Digest\n  - `SHA-256=base64(sha256(<body>))` If there is no request body, `Digest` should be set to the digest of a body of 0 length.\n  ---\n  - type\n  - Set to `hmac`.\n{% /table %}\n\nYou must send an authorization header with the following parameterization:\n\n```\ncredentials := \"hmac\" params\nparams := userId \",\" algorithm \", \" headers \", \" signature\nuserId := \"username\" \"=\" plain-string\nalgorithm := \"algorithm\" \"=\" DQUOTE (hmac-sha256) DQUOTE\nheaders := \"headers\" \"=\" plain-string\nsignature := \"signature\" \"=\" plain-string\nplain-string   = DQUOTE *( %x20-21 / %x23-5B / %x5D-7E ) DQUOTE\n```\n\n### Signature parameters\n\n{% table %}\n  - Parameter {% width=\"15%\" %}\n  - Description\n  ---\n  - `username`\n  - The ID of the credential.\n  ---\n  - `algorithm`\n  - Digital signature algorithm used to create the signature. You should use `hmac-sha256`.\n  ---\n  - `headers`\n  - List of HTTP header names, separated by a single space character, used to sign the request.\n  ---\n  - `signature`\n  - Base64 encoded digital signature generated by the client.\n{% /table %}\n\n### Sample authorization header\n\n```\nAuthorization: hmac userId=\"user2@XCN1139\",\n  algorithm=\"hmac-sha256\",\n  headers=\"date content-type content-length\",\n  signature=\"XWL1oxJsbC4z3UvO6ZfvgjMvfj249WXSb7Gl/+t/Ql0=\"\n```\n\n### Signature string construction\n\nTo 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.\n\n1. If the header name is not `request-line`, then append the lowercase header name followed with an ASCII colon `:` and an ASCII space `' '`.\n2. If the header name is `request-line`, then append the HTTP request line (in ASCII format), otherwise append the header value.\n3. If the value is not the last value, then append an ASCII newline `\\n`. The string must not include a trailing ASCII newline.\n\n# API tracing\n\nYou 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.\n\n# Status and error codes\n\nAll Integral REST APIs use the following general status codes. See endpoints for specific codes.\n\n{% table %}\n  - HTTP code {% width=\"15%\" %}\n  - HTTP status\n  - Meaning\n  ---\n  - 200\n  - OK\n  - Successful submission.\n  ---\n  - 202\n  - ACCEPTED\n  - Request accepted by the system. You are expected to make another API call. Refer to individual API sections and endpoints for subsequent action.\n  ---\n  - 400\n  - BAD REQUEST\n  - 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.\n  ---\n  - 401\n  - UNAUTHORIZED\n  - Your IntegralAPI user is not authorized. May have a message body that indicates the error.\n  ---\n  - 404\n  - NOT FOUND\n  - 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.\n  ---\n  - 500\n  - INTERNAL SERVER ERROR\n  - 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.\n{% /table %}\n\n4xx and 5xx status codes may return a JSON response body with the `message` parameter.\n\n# Reason codes\n\nYou determine the status of any call with a combination of:\n\n- Status code from the messaging technology (for example, REST/HTTP codes `200` and `404`).\n- The reason code for the server. **Not all responses include a reason code.**\n\nUse the following codes to interpret and act on status responses.\n\n{% table %}\n  - Reason code {% width=\"55%\" %}\n  - Description\n  ---\n  - `RequestValidationError.amount`\n  - Order size is invalid.\n  ---\n  - `RequestValidationError.CoIdNotSpecified`\n  - Client order ID not specified.\n  ---\n  - `RequestValidationError.DuplicateOrder`\n  - Order already exists for the given client order ID.\n  ---\n  - `RequestValidationError.TypeNotSpecified`\n  - Order type not specified.\n  ---\n  - `RequestValidationError.TIFNotSpecified`\n  - Time in force not specified.\n  ---\n  - `RequestValidationError.SideNotSpecified`\n  - Order side (buy or sell) not specified.\n  ---\n  - `RequestValidationError.CurrencyNotSpecified`\n  - Order dealt currency not specified.\n  ---\n  - `RequestValidationError.InvalidDealtCcy`\n  - Dealt currency is neither base currency nor term currency.\n  ---\n  - `RequestValidationError.SymbolNotSpecified`\n  - Symbol not specified.\n  ---\n  - `RequestValidationError.InvalidCurrencyPair`\n  - Symbol not valid or not supported by the system.\n  ---\n  - `RequestValidationError.SizeNotSpecified`\n  - Order size not specified.\n  ---\n  - `RequestValidationError.InvalidOrderQty`\n  - Order size not valid.\n  ---\n  - `RequestValidationError.InvalidPrice`\n  - Accepted price invalid. Zero is invalid price.\n  ---\n  - `RequestValidationError.BuySellMismatch`\n  - Buy/Sell side of the accepted price is incorrect.\n  ---\n  - `RequestValidationError.InvalidQuoteID`\n  - The rateId of the previously quoted (PQ) order is invalid.\n  ---\n  - `RequestValidationError.LegalEntitySetIncorrectly`\n  - Account field incorrect.\n  ---\n  - `RequestValidationError.OrderTypeNotSupported`\n  - Order type not supported.\n  ---\n  - `RequestValidationError.PriceMismatch`\n  - Accepted price not the same as previously quoted price.\n  ---\n  - `RequestValidationError.QuoteExpired`\n  - Rate associated with the rateId not found. It has expired. Price is no longer valid.\n  ---\n  - `RequestValidationError.tradingDisabled`\n  - Trading is disabled.\n{% /table %}\n"}},{"type":"group","fsPath":"developer-portal/websocket.md","metadata":{"type":"markdown"},"label":"WebSocket API","link":"/developer-portal/websocket","routeSlug":"/developer-portal/websocket","items":[{"type":"link","fsPath":"developer-portal/websocket-market-data.md","metadata":{"type":"markdown"},"label":"Market Data","link":"/developer-portal/websocket-market-data","routeSlug":"/developer-portal/websocket-market-data"},{"type":"link","fsPath":"developer-portal/websocket-orders.md","metadata":{"type":"markdown"},"label":"Orders","link":"/developer-portal/websocket-orders","routeSlug":"/developer-portal/websocket-orders"},{"type":"link","fsPath":"developer-portal/websocket-rfs.md","metadata":{"type":"markdown"},"label":"RFS","link":"/developer-portal/websocket-rfs","routeSlug":"/developer-portal/websocket-rfs"},{"type":"link","fsPath":"developer-portal/websocket-positions.md","metadata":{"type":"markdown"},"label":"Positions","link":"/developer-portal/websocket-positions","routeSlug":"/developer-portal/websocket-positions"},{"type":"group","label":"Balances","items":[{"type":"link","fsPath":"developer-portal/websocket-account-balances.md","metadata":{"type":"markdown"},"label":"Account balances","link":"/developer-portal/websocket-account-balances","routeSlug":"/developer-portal/websocket-account-balances"},{"type":"link","fsPath":"developer-portal/websocket-credit-balances.md","metadata":{"type":"markdown"},"label":"Credit balances","link":"/developer-portal/websocket-credit-balances","routeSlug":"/developer-portal/websocket-credit-balances"}]}]},{"type":"group","fsPath":"fix.md","metadata":{"type":"markdown"},"label":"FIX API","link":"/fix","routeSlug":"/fix","items":[{"type":"group","label":"Taker","items":[{"type":"link","fsPath":"developer-portal/fix-market-data.md","metadata":{"type":"markdown"},"label":"Market Data","link":"/developer-portal/fix-market-data","routeSlug":"/developer-portal/fix-market-data"},{"type":"link","fsPath":"developer-portal/fix-market-data-incr.md","metadata":{"type":"markdown"},"label":"Market Data with Incremental Refresh","link":"/developer-portal/fix-market-data-incr","routeSlug":"/developer-portal/fix-market-data-incr"},{"type":"link","fsPath":"developer-portal/fix-orders.md","metadata":{"type":"markdown"},"label":"Orders","link":"/developer-portal/fix-orders","routeSlug":"/developer-portal/fix-orders"},{"type":"link","fsPath":"developer-portal/fix-orders-advanced.md","metadata":{"type":"markdown"},"label":"Advanced Orders","link":"/developer-portal/fix-orders-advanced","routeSlug":"/developer-portal/fix-orders-advanced"},{"type":"link","fsPath":"developer-portal/fix-rfs.md","metadata":{"type":"markdown"},"label":"RFS","link":"/developer-portal/fix-rfs","routeSlug":"/developer-portal/fix-rfs"},{"type":"link","fsPath":"developer-portal/fix-stp.md","metadata":{"type":"markdown"},"label":"STP","link":"/developer-portal/fix-stp","routeSlug":"/developer-portal/fix-stp"},{"type":"link","fsPath":"developer-portal/fix-examples.md","metadata":{"type":"markdown"},"label":"Examples","link":"/developer-portal/fix-examples","routeSlug":"/developer-portal/fix-examples"}]},{"type":"group","label":"Maker","items":[{"type":"link","fsPath":"developer-portal/fix-maker-esp.md","metadata":{"type":"markdown"},"label":"ESP","link":"/developer-portal/fix-maker-esp","routeSlug":"/developer-portal/fix-maker-esp"},{"type":"link","fsPath":"developer-portal/fix-maker-rfs.md","metadata":{"type":"markdown"},"label":"RFS","link":"/developer-portal/fix-maker-rfs","routeSlug":"/developer-portal/fix-maker-rfs"}]}]}]},{"type":"group","label":"Cookbook","items":[{"type":"group","fsPath":"developer-portal/tutorials.page.tsx","metadata":{},"label":"REST","link":"/developer-portal/tutorials","routeSlug":"/developer-portal/tutorials","items":[{"type":"group","label":"Use cases","items":[{"type":"link","fsPath":"developer-portal/tutorials/tutorialAuth.md","metadata":{"type":"markdown"},"label":"Login","link":"/developer-portal/tutorials/tutorialauth","routeSlug":"/developer-portal/tutorials/tutorialauth"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialGetEsp.md","metadata":{"type":"markdown"},"label":"Get spot prices","link":"/developer-portal/tutorials/tutorialgetesp","routeSlug":"/developer-portal/tutorials/tutorialgetesp"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialFixedPeriodMds.md","metadata":{"type":"markdown"},"label":"Get market data","link":"/developer-portal/tutorials/tutorialfixedperiodmds","routeSlug":"/developer-portal/tutorials/tutorialfixedperiodmds"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialPlaceOrderLimit.md","metadata":{"type":"markdown"},"label":"Place order (limit)","link":"/developer-portal/tutorials/tutorialplaceorderlimit","routeSlug":"/developer-portal/tutorials/tutorialplaceorderlimit"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialPlaceOrderAtBest.md","metadata":{"type":"markdown"},"label":"Place order (at best)","link":"/developer-portal/tutorials/tutorialplaceorderatbest","routeSlug":"/developer-portal/tutorials/tutorialplaceorderatbest"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialPlaceOrderPQ.md","metadata":{"type":"markdown"},"label":"Place order (previous quoted)","link":"/developer-portal/tutorials/tutorialplaceorderpq","routeSlug":"/developer-portal/tutorials/tutorialplaceorderpq"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialBookTrade.md","metadata":{"type":"markdown"},"label":"Book a trade","link":"/developer-portal/tutorials/tutorialbooktrade","routeSlug":"/developer-portal/tutorials/tutorialbooktrade"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialGetTrades.md","metadata":{"type":"markdown"},"label":"Get done trades","link":"/developer-portal/tutorials/tutorialgettrades","routeSlug":"/developer-portal/tutorials/tutorialgettrades"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialRFS.md","metadata":{"type":"markdown"},"label":"Request quotes from providers","link":"/developer-portal/tutorials/tutorialrfs","routeSlug":"/developer-portal/tutorials/tutorialrfs"}],"expanded":"true"},{"type":"group","label":"Full workflows","items":[{"type":"link","fsPath":"developer-portal/tutorials/tutorialWkflwTradeSpot.md","metadata":{"type":"markdown"},"label":"Trade ESP spot","link":"/developer-portal/tutorials/tutorialwkflwtradespot","routeSlug":"/developer-portal/tutorials/tutorialwkflwtradespot"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialWkflwTradeRfs.md","metadata":{"type":"markdown"},"label":"Trade RFS","link":"/developer-portal/tutorials/tutorialwkflwtraderfs","routeSlug":"/developer-portal/tutorials/tutorialwkflwtraderfs"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialWkflwFixedPeriodMds.md","metadata":{"type":"markdown"},"label":"Trade fixed-period rates","link":"/developer-portal/tutorials/tutorialwkflwfixedperiodmds","routeSlug":"/developer-portal/tutorials/tutorialwkflwfixedperiodmds"},{"type":"link","fsPath":"developer-portal/tutorials/tutorialWkflwTradeOnBehalf.md","metadata":{"type":"markdown"},"label":"Trade on behalf of another organization","link":"/developer-portal/tutorials/tutorialwkflwtradeonbehalf","routeSlug":"/developer-portal/tutorials/tutorialwkflwtradeonbehalf"}],"expanded":"true"}],"expanded":"true"}],"expanded":"true"}]}