Below are the available REST API endpoints for Fig Markets REST API
Fig Markets REST API (1.0)
https://api.test.figmarkets.com/v1/
https://api.figmarkets.com/v1/
Return RFQs created at or after this time (unix timestamp in milliseconds)
Return RFQs created at or before this time (unix timestamp in milliseconds)
The next value from the previous page of results, used to return the next page of results
Limit the number of results to return per page - default 100, max 1000
Filter by role - taker (RFQs you raised) or maker (RFQs you were sent, while open, and RFQs you traded as maker)
If omitted, both are returned.
- Test API
https://api.test.figmarkets.com/v1/rfq
- Production API
https://api.figmarkets.com/v1/rfq
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X GET \
https://api.test.figmarkets.com/v1/rfq \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'Paginated list of RFQs
Number of results matching the filters
On GET /rfq it counts from the current cursor onwards, so it falls as you page.
Cursor for the next page of results - pass it as the cursor query parameter
Omitted on the last page
Array of results for the current page
Your identifier for the RFQ, when one has been set
Only returned to the taker of the RFQ
Which flow the RFQ was raised through. Returned by GET /rfq/{id} and on the rfq.maker and rfq.taker channels. Both types are quoted the same way, so no handling difference is required.
Current status of the RFQ
open: accepting quotesfilled: tradedfilledPartial: traded, but only part of the amount settled;filledAmountgives the settled amountcancelled: cancelled by the takerexpired: reachedexpiresAtwithout tradingdeleted: deleted by the taker; only sent on therfq.makerandrfq.takerchannels
The RFQ's quote currency: the entry in quoteCurrencies for the first of DBT, OKX, BULL and DRV that the RFQ offers.
When the RFQ offers DBT it follows the instruments in its legs: the base currency (e.g. BTC, ETH) for inverse options such as BTC-27MAR26-116000-C, USDC for linear options such as BTC_USDC-27MAR26-116000-C, USD for inverse futures and USDC for linear futures.
Each settlementOption can have its own quote currency, listed in quoteCurrencies. For example, an RFQ on inverse BTC options offered on all four settlement options has quoteCurrencies of BTC for DBT and OKX and USDC for BULL and DRV, because BULL and DRV only list BTC_USDC options; its quoteCurrency is BTC. The same RFQ offered only on BULL has a quoteCurrency of USDC.
Quote, leg and trade prices are in the quoteCurrencies entry for the quote's settlementOption, which is not always quoteCurrency.
Lists for each settlement option the expected quote currency.
The keys are settlement options and the values are the quote currency codes (e.g. BTC, USDC).
Trade amount in base currency units for options and quote currency units for futures
Your side of the trade (buy or sell): a maker's tradeDirection is the opposite of the taker's
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Price of the trade, in the quoteCurrencies entry for tradeSettlementOption
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Amount traded, in the same units as the RFQ's amount
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Timestamp when the trade was executed (unix timestamp in milliseconds)
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Unique identifier for the RFQ trade
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
The settlement option the RFQ traded on - see Settlement options
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
The part of the traded amount that settled, in the same units as the RFQ's amount
Only returned for a filled or filledPartial RFQ, if you are the maker or taker in the trade.
The exchange credentials the RFQ settles against
Only returned to the taker, by GET /rfq/{id} and on the rfq.taker channel.
The settlement options the RFQ accepts.
BULL, DBT, DRV and OKX are supported; OKX only for inverse (coin-settled) products - see Settlement options.
On GET /rfq/{id} and the rfq.maker channel, a maker only sees the settlement options it was invited on.
For each leg and hedge instrument, its name on each settlement option, as a list of single-key objects: the key is the instrument name used by the RFQ and the value maps each settlement option to that venue's instrument name.
The RFQ's live quotes: all of them if you are the taker, your own if you are a maker
Only returned by GET /rfq, and only while the RFQ is open.
Timestamp when the RFQ was sent to makers (unix timestamp in milliseconds)
How long the RFQ stays open, in minutes, from 5 to 1440 (24 hours)
Defaults to 120 when omitted on creation.
{ "totalResults": 3, "next": "351", "results": [ { … } ] }
RFQ creation request
Trade amount in base currency units for options and quote currency units for futures
The settlement options the RFQ accepts.
BULL, DBT, DRV and OKX are supported; OKX only for inverse (coin-settled) products - see Settlement options.
On GET /rfq/{id} and the rfq.maker channel, a maker only sees the settlement options it was invited on.
For each of the provided settlementOptions, a corresponding exchangeCredentialsId must be provided.
The credentials must have read/write access for BlockRFQ and BlockTrade on the settlement venue.
For each of the selected settlementOptions, a list of the Fig makers needs to be provided who will be recipients of the RFQ.
The list of available makers can be obtained from the /exchange/maker endpoint.
How long the RFQ stays open, in minutes, from 5 to 1440 (24 hours)
Defaults to 120 when omitted on creation.
The RFQ's legs, at least one
- Test API
https://api.test.figmarkets.com/v1/rfq
- Production API
https://api.figmarkets.com/v1/rfq
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"baseCurrency": "BTC",
"amount": 1.5,
"anonymous": false,
"settlementOptions": [
"BULL",
"DBT",
"DRV",
"OKX"
],
"settlementCredentials": {
"BULL": 65,
"DBT": 57,
"DRV": 71,
"OKX": 88
},
"makers": {
"BULL": [
"TLY"
],
"DBT": [
"SIS",
"TE2",
"TLY"
],
"DRV": [
"TE2"
],
"OKX": [
"SIS"
]
},
"expiresIn": 120,
"legs": [
{
"direction": "buy",
"instrumentName": "BTC-8AUG25-110000-C",
"ratio": 1.5,
"price": 0.08
}
],
"hedge": {
"direction": "buy",
"instrumentName": "BTC-26SEP25",
"amount": 112534.56,
"price": 115750.45
}
}'{ "rfqId": 12345 }
- Test API
https://api.test.figmarkets.com/v1/rfq/{id}
- Production API
https://api.figmarkets.com/v1/rfq/{id}
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X GET \
'https://api.test.figmarkets.com/v1/rfq/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'RFQ details
Your identifier for the RFQ, when one has been set
Only returned to the taker of the RFQ
Which flow the RFQ was raised through. Returned by GET /rfq/{id} and on the rfq.maker and rfq.taker channels. Both types are quoted the same way, so no handling difference is required.
Current status of the RFQ
open: accepting quotesfilled: tradedfilledPartial: traded, but only part of the amount settled;filledAmountgives the settled amountcancelled: cancelled by the takerexpired: reachedexpiresAtwithout tradingdeleted: deleted by the taker; only sent on therfq.makerandrfq.takerchannels
The RFQ's quote currency: the entry in quoteCurrencies for the first of DBT, OKX, BULL and DRV that the RFQ offers.
When the RFQ offers DBT it follows the instruments in its legs: the base currency (e.g. BTC, ETH) for inverse options such as BTC-27MAR26-116000-C, USDC for linear options such as BTC_USDC-27MAR26-116000-C, USD for inverse futures and USDC for linear futures.
Each settlementOption can have its own quote currency, listed in quoteCurrencies. For example, an RFQ on inverse BTC options offered on all four settlement options has quoteCurrencies of BTC for DBT and OKX and USDC for BULL and DRV, because BULL and DRV only list BTC_USDC options; its quoteCurrency is BTC. The same RFQ offered only on BULL has a quoteCurrency of USDC.
Quote, leg and trade prices are in the quoteCurrencies entry for the quote's settlementOption, which is not always quoteCurrency.
Lists for each settlement option the expected quote currency.
The keys are settlement options and the values are the quote currency codes (e.g. BTC, USDC).
Trade amount in base currency units for options and quote currency units for futures
Your side of the trade (buy or sell): a maker's tradeDirection is the opposite of the taker's
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Price of the trade, in the quoteCurrencies entry for tradeSettlementOption
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Amount traded, in the same units as the RFQ's amount
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Timestamp when the trade was executed (unix timestamp in milliseconds)
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
Unique identifier for the RFQ trade
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
The settlement option the RFQ traded on - see Settlement options
Only returned if the RFQ has been traded and you are the maker or taker in the trade.
The part of the traded amount that settled, in the same units as the RFQ's amount
Only returned for a filled or filledPartial RFQ, if you are the maker or taker in the trade.
The exchange credentials the RFQ settles against
Only returned to the taker, by GET /rfq/{id} and on the rfq.taker channel.
The settlement options the RFQ accepts.
BULL, DBT, DRV and OKX are supported; OKX only for inverse (coin-settled) products - see Settlement options.
On GET /rfq/{id} and the rfq.maker channel, a maker only sees the settlement options it was invited on.
For each leg and hedge instrument, its name on each settlement option, as a list of single-key objects: the key is the instrument name used by the RFQ and the value maps each settlement option to that venue's instrument name.
The RFQ's live quotes: all of them if you are the taker, your own if you are a maker
Only returned by GET /rfq, and only while the RFQ is open.
Timestamp when the RFQ was sent to makers (unix timestamp in milliseconds)
How long the RFQ stays open, in minutes, from 5 to 1440 (24 hours)
Defaults to 120 when omitted on creation.
{ "rfqId": 12345, "productId": 67890, "label": "MyRFQ-12345", "kind": "option", "type": "trader", "strategy": "RR", "description": "20Aug25 4200/4300/4400 CFly 1:2:1 (Wings+)", "status": "open", "baseCurrency": "BTC", "quoteCurrency": "BTC", "quoteCurrencies": { "BULL": "USDC", "DBT": "BTC", "DRV": "USDC", "OKX": "BTC" }, "amount": 1.5, "anonymous": false, "role": "taker", "tradeDirection": "buy", "tradePrice": 0.02, "tradeAmount": 25, "tradeCreatedAt": 1756802862567, "tradeId": 12345, "tradeSettlementOption": "DBT", "filledAmount": 25, "legs": [ { … } ], "hedge": { "amount": 112534.56, "direction": "buy", "expiry": "26Sep25", "instrumentId": 12345, "instrumentName": "BTC-26SEP25", "price": 115750.45 }, "settlementCredentials": [ { … } ], "settlementOptions": [ "BULL", "DBT", "DRV", "OKX" ], "instrumentMap": [ { … } ], "quotes": [ { … } ], "trades": [ { … } ], "createdAt": 1756802862567, "publishedAt": 1757871888038, "expiresIn": 120, "expiresAt": 1756803162567 }
Request
Delete one of your RFQs.
Only a cancelled or expired RFQ can be deleted; cancel an open RFQ first.
- Test API
https://api.test.figmarkets.com/v1/rfq/{id}
- Production API
https://api.figmarkets.com/v1/rfq/{id}
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X DELETE \
'https://api.test.figmarkets.com/v1/rfq/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'{ "message": "RFQ deleted successfully" }
- Test API
https://api.test.figmarkets.com/v1/rfq/{id}/quote
- Production API
https://api.figmarkets.com/v1/rfq/{id}/quote
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X GET \
'https://api.test.figmarkets.com/v1/rfq/{id}/quote' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'{ "rfqId": 12345, "bids": [ { … } ], "asks": [ { … } ] }
- Test API
https://api.test.figmarkets.com/v1/rfq/cancel
- Production API
https://api.figmarkets.com/v1/rfq/cancel
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq/cancel \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqId": 12345
}'{ "id": 123 }
- Test API
https://api.test.figmarkets.com/v1/rfq/trade
- Production API
https://api.figmarkets.com/v1/rfq/trade
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq/trade \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqQuoteId": 12345
}'{ "rfqTradeId": 12345, "rfqId": 12345, "trades": [ { … } ] }
Return quotes created at or after this time (unix timestamp in milliseconds)
Return quotes created at or before this time (unix timestamp in milliseconds)
The next value from the previous page of results, used to return the next page of results
- Test API
https://api.test.figmarkets.com/v1/rfq/quote
- Production API
https://api.figmarkets.com/v1/rfq/quote
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X GET \
https://api.test.figmarkets.com/v1/rfq/quote \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'Paginated list of quotes
Number of results matching the filters
On GET /rfq it counts from the current cursor onwards, so it falls as you page.
Cursor for the next page of results - pass it as the cursor query parameter
Omitted on the last page
Array of results for the current page
Price offered for the quote in the respective quote currency for the settlementOption as defined by the quoteCurrencies property for the RFQ.
The chosen settlement option for the quote.
BULL, DBT, DRV and OKX are supported - see Settlement options.
You can only send a value that matches one of the available settlementOptions for the RFQ.
The exchangeCredentialsId of the exchange credentials to use for the settlement of the trade for the chosen settlementOption.
The credentials must be for the same exchange defined in settlementOption.
Your credentials must have read/write access for BlockRFQ and BlockTrade on the settlement venue.
The quote currency for the quote, as determined by the chosen settlementOption and the RFQ's quoteCurrencies mapping.
This is the currency in which the quote price is denominated.
The makers who sent the quote, or ["ANONYMOUS"] when the RFQ is anonymous
The breakdown of the quote against each leg
Only included for quotes received via FIG directly. Quotes from third party exchanges do not include the breakdown.
The hedge for the quote, only included when the RFQ has a hedge
Only included for quotes received via FIG directly. Quotes from third party exchanges do not include the hedge.
{ "totalResults": 3, "next": "351", "results": [ { … } ] }
Request
Create a new quote against an existing RFQ.
The RFQ must be in the open state, and legs must give a price for each of the RFQ's legs, matched by instrumentName.
You don't send a hedge. If the RFQ has one, the quote takes the RFQ's hedge at the RFQ's hedge price.
- Prices are in the
quoteCurrenciesentry for yoursettlementOption. amountcan be less than the RFQ'samount(a partial quote) but not more.- You can have one live quote per RFQ, direction and settlement option.
- A
labelmust be unique across your live quotes onopenRFQs.
You can use the Calculate leg prices endpoint to help you get the leg prices for your quote.
Quote creation request
The chosen settlement option for the quote.
BULL, DBT, DRV and OKX are supported - see Settlement options.
You can only send a value that matches one of the available settlementOptions for the RFQ.
The exchangeCredentialsId of the exchange credentials to use for the settlement of the trade for the chosen settlementOption.
The credentials must be for the same exchange defined in settlementOption.
Your credentials must have read/write access for BlockRFQ and BlockTrade on the settlement venue.
Array of legs; the breakdown of the quote price across each of the RFQ's legs
- Test API
https://api.test.figmarkets.com/v1/rfq/quote
- Production API
https://api.figmarkets.com/v1/rfq/quote
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq/quote \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqId": 12345,
"label": "Quote-1234",
"amount": 1.5,
"direction": "buy",
"settlementOption": "DBT",
"settlementCredentials": 57,
"legs": [
{
"instrumentName": "BTC-8AUG25-110000-C",
"price": 0.08
}
]
}'{ "rfqQuoteId": 12345 }
Quote update request. Either rfqQuoteId or label must be provided to identify the quote to update.
Array of legs; the breakdown of the quote price across each of the RFQ's legs
The exchangeCredentialsId of the exchange credentials to use for the settlement of the trade for the chosen settlementOption.
The credentials must be for the same exchange defined in settlementOption.
Your credentials must have read/write access for BlockRFQ and BlockTrade on the settlement venue.
The chosen settlement option for the quote.
BULL, DBT, DRV and OKX are supported - see Settlement options.
You can only send a value that matches one of the available settlementOptions for the RFQ.
- Test API
https://api.test.figmarkets.com/v1/rfq/quote
- Production API
https://api.figmarkets.com/v1/rfq/quote
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X PUT \
https://api.test.figmarkets.com/v1/rfq/quote \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqQuoteId": 12345,
"label": "Quote-1234",
"amount": 1.5,
"legs": [
{
"instrumentName": "BTC-8AUG25-110000-C",
"price": 0.08
}
],
"settlementCredentials": 57,
"settlementOption": "DBT"
}'{ "rfqQuoteId": 12345, "rfqId": 12345, "label": "Quote-1234", "direction": "buy", "price": 0.02 }
- Test API
https://api.test.figmarkets.com/v1/rfq/quote
- Production API
https://api.figmarkets.com/v1/rfq/quote
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X DELETE \
https://api.test.figmarkets.com/v1/rfq/quote \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqQuoteId": 12345,
"label": "Quote-1234",
"rfqId": 12345
}'{ "message": "Quote deleted successfully" }
Request
Cancel all your live quotes, across every user and API key of your entity.
If rfqId is provided, only quotes for that RFQ are cancelled. If baseCurrency is provided, only quotes on RFQs with that base currency are cancelled. If both are provided, both must match. If neither is provided, all your live quotes are cancelled.
Cancel all quotes request
- Test API
https://api.test.figmarkets.com/v1/rfq/quote/cancel-all
- Production API
https://api.figmarkets.com/v1/rfq/quote/cancel-all
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq/quote/cancel-all \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqId": 12345,
"baseCurrency": "BTC"
}'{ "message": "Open quotes have been cancelled", "cancelledCount": 3 }
Leg prices calculation request
The currency to price in: the quoteCurrencies entry for the settlement option you will quote on, e.g. USDC to quote BULL or DRV on an RFQ for inverse options
Defaults to the quote currency of the first leg's instrument.
The strategy legs to calculate the leg prices for
- Test API
https://api.test.figmarkets.com/v1/rfq/calculate-leg-prices
- Production API
https://api.figmarkets.com/v1/rfq/calculate-leg-prices
- curl
- JavaScript
- Go
- Java
- Python
curl -i -X POST \
https://api.test.figmarkets.com/v1/rfq/calculate-leg-prices \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
-H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
-d '{
"rfqId": 12345,
"price": 0.026,
"quoteCurrency": "USDC",
"legs": [
{
"direction": "buy",
"instrumentName": "BTC-8AUG25-110000-C",
"ratio": 1.5
}
]
}'{ "legs": [ { … } ] }