sFOX API
Sign InOpen Account
sFOX API
sFOX API
  • Introduction
    • Welcome
    • Getting Started
    • Systems & Operations
    • Rate Limits
  • REST API
    • REST Endpoints
    • Authentication
    • Rate Limits
    • Account Management
      • Get All Balances
      • Get All Currencies
      • Get All Currency Pairs
      • Get All Transactions
      • Get Fees
    • Orders
      • Order Types
      • Create Order
      • Cancel Order
      • Cancel Multiple Orders
      • Cancel All Orders
      • Amend Order
      • Get Single Order
      • Get All Open Orders
      • Get All Done Orders
      • Get All Trades
    • Request for Quote (RFQ)
    • Post-Trade Settlement (PTS)
      • Get Account Risk Metrics
      • Get All Positions
      • Get All Funding Transactions
      • Get All Funding Rates
      • Get All Risk Modes
      • Create Transfer
    • Shorting
      • Get Account Risk Metrics
      • Get All Positions
    • Transfers
      • Get All Deposit Addresses
      • Get Single Deposit Address
      • Create Deposit Address
      • Deposit From Bank Account
      • Withdraw From Account
      • Get Single Withdrawal Fee
      • Create Transfer
    • Custody (sFOX SAFE)
      • Get Whitelisted Addresses
      • Add Whitelisted Address
      • Delete Whitelisted Address
      • Get Approval Rules
      • Create Approval Rule
      • Edit Approval Rule
      • Get Approval Requests
      • Respond to Approval Request
    • Staking
      • Get Staking Currencies
      • Get All Staking Transactions
      • Create Stake
      • Cancel Stake
      • Unstake
    • Market Data
      • Get Candlesticks
      • Get Volume Analytics
      • Get Order Estimate
      • Get Order Book
    • Reporting
      • Get Orders Report
      • Get Monthly Summary
      • Get Portfolio Valuation
      • Get All Transactions
  • WebSocket API
    • Introduction
    • Connecting
    • Rate Limits
    • Authentication
    • Subscribing & Unsubscribing
    • Message Format
    • Market Data
      • Order Book
      • Trades
      • Ticker
    • Orders & Account Data
      • Orders
      • Trades
      • Balances
      • Post-Trade Settlement
  • FIX API
    • FIX Order Entry
    • FIX Market Data
    • QuickFIX Guide
  • Errors
    • Error Codes
Powered by GitBook
On this page
  • Request Body
  • Response Body
  • Responses
  • Example Request
  • End-to-End Example
  • RFQ
  • Order Execution
  1. REST API

Request for Quote (RFQ)

PreviousGet All TradesNextPost-Trade Settlement (PTS)

Last updated 1 year ago

POST https://api.sfox.com/v1/quote

Returns an actionable one-sided quote for the specified currency pair.

After sending an RFQ, the API will return a quote with a price at which a trade can be executed. If you agree with the price, you can request the execution of the trade using the endpoint.

In the orders request, you will need to specify the same:

  • currency_pair

  • quantity

  • quote_id

  • and, if specified in the quote request, the client_quote_id

Quote requests are rate limited to 10 requests per second.

Request Body

Name
Type
Description

pair required

string

The currency pair for the quote. e.g. btcusd

side required

string

The side for the quote (whether you are buying or selling). Possible values:

  • buy : You want to buy

  • sell: You want to sell

quantity required

number

The base currency quantity for the quote (e.g. 10 ). Must be <= the maximum quote quantity for the given pair.

amount

number

The quote currency quantity for the quote (e.g. 300000.0000 ). Required if quantity is not included in the request.

client_quote_id

string

An optional idempotent identifier for your quote. If specified, you must specify the same value in the client_order_id field of your order request to execute on the quote.

Response Body

Field
Description

quote_id

quantity

The base currency quantity of the quote

amount

The quote currency amount of the quote

pair

The currency pair for the quote request

side

The quote side–whether you are buying or selling

date_expiry

The datetime the quote will expire

date_quote

The datetime the quote was generated

buy_price

The quote price–the price to buy this quantity. Returned if side = buy, else not included.

sell_price

The quote price–the price to sell this quantity. Returned if side = sell, else not included.

Responses

201
{
    "quote_id": "165c404c-ffe9-11ed-b8ed-0a170e3de1bd",
    "pair": "btcusd",
    "side": "BUY",
    "date_expiry": "2023-05-31T19:26:58.595Z",
    "date_quote": "2023-05-31T19:26:48.595Z",
    "amount": 27044.7156,
    "quantity": 1,
    "buy_price": 27044.7156
}
422: Unprocessable Entity
//Requested quote size greater than maximum quote size for the currency pair
{
    "error": "request USD value <USD_VALUE_OF_REQUESTED_QUOTE_SIZE> greater than max USD value <MAX_USD_VALUE> for pair <CURRENCY_PAIR>"
}

//Currency pair not currently supported for RFQ
{
    "error": "<CURRENCY_PAIR> not currently supported for RFQ. please contact support for more information."
}
503: Service Unavailable
//RFQ requests are temporarily unavailable
{
    "error": "quotes temporarily unavailable. please try again later."
}

//RFQ requests are temporarily unavailable for this currency pair
{
    "error": "<CURRENCY_PAIR> quotes temporarily unavailable. please try again later."
}

Example Request

curl -X POST \
  -H 'Content-type: application/json' \
  -H 'Authorization: Bearer <API_TOKEN>' \
  --data '{ "pair": "btcusd",
            "side": "buy",
            "quantity": 1 }'  \
  'https://api.sfox.com/v1/quote'
const axios = require('axios');

axios({
  method: 'post',
  url: 'https://api.sfox.com/v1/quote',
  headers: {
    'Authorization': 'Bearer <API_KEY>'
  },
  data: {
   pair: 'btcusd',
   side: 'buy',
   quantity: 1
  }
}).then(response => {
  console.log(response)
}).catch(err => {
  console.error(err)
});
import requests

data = requests.post(
  "https://api.sfox.com/v1/quote",
  headers={
    "Authorization": "Bearer <API_KEY>",
  },
  data={
    "pair": "btcusd",
    "side": "buy",
    "quantity": 1
  }
)
print(data)

End-to-End Example

The following example details the end-to-end process of requesting a quote from the RFQ endpoint and executing an order to trade on that quote

RFQ

  • Request: Requested a quote to purchase 1 BTC on the BTC/USD pair

  • Response: Received a purchase price of 23243.49136824 for 1 BTC with Quote ID cb436399-9db7-11ed-8ea6-0e5724aafd6b which is later specified in the order

    request

Request

Response

Order Execution

  • Request: Placed an order to buy 1 BTC on the BTC/USD pair and specified the previously received quote ID cb436399-9db7-11ed-8ea6-0e5724aafd6b

  • Response: Received an “Order Filled” response, purchasing 1 BTC at the previously quoted unit price of 23243.49136824

  • RFQ orders are Fill-or-Kill (FOK): Will be responded to with a “Done” (filled) or “Canceled” (rejected) order. The entire quantity will be filled or none at all

  • Receive synchronous response: The response will reflect a terminal state of an order

  • Are not guaranteed to be filled if placed within the quote expiry

  • Only one order will be accepted per quote

  • The order quantity must be less than or equal to the quote quantity

  • Will settle immediately to your sFOX account if filled

Request

Response

Unique identifier for the quote. Note: to execute an order on this quote you will specify this quote_id in your

curl -X POST \
  -H 'Content-type: application/json' \ 
  -H 'Authorization: Bearer <API_TOKEN>' \ 
  --data '{ "pair": “btcusd”,
            "side": "buy",
            “quantity”: 1 }' \ 
'https://api.sfox.com/v1/quote'
{
  "quote_id": "cb436399-9db7-11ed-8ea6-0e5724aafd6b", 
  "quantity": 1,
  "pair": "btcusd",
  "side": "BUY",
  "date_expiry": "2023-01-26T20:27:18.310Z", 
  "date_quote": "2023-01-26T20:27:03.310Z", 
  "buy_price": 23243.49136824
}
curl -X POST \
  -H 'Content-type: application/json' \ 
  -H 'Authorization: Bearer <API_TOKEN>' \ 
  --data '{ "currency_pair": “btcusd”,
            "quantity": 1,
            "quote_id": "cb436399-9db7-11ed-8ea6-0e5724aafd6b" }' \ 
      'https://api.sfox.com/v1/orders/buy'
{
  "id": 1754344,
  "side_id": 500,
  "action": "Buy",
  "algorithm_id": 150,
  "algorithm": "Instant",
  "type": "Instant",
  "pair": "btcusd",
  "quantity": 1,
  "price": 23243.49136824,
  "amount": 0,
  "net_market_amount": 0,
  "filled": 1,
  "vwap": 23243.49136824,
  "filled_amount": 23243.49136824,
  "fees": 0,
  "net_proceeds": -23243.49136824,
  "status": "Done",
  "status_code": 300,
  "routing_option": "BestPrice",
  "routing_type": "None",
  "time_in_force": "FOK",
  "expires": null,
  "dateupdated": "2023-01-26T20:27:06.000Z", "client_order_id": "",
  "user_tx_id": "",
  "o_action": "Buy",
  "algo_id": 150,
  "algorithm_options": null,
  "destination": "",
  "quote_id": "cb436399-9db7-11ed-8ea6-0e5724aafd6b"
}
orders
order request