Websocket url: wss://quoter.coinquoter.com:9001
Websocket Streams
Our platform provides two methods for obtaining price feeds.
General - the best pricing feeds for token pairs in general.
Specific for a maker - the best token pairs pricing feeds for a specific maker.
General Pricing Data
General pricing data allow us to connect to two different streams.
General stream
The best price stream contains two sides of a token pair.
Parameters
Name
Type
Mandatory
Description
Always "sub-quoter-pricing"
Structure: tokenName0-tokenName1-pairId
Request example
{
"action": "sub-quoter-pricing",
"channel": "WONE-1USDT-1"
}
Example response
{
"message": {
"content": {
"type": "",
"method": "",
"data": {
"bid": "0.047650468",
"ask": "0.047674767",
"gasFeeToken0": "0.004642591",
"gasFeeToken1": "0.00022128910001499997",
"inboundBid": 0.04766,
"inboundAsk": 0.04767,
"transactionFee": 1000000000000000000,
"transactionFeeToken": "0xDcC4DaAD65Dd459505D8af9bfF60aFd2A8c0b2cc",
"makerAddressBid": "0x98c3cec32166936672a75fd7d85ad92eb5178d84",
"makerAddressAsk": "0x98c3cec32166936672a75fd7d85ad92eb5178d84",
"amount0Address": "0xca3e951D17C520B42ED98482b1f8B6478D4531E2",
"amount1Address": "0xb63b211f1dB545C04829CA0a3E7D8313711E7eA9",
"amount0Dec": 18,
"amount1Dec": 6,
"maxToken0Bid": "4.7650468",
"maxToken1Bid": "1091.3844948831131",
"minToken0": "1",
"minToken1": "0",
"pairId": 1
}
}
}
}
Request stream
The best price stream includes only one side of a pair and is based on the amount of token you want to sell/buy.
Parameters
Name
Type
Mandatory
Description
Always "custom-topic-subscribe".
Contains information about a topic.
Any name that will identify the destination place for websocket data.
Name of topic you'd like to connect to.
Array of stream parameters (side, pairId, value).
Token pair id. Token pairs available on our API endpoint.
Token amount you want to buy or sell.
Request example
{
"action": "custom-topic-subscribe",
"data": {
"topic_identifier": "PRICE_REQUEST",
"topic_name": "SELECT_REQUEST_PRICING",
"parameters": [0, 1, 10] // in order: side, pairId, value
}
}
Example response
{
"topic_identifier": "PRICE_REQUEST",
"topic": "SELECT_REQUEST_PRICING",
"columns": [
"rule_id",
"pair_id",
"spread_perc",
"side",
"outbound_price",
"maker_address",
"token0_address",
"token1_address",
"token0_dec",
"token1_dec",
"gas_fee_token0",
"gas_fee_token1"
],
"rows": [
{
"rule_id": 132,
"pair_id": 1,
"spread_perc": 0.0001,
"side": 1,
"outbound_price": 0.047774777,
"maker_address": "0x98c3cec32166936672a75fd7d85ad92eb5178d84",
"token0_address": "0xca3e951D17C520B42ED98482b1f8B6478D4531E2",
"token1_address": "0xb63b211f1dB545C04829CA0a3E7D8313711E7eA9",
"token0_dec": 18,
"token1_dec": 6,
"gas_fee_token0": 0.004642591,
"gas_fee_token1": 0.000221706933205
}
]
}
Your response might be empty. It means that there is no price stream for this particular value.
Pricing data for a specific maker
Pricing data for a specific maker also allows us to connect to two different streams.
General stream
The best price stream provided by a specific maker containing two sides of a token pair.
Parameters
Name
Type
Mandatory
Description
Always "custom-topic-subscribe".
Contains information about a topic.
Any name that will identify the destination place for websocket data.
Name of topic you'd like to connect to.
Array of stream parameters (side, pairId, value).
Token pair id. Token pairs available on our API endpoint.
The wallet address of a maker whom pricing stream you want to receive.
Request example
{
"action": "custom-topic-subscribe",
"data": {
"topic_identifier": "MAKER_PAIR_PRICING",
"topic_name": "MAKER_PAIR_PRICING",
"parameters": [
1,
"0xDa0DD31b18C6BABc35e7d59f94fAe7a180594C7b",
1,
"0xDa0DD31b18C6BABc35e7d59f94fAe7a180594C7b"
] // in order: pairId, makerAddress, pairId, makerAddress
}
}
Example response
{
"topic_identifier": "MAKER_PAIR_PRICING",
"topic": "MAKER_PAIR_PRICING",
"columns": [
"pair_id",
"feed_tier",
"side",
"spread_perc",
"spread_perc:1",
"min_amount",
"max_slippage_perc",
"inbound_price",
"outbound_price",
"max_buy_amount",
"symbol_token0",
"symbol_token1",
"maker_address",
"token0_address",
"token1_address",
"token0_dec",
"token1_dec",
"gas_fee_token0",
"gas_fee_token1",
"transaction_fee",
"transaction_fee_token"
],
"rows": [
{
"pair_id": 1,
"feed_tier": 0,
"side": 1,
"spread_perc": 0.0001,
"spread_perc:1": 0.0001,
"min_amount": 0,
"max_slippage_perc": 10,
"inbound_price": 0.04718,
"outbound_price": 0.047184718,
"max_buy_amount": 1112,
"symbol_token0": "WONE",
"symbol_token1": "1USDT",
"maker_address": "0x98c3cec32166936672a75fd7d85ad92eb5178d84",
"token0_address": "0xca3e951D17C520B42ED98482b1f8B6478D4531E2",
"token1_address": "0xb63b211f1dB545C04829CA0a3E7D8313711E7eA9",
"token0_dec": 18,
"token1_dec": 6,
"gas_fee_token0": 0.0052416350000000006,
"gas_fee_token1": 0.000247274131125,
"transaction_fee": 1000000000000000000,
"transaction_fee_token": "0xDcC4DaAD65Dd459505D8af9bfF60aFd2A8c0b2cc"
}
]
}
Request stream
The best price stream provided by a specific maker including only one side of a pair and is based on the amount of token you want to sell/buy.
Parameters
Name
Type
Mandatory
Description
Always "custom-topic-subscribe".
Contains information about a topic.
Any name that will identify the destination place for websocket data.
Name of topic you'd like to connect to.
Array of stream parameters (side, pairId, value).
Token pair id. Token pairs available on our API endpoint.
Token amount you want to buy or sell.
The wallet address of a maker whom pricing stream you want to receive.
Request example
{
"action": "custom-topic-subscribe",
"data": {
"topic_identifier": "MAKER_PRICE_REQUEST",
"topic_name": "SELECT_REQUEST_MAKER_PRICING",
"parameters": [0, 1, 10, "0x98C3CEC32166936672A75FD7D85ad92eb5178D84"]
// in order: side, pairId, value, makerAddress
}
}
Example response
{
"topic_identifier": "MAKER_PRICE_REQUEST",
"topic": "SELECT_REQUEST_MAKER_PRICING",
"columns": [
"rule_id",
"pair_id",
"spread_perc",
"side",
"outbound_price",
"maker_address",
"token0_address",
"token1_address",
"token0_dec",
"token1_dec",
"gas_fee_token0",
"gas_fee_token1"
],
"rows": [
{
"rule_id": 131,
"pair_id": 1,
"spread_perc": 0.0002,
"side": 0,
"outbound_price": 0.047200558000000004,
"maker_address": "0x98c3cec32166936672a75fd7d85ad92eb5178d84",
"token0_address": "0xca3e951D17C520B42ED98482b1f8B6478D4531E2",
"token1_address": "0xb63b211f1dB545C04829CA0a3E7D8313711E7eA9",
"token0_dec": 18,
"token1_dec": 6,
"gas_fee_token0": 0.0052416350000000006,
"gas_fee_token1": 0.00024753621287500004
}
]
}
Order Execution
To execute an order, send a message to the quote-executions-[UUID] channel with the following information.
Has to be number with no decimals.
Has to be number with no decimals.
Object created with "buildRFQOrder" method from limit order protocol library.
Object created with "buildRFQOrderTypedData" method from limit order protocol library.
String created with "buildOrderSignature" method from limit order protocol library.
Rule id received from pricing stream.
Gas Fee information received from the pricing stream.
Example request
{
"action": "execute-order"
"channel": "quote-executions-6f47c643-cfa6-48ae-ae5b-f8fed519ef65"
"data":
{
"limitOrder": RFQOrder,
"limitOrderSignature": "0x30dcd76f11d3b0a1f75757eb442b73c056a19df80209107d4b7ef4135f4699086f0e090ab9d96bd74f439124381d52be13d19abd440dd4bd9793b69a86a0d3e81b",
"takerAmount": "10000",
"makerAmount": "75023679387584720",
"type": 1,
"ruleId": 114,
"sessionKey": "0xD9594fa3BAd626Eed13d0F2b5BFDC2dd7a7576e9",
"orderGas":
{
"gasFee":0.00464478,
"gasFeeToken0":"0.00464478",
"gasFeeToken1":"0.0005829431139",
"gasFeeOperation":4
},
"resultEIP712": EIP712TypedData
}
}
Order Status
In order to receive your transaction status, subscribe to a channel that is the id you used to create RFQOrder.
Subscription example
{
"action": "sub-response-client-execution",
"channel": "3203138488" // that is the same id you had used to create RFQOrder
}
Example responses
{
"type": "pending"
}
{
"action": "quote-execution-response",
"channel": "3203138488",
"content": {
"type": "transaction_posted",
"hash: "0x499e6a5c76920118987055b19b5d8d0217e4c9559e8023d61e284bb606b2677d"
}
}
{
"type": "send_to_blockchain",
"hash": "0x499e6a5c76920118987055b19b5d8d0217e4c9559e8023d61e284bb606b2677d"
}
{
"type": "filled",
"hash": "0x499e6a5c76920118987055b19b5d8d0217e4c9559e8023d61e284bb606b2677d"
}
Advanced Panel Streams
There are two additional streams for advanced mode.
Advanced stream for a specific maker
Parameters
Name
Type
Mandatory
Description
Token pair id. Token pairs available on our API endpoint.
Token amount on bid side.
Token amount on ask side.
The wallet address of a maker whom pricing stream you want to receive.
General advanced stream
The best price stream includes two sides of a pair and is based on the amount of token you want to sell/buy.
Example request
{
"action": "custom-topic-subscribe",
"data": {
"topic_identifier": "6", // pairId (string)
"topic_name": "SELECT_ADVANCED_REQUEST_PRICING",
"parameters": [6, 0.1, 6, 0.1]
// in order: pairId, valueBid, pairId, valueAsk
}
}
Example response
{
"topic_identifier": "6",
"topic": "SELECT_ADVANCED_REQUEST_PRICING",
"columns": [
"rule_id",
"pair_id"
"side",
"outbound_price",
"maker_address",
"token0_address",
"token1_address",
"token0_dec",
"token1_dec",
"gas_fee_token0",
"gas_fee_token1",
"transaction_fee",
"transaction_fee_token"
],
"rows": [
{
"gas_fee_token0": 0.018512530089152
"gas_fee_token1": 0.015949470298308906
"maker_address": "0xda0dd31b18c6babc35e7d59f94fae7a180594c7b"
"outbound_price": 0.86149991385
"pair_id": 6
"rule_id": 234
"side": 0
"token0_address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"
"token0_dec": 18
"token1_address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
"token1_dec": 6
"transaction_fee": 0
"transaction_fee_token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
},
{
"gas_fee_token0": 0.018512530089152
"gas_fee_token1": 0.015949470298308906
"maker_address": "0xda0dd31b18c6babc35e7d59f94fae7a180594c7b"
"outbound_price": 0.86149991385
"pair_id": 6
"rule_id": 235
"side": 1
"token0_address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"
"token0_dec": 18
"token1_address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
"token1_dec": 6
"transaction_fee": 0
"transaction_fee_token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
}
]
}
Advanced stream for a specific maker
The best price stream includes two sides of a pair and is based on the amount of token you want to sell/buy. Stream is provided by a specific maker.
Request example
{
"action": "custom-topic-subscribe",
"data": {
"topic_identifier": "6", // pairId (string)
"topic_name": "SELECT_ADVANCED_REQUEST_PRICING",
"parameters": [6, 0.1, "0x98C3CEC32166936672A75FD7D85ad92eb5178D84",
6, 0.1,"0x98C3CEC32166936672A75FD7D85ad92eb5178D84"]
// in order: pairId, valueBid, makerAddress, pairId, valueAsk, makerAddress
}
}
Response Example
{
"topic_identifier": "6",
"topic": "SELECT_ADVANCED_MAKER_REQUEST_PRICING",
"columns": [
"rule_id",
"pair_id"
"side",
"outbound_price",
"maker_address",
"token0_address",
"token1_address",
"token0_dec",
"token1_dec",
"gas_fee_token0",
"gas_fee_token1",
"transaction_fee",
"transaction_fee_token"
],
"rows": [
{
"gas_fee_token0": 0.018512530089152
"gas_fee_token1": 0.015949470298308906
"maker_address": "0xda0dd31b18c6babc35e7d59f94fae7a180594c7b"
"outbound_price": 0.86149991385
"pair_id": 6
"rule_id": 234
"side": 0
"token0_address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"
"token0_dec": 18
"token1_address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
"token1_dec": 6
"transaction_fee": 0
"transaction_fee_token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
},
{
"gas_fee_token0": 0.018512530089152
"gas_fee_token1": 0.015949470298308906
"maker_address": "0xda0dd31b18c6babc35e7d59f94fae7a180594c7b"
"outbound_price": 0.86149991385
"pair_id": 6
"rule_id": 235
"side": 1
"token0_address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"
"token0_dec": 18
"token1_address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
"token1_dec": 6
"transaction_fee": 0
"transaction_fee_token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
}
]
}