Trading Strategies
Please contact [email protected] to enable additional strategies.
RFQ
RFQ orders allow users to make a request for a quote, then decide if they wish to execute that quote.
Get an RFQ quote
GET https://api.aquanow.io/trades/v2/getQuote
getQuote endpoint allows users to get an RFQ quote from Aquanow, and
receive quoteId and price that is valid during the lifetime of the RFQ.
This endpoint is not executable and can only be used as a means of pricing your order.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Query Parameters
ticker*
String
e.g., BTC-USD
Currency pair
accountId*
String
Identifier for account of the quote.
tradeSide*
String
"buy" or "sell"
deliverQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency delivered by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.
receiveQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency received by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
32c92460f65cbb78d0eaf9a4361fb6b0a2bb8bb4c40f531e9974a0afc12d9a328b5ff621a544d242ee9ba1dfa799c85a
Signature created using your API secret
x-nonce*
Number
1657731573930
Timestamp in millisecond
Returns an OrdersV2Object.
{
"type": "rfqGetQuoteAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "7b776a4f-c39a-438c-89eb-79d043bf75e7",
"symbol": "BTC-USD",
"side": "buy",
"receiveCurrency": "BTC",
"deliverCurrency": "USD",
"quoteTime": 1738112576978,
"expireTime": 1738112606978,
"deliverQuantity": "202.18",
"receiveQuantity": "0.00200000",
"price": "101087.97"
}
}{
"errors": [
{
"id": "b8958e2f-955b-4cf3-b67e-b4aabfae095e",
"message": "Product Not Supported"
}
]
}Create an RFQ quote
POST https://api.aquanow.io/trades/v2/createQuote
createQuote endpoint allows user to initiate an RFQ request to Aquanow and receive a quoteId and price that is valid during the lifetime of the RFQ.
NOTE: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.
If order is not filled, request returns a 200 response with receiveQuantity and deliverQuantity set to 0.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
32c92460f65cbb78d0eaf9a4361fb6b0a2bb8bb4c40f531e9974a0afc12d9a328b5ff621a544d242ee9ba1dfa799c85a
Signature created using your API secret
x-nonce*
Number
1657731573930
Timestamp in millisecond
Request Body
ticker*
String
e.g., BTC-USD
Currency pair
accountId*
String
Identifier for account of the quote.
tradeSide*
String
"buy" or "sell"
deliverQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency delivered by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.
receiveQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency received by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.
usernameRef
String
A new reference string for sub-accounts. Must be less than 64 characters, cannot contain special characters.
Returns an OrdersV2Object.
{
"type": "rfqCreateQuoteAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "87105bf9-5800-4c13-89af-bcbaa50abd32",
"symbol": "BTC-USDT",
"side": "buy",
"receiveCurrency": "BTC",
"deliverCurrency": "USDT",
"quoteTime": 1738112706492,
"expireTime": 1738112736492,
"price": "100690",
"deliverQuantity": "302.07",
"receiveQuantity": "0.00300000"
}
}Returns an OrdersV2Object.
{
"type": "rfqCreateQuoteAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "9c309072-c9dc-402f-bb82-0bb764d173d5",
"symbol": "BTC-USDT",
"side": "buy",
"receiveCurrency": "BTC",
"deliverCurrency": "USDT",
"quoteTime": 1738112638726,
"expireTime": 1738112668726,
"price": "100690",
"deliverQuantity": "0.30",
"receiveQuantity": "0.00000298"
}
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Insufficient Trade Credit"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Invalid tradeSide: buying"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Invalid ticker: ETH-CADD"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Trade size must be bigger than minimum size 1e-7. You submitted: 1e-8"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Access Denied"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "You don't have permission to do this, contact [email protected] if you have questions"
}
]
}Execute an RFQ Quote
POST https://api.aquanow.io/trades/v2/executeQuote
executeQuote endpoint allows users to execute a trade with a specified quoteId with the symbol, trade side and size within the time to live (TTL) of the request associated with the quoteId.
NOTE: The quote must be executed BEFORE the time expired. The TTL of a quote is 8 seconds by default. If you wish to increase the expiry time, please contact Aquanow for support.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a
Signature created using your API secret
x-nonce*
Number
1618307861949
Timestamp in millisecond
Request Body
quoteId*
String
quoteId to be executed
Returns an OrdersV2Object.
{
"type": "rfqExecuteQuoteAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "06722222-1f6a-4e74-90aa-93ed2512c09c",
"tradeDate": "2025-01-28",
"valueDate": "2025-01-29"
}
}{
"errors": [
{
"id": "ed68d20c-cbe8-4c6e-99ba-a3c1ebaf571c",
"message": "The quote has already expired"
}
]
}{
"errors": [
{
"id": "ed68d20c-cbe8-4c6e-99ba-a3c1ebaf571c",
"message": "Access Denied"
}
]
}Expire an RFQ Quote
PUT https://api.aquanow.io/trades/v1/expireQuote
expireQuote endpoint allows users to expire a quote with a specified quoteId within the time to live (TTL) of the request associated with the quoteId.
NOTE: The quote must be executed BEFORE the time expired. The TTL of a quote is 8 seconds by default. If you wish to increase the expiry time, please contact Aquanow for support.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a
Signature created using your API secret
x-nonce*
Number
1657731573930
Timestamp in millisecond
Content-Type*
String
application/json
Request Body
quoteId*
String
quoteId to be expired
Returns an OrdersV2Object.
{
"type": "rfqExpireQuoteAck",
"payload": {
"quoteId": "6d187635-27df-4175-8b23-f1f0ec84907e"
}
}{
"errors": [
{
"id": "f8833c9b-2702-4b74-b987-faf84deafb4d",
"message": "quoteId: 83d05d2b-003b-4e67-9ce7-99a426686f70 has alreaady been processed"
}
]
}Market
Aquanow's Market execution strategy is utilized to perform instant executions.
Create a market order
POST https://api.aquanow.io/trades/v2/market
Note: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.
If order is not filled, the request will return a 200 response, with receiveQuantity and deliverQuantity set to 0.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a
Signature created using your API secret
x-nonce*
Number
1618307861949
Timestamp in millisecond
Content-Type*
String
application/json
Request Body
ticker*
String
e.g., BTC-USD
Pair to be traded
tradeSide*
String
"buy" or "sell" order
accountId*
String
Identifier for account the order will be applied to.
deliverQuantity*
String
NOTE: Specify either deliverQuantity or receiveQuantity.
Quantity of currency delivered by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, then the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.
receiveQuantity*
String
NOTE: Specify either deliverQuantity or receiveQuantity.
Quantity of currency received by user based on the ticker and tradeSide. For example, if ticker is BTC-USD and tradeSide is buy, then the received currency is BTC. If tradeSide is sell, the received currency is USD.
usernameRef
String
A new reference string for sub-accounts.
Must be less than 64 characters, cannot contain special characters.
Returns an OrdersV2Object.
{
"type": "marketOrderSubmitAck",
"data": {
"accountId": "CA1264810R",
"orderId": "bf0bbd7e-1d30-43df-86c9-1f34ad7547f2",
"receiveCurrency": "USD",
"receiveQuantity": "2013.00",
"deliverCurrency": "BTC",
"deliverQuantity": "0.02000000",
"fee": "0.00",
"tradeDate": "2025-01-29",
"valueDate": "2025-01-30",
"tradePriceAvg": "100649.98"
}
}Returns an OrdersV2Object.
{
"type": "marketOrderSubmitAck",
"data": {
"accountId": "CA1264810R",
"orderId": "6112ef9f-e4c4-4138-b3a5-0b8722d3179c",
"receiveCurrency": "BTC",
"receiveQuantity": "0.02000000",
"deliverCurrency": "USD",
"deliverQuantity": "2021.68",
"fee": "0.00000000",
"tradeDate": "2025-01-29",
"valueDate": "2025-01-30",
"tradePriceAvg": "101083.86"
}
}Returns an OrdersV2Object.
{
"type": "marketOrderSubmitAck",
"data": {
"accountId": "CA1000051R",
"orderId": "5ecfc1b2-cb8b-4a9c-8f95-0cf3081dc704",
"receiveCurrency": "USD",
"receiveQuantity": 0,
"deliverCurrency": "BTC",
"deliverQuantity": 0,
"fee": 0
}
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "Insufficient Trade Credit"
}
]
}{
"errors": [
{
"id": "587c8447-31be-4c67-8e5b-ec9c09551361",
"message": "message": "Either deliverQuantity or receiveQuantity must be specified, or must be bigger than 0"
}
]
}Returns an ExecutionsObject.
{
"errors": [
{
"id": "0b2bfd39-14fc-4e0a-b69a-a26f2e77231c",
"message": "The requested quantity is smaller than the minimum order size 15"
}
]
}{
"errors": [
{
"id": "79af2407-6733-4218-b0d5-d0b6b7ed6b56",
"message": "data/ticker must be equal to one of the allowed values"
}
]
}{
"errors": [
{
"id": "79af2407-6733-4218-b0d5-d0b6b7ed6b56",
"message": "Invalid tradeSide: selling"
}
]
}{
"errors": [
{
"id": "79af2407-6733-4218-b0d5-d0b6b7ed6b56",
"message": "Access Denied"
}
]
}{
"errors": [
{
"id": "79af2407-6733-4218-b0d5-d0b6b7ed6b56",
"message": "User not authorized for MARKET"
}
]
}FOK
Fill or Kill order strategy will execute the entire order immediately at the market or specified price, otherwise it will cancelled if not filled.
Endpoint to initiate a FOK request to Aquanow.
POST https://api.aquanow.io/trades/v2/order
NOTE: Either deliverQuantity, receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.
If order is not filled, the request will return a 200 response with a Cancelled message.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a
Signature created using your API secret
x-nonce*
Number
1618307861949
Timestamp in millisecond
Content-Type*
String
application/json
Request Body
strategy*
String
"FOK"
accountId*
String
Identifier for account the order will be applied to.
ticker*
String
e.g., BTC-CAD
Currency pair
tradeSide*
String
"buy" or "sell"
receiveQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency received by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.
deliverQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency delivered by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.
tradePrice*
String
Trade price of ticker symbol
usernameRef
String
A new reference string for sub-accounts.
Must be less than 64 characters, cannot contain special characters.
Returns an OrdersV2Object.
{
"type": "parentOrderSubmitAck",
"data": {
"accountId": "CA1264810R",
"orderId": "0f7f11e8-1c49-4636-b325-713ba3f3a68f",
"receiveCurrency": "USD",
"receiveQuantity": "201304.04",
"deliverCurrency": "BTC",
"deliverQuantity": "2.00000000",
"fee": "0",
"tradeTime": 1738113778441,
"symbol": "BTC-USD",
"tradeStatus": "COMPLETE",
"price": "100652.02",
"tradeDate": "2025-01-29",
"valueDate": "2025-01-30"
}
}Returns an OrdersV2Object.
{
"type": "parentOrderSubmitAck",
"error": {
"message": "Cancelled - Price not marketable"
},
"data": {
"orderId": "ac211046-57e3-43c7-9030-a939bf451c44",
"receiveCurrency": "BTC",
"receiveQuantity": 0,
"deliverCurrency": "USD",
"deliverQuantity": 0,
"fee": 0,
"tradeTime": 1712856904480,
"symbol": "BTC-USD",
"tradeStatus": "CANCELLED",
"price": 70228.01
}
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "11642d44-3031-4bc1-8b55-61a2bd08fa42",
"message": "Error while calculating trade price and quantities: Quantity 20000 exceeds data limits. Please use a smaller amount."
}
]
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "11642d44-3031-4bc1-8b55-61a2bd08fa42",
"message": "provide at least one baseQuantity and quoteQuantity to be non-zero"
}
]
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "11642d44-3031-4bc1-8b55-61a2bd08fa42",
"message": "data/tradeSide must be equal to one of the allowed values"
}
]
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "11642d44-3031-4bc1-8b55-61a2bd08fa42",
"message": "User is not authorized to access this resource with an explicit deny"
}
]
}Returns an OrdersV2Object.
{
"errors": [
{
"id": "11642d44-3031-4bc1-8b55-61a2bd08fa42",
"message": "User not authorized for FOK"
}
]
}LIMIT/GTC/GTD
Aquanow's duration order algorithms with a price limit.
Orders can be completed immediately depending on the specified priceLimit, quantity and the market. Incomplete pre-existing orders expire depending on the strategy.
Duration Order Algorithms
LIMIT
LIMIT orders create a pre-existing order, available for up to 24 hours.
GTC
Good Till Cancel (GTC) orders create a pre-existing order, available for up to 90 days.
GTD
Good Till Date (GTD) orders create a pre-existing order, available until a specified expirationTime date (max. 90 days).
Endpoint to initiate an LIMIT/GTC/GTD request to Aquanow.
POST https://api.aquanow.io/trades/v2/order
NOTE: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.
If order is not filled, the request will return a 200 response with receiveQuantity and deliverQuantity set to 0.
To view example requests for this endpoint, visit Aquanow's Postman documentation.
Headers
x-api-key*
String
{{x-api-key}}
API Auth Key
x-signature*
String
49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a
Signature created using your API secret
x-nonce*
Number
1618307861949
Timestamp in millisecond
Content-Type*
String
application/json
Request Body
strategy*
String
"LIMIT", "GTC" or "GTD"
accountId*
String
Identifier for account the order will be applied to.
ticker*
String
e.g., BTC-CAD
Currency pair
tradeSide*
String
"buy" or "sell"
priceLimit*
String
Limit price of a ticker symbol, determined by tradeSide and deliverQuantity/receiveQuantity
deliverQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency delivered by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, then the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.
receiveQuantity*
String
NOTE: specify either deliverQuantity or receiveQuantity.
Quantity of currency received by user based on the ticker and tradeSide.
For example, if ticker is BTC-USD and tradeSide is buy, then the received currency is BTC. If tradeSide is sell, the received currency is USD.
expirationTime*
Number
NOTE: only required for GTD orders.
e.g., 1669972404350
Expiration time in milliseconds of when the pre-existing order will expire. Expiration time must be within 90 days of order creation.
usernameRef
String
A new reference string for sub-accounts. Must be less than 64 characters, cannot contain special characters.
Returns an OrdersV2Object.
{
"type": "limitOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "8a492aa4-46b2-41d3-a47e-1d366e4e7693",
"quoteTime": 1738091135962,
"expireTime": 1738177535962,
"ticker": "BTC-USD",
"tradeSide": "buy",
"receiveCurrency": "BTC",
"receiveQuantity": "0.02000000",
"deliverCurrency": "USD",
"deliverQuantity": "2044.27",
"price": "102536.06"
}
}Returns an OrdersV2Object.
{
"type": "limitOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "34bb8cea-314c-4fc0-83c8-fb5063d66a8f",
"quoteTime": 1738091795908,
"expireTime": 1738178195908,
"ticker": "BTC-USD",
"tradeSide": "sell",
"receiveCurrency": "USD",
"receiveQuantity": "1526847.30",
"deliverCurrency": "BTC",
"deliverQuantity": "15.00000000",
"price": "102536.06"
}
}Returns an OrdersV2Object.
{
"type": "gtcOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "52a5b418-9ab0-45b4-9ad5-24a376380066",
"quoteTime": 1738091646944,
"expireTime": 1745867646944,
"ticker": "BTC-USD",
"tradeSide": "buy",
"receiveCurrency": "BTC",
"receiveQuantity": "0.00979612",
"deliverCurrency": "USD",
"deliverQuantity": "1000.00",
"price": "102028.52"
}
}Returns an OrdersV2Object.
{
"type": "gtcOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "0094190d-6ebb-455d-afb9-ede8b716ab73",
"quoteTime": 1738091948484,
"expireTime": 1745867948484,
"ticker": "BTC-USD",
"tradeSide": "sell",
"receiveCurrency": "USD",
"receiveQuantity": "1000.00",
"deliverCurrency": "BTC",
"deliverQuantity": "0.00981527",
"price": "102028.52"
}
}Returns an OrdersV2Object.
{
"type": "gtdOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "0c317868-3207-4f94-ad5a-47635cf00a85",
"quoteTime": 1738092098363,
"expireTime": 1738351211363,
"ticker": "BTC-USD",
"tradeSide": "buy",
"receiveCurrency": "BTC",
"receiveQuantity": "0.01000000",
"deliverCurrency": "USD",
"deliverQuantity": "1023.15",
"price": "102299.79"
}
}Returns an OrdersV2Object.
{
"type": "gtdOrderAck",
"data": {
"accountId": "CA1264810R",
"quoteId": "566b0333-c7d4-4086-8c04-5ab3a6a29280",
"quoteTime": 1738092132480,
"expireTime": 1738351211480,
"ticker": "BTC-USD",
"tradeSide": "sell",
"receiveCurrency": "USD",
"receiveQuantity": "100.00",
"deliverCurrency": "BTC",
"deliverQuantity": "0.00098161",
"price": "102299.79"
}
}{
"errors": [
{
"id": "ea640ecc-0b9f-4857-9535-a45c0a6753da",
"message": "expirationTime should be within 90 days from now: 1869972405009"
}
]
}{
"errors": [
{
"id": "60a6a307-d980-43f5-b2cb-9b7d6c6af935",
"message": "data must have required property 'expirationTime'"
}
]
}{
"errors": [
{
"id": "60a6a307-d980-43f5-b2cb-9b7d6c6af935",
"message": "data/ticker must be equal to one of the allowed values"
}
]
}{
"errors": [
{
"id": "60a6a307-d980-43f5-b2cb-9b7d6c6af935",
"message": "data/tradeSide must be equal to one of the allowed values"
}
]
}Returns an ExecutionsObject.
{
"errors": [
{
"id": "ea640ecc-0b9f-4857-9535-a45c0a6753da",
"message": "Insufficient Trade Credit"
}
]
}{
"errors": [
{
"id": "03b84aef-0c04-438b-a6a4-531a318c513b",
"message": "The requested quantity is smaller than the minimum order size 15"
}
]
}{
"errors": [
{
"id": "60a6a307-d980-43f5-b2cb-9b7d6c6af935",
"message": "Access Denied"
}
]
}{
"errors": [
{
"id": "60a6a307-d980-43f5-b2cb-9b7d6c6af935",
"message": "User not authorized for LIMIT"
}
]
}Last updated