All notable changes to this project will be documented in this file.
- Added OKX as an RFQ settlement option for inverse (coin-settled) products, for
settlementOptions,settlementCredentialsandmakerson POST/rfq, and forsettlementOptionon quotes - Added
expiresInto the POST/rfqrequest, setting how long the RFQ stays open in minutes (5 to 1440, default 120) - Added
tradeSettlementOption,filledAmount,publishedAt,expiresInandinstrumentMapto the RFQ responses and therfq.makerandrfq.takerWebSocket responses - Added the
filledPartialanddeletedRFQ statuses - Added
rfqIdto the DELETE/rfq/quoterequest as a third way to identify the quote - Added
quoteCurrencyto the POST/rfq/calculate-leg-pricesrequest - Added
settlementOptionandquoteCurrencyto each quote in the GET/rfq/{id}/quoteresponse - Documented the message envelope of WebSocket channel updates
- Declared the
Authorization,X-FIG-SignatureandX-FIG-Timestampheaders on every REST operation, so the generated code samples include them
- Removed POST
/block-trade/bulk, which is no longer available - Removed the Quickstart and Errors pages; error responses are documented on each endpoint and in the Authentication guide
- GET
/rfq/quotenow readsstartTimeandendTimeas unix timestamps in milliseconds, as documented - PUT and DELETE
/rfq/quotenow return404for alabelthat matches none of your quotes - Makers who were not part of a trade now receive the
filledupdate withrolemakerand no trade fields 404and403error responses now includecode- An
X-FIG-Timestampmore than 60 seconds ahead of the server's clock is now refused with401, and each signature can be used only once - Documented that DELETE
/rfq/{id}deletes only cancelled or expired RFQs and returns a success response - Made
settlementCredentialsrequired on the POST and PUT/rfq/quoterequests, andlegsrequired on the POST/rfqrequest - Removed
markPrice,bidPrice,askPriceandquotesfrom therfq.makerandrfq.takerWebSocket responses, which never sent them - Corrected the
420exchange error response to documentreasonand the normalisedexchangeError - Rewrote the Rate Limiting guide: REST requests are counted per IP address in a fixed 1 minute window, with the real
429body and the WebSocket error code-32006 - Updated the Authentication guide to read the token lifetime from
expires_in, and documented the WebSocket heartbeat timeout and failed authentication limit - Documented that IP whitelisting is optional and how a refused IP address is reported
- Added
blockTradeApprovalto the GET/account/exchange-credentialsand GET/account/exchange-credentials/{id}responses, marking credentials whose exchange requires each block trade to be approved; RFQs and RFQ quotes cannot use these credentials - Added
isExchangeDefaultto the exchange credentials responses, showing which credentials are your default for their exchange - Added the optional
isExchangeDefaultfield to the POST/account/exchange-credentialsand PUT/account/exchange-credentials/{id}requests; setting it totrueclears the default from your other credentials on that exchange, and leaving it out of an update keeps the current setting
- Added
settlementCredentialsto therfq_quote.makerWebSocket response, giving theexchangeCredentialsIdeach of your quotes settles against
- Documented that a WebSocket connection that has not authenticated within 30 seconds of opening is closed, and that a refused
authis retried withauthrather thanauth/refresh
- Corrected the
rfq_quote.makerWebSocket response: it includesmakers,legs,hedgeandevent, and does not includesettlementCredentials - Corrected the
rfq_quote.takerWebSocket response: it includesmakers,legsandhedge - Documented the
cancelledandfilledevents on therfq_quote.makerchannel and thecancelledevent on therfq_quote.takerchannel - Corrected the
legsandhedgeof RFQ quote responses: they do not includeamount
- Added a Glossary guide listing exchange IDs, exchange short codes and RFQ settlement options
- Documented
DRV(Derive) as an RFQ settlement option forsettlementOptions,settlementCredentialsandmakerson POST/rfq, and forsettlementOptionon quotes
- Clarified that
DRV, likeBULL, quotes options inUSDCin an RFQ'squoteCurrencies - Listed the allowed values of
exchangeIdandexchangeShortCodeon the exchange credentials endpoints - Corrected the
rfq.makerandrfq.takerWebSocket responses: they includesettlementOptionsandquoteCurrencies, and do not includesettlementExchange - Corrected the Signing Requests guide: the signed request URI includes the
/v1prefix, and the JavaScript, Python and Go examples now sign the timestamp and use the current POST/rfqrequest body - Corrected the API reference to list the create RFQ endpoint as POST
/rfqrather than POST/rfq/{id}
- Added POST
/account/exchange-credentialsto add exchange credentials; the response returns the added credentials without the exchange API key - Added PUT
/account/exchange-credentials/{id}to change the alias or exchange API key of exchange credentials - Added DELETE
/account/exchange-credentials/{id}to delete exchange credentials - Added PUT
/account/exchange-credentials/{id}/allowed-tokensto set the tokens exchange credentials may trade - Added an
includeCredentialsquery parameter to GET/account/exchange-credentials/{id}to return the decrypted exchange API key - Added
network,allowedTokensandexchangeAccessfields to the exchange credentials responses - Adding, changing or deleting exchange credentials, or setting
includeCredentials=true, requires an API key created by a trader admin
- GET
/account/exchange-credentials/{id}no longer returns the decrypted exchange API key unlessincludeCredentials=trueis set - Corrected the GET
/account/exchange-credentials/{id}response: the exchange API key is returned in acredentialsobject whose fields depend on the exchange - Removed
isExchangeDefaultfrom the exchange credentials responses - Removed GET
/account/otc-counterpartyfrom the documentation
First stable release of the Fig Markets API documentation.
- Added a
baseCurrencyfilter to the cancel-all quotes endpoint (POST/rfq/quote/cancel-all). When provided, only quotes linked to an RFQ with that base currency are cancelled; the response now returns acancelledCountof how many quotes were cancelled. - Documented WebSocket token refresh via the
auth/refreshmethod, allowing a session to be extended before its access token expires to maintain long-lived connections.
- Corrected the request rate limit from 100 to 1000.
- Updated PUT
/rfq/quoteendpoint (RFQQuoteUpdateRequest):- Removed
directionfield from the request - Changed
rfqQuoteIdfrom required to optional - eitherrfqQuoteIdorlabelmust now be provided to identify the quote to update
- Removed
- Removed
quoteCurrencyparameter from POST/rfqrequest (CreateRFQRequest)
- Added GET
/exchange/makerendpoint - returns a list of available Fig makers and their supported settlement options - Added
makersparameter toCreateRFQRequest- an object mapping settlement options to arrays of Fig maker IDs who will receive the RFQ - Added
settlementOptionandquoteCurrencyfields to quote responses (GET/rfq/quoteendpoint and quote websocket channels) - Added
quoteCurrenciesfield to RFQ responses - an object mapping settlement options to their expected quote currencies
- Updated
settlementCredentialsinCreateRFQRequestto be an object mapping settlement options toexchangeCredentialsIdvalues (previously a single integer) - Updated
settlementOptionsinCreateRFQRequestto include full description and example - Updated
settlementOptionandsettlementCredentialsdescriptions for POST/rfq/quoteendpoint (singular versions with updated descriptions) - Replaced
settlementExchangewithsettlementOptionsarray in RFQ websocket channels (rfq.makerandrfq.taker) - Updated RFQ websocket examples to include
quoteCurrenciesobject
- Initial pre-release of the Fig Markets API documentation