List Quotes For Rfq
curl --request GET \
--url https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-River-Key-Id': '<api-key>',
'X-River-Timestamp': '<api-key>',
'X-River-Signature': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-River-Key-Id: <api-key>",
"X-River-Signature: <api-key>",
"X-River-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-River-Key-Id", "<api-key>")
req.Header.Add("X-River-Timestamp", "<api-key>")
req.Header.Add("X-River-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-River-Key-Id"] = '<api-key>'
request["X-River-Timestamp"] = '<api-key>'
request["X-River-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"quotes": [
{
"exchange_quote_id": "<string>",
"exchange_rfq_id": "<string>",
"market_ticker": "<string>",
"status": "<string>",
"exchange": "<string>",
"yes_bid_dollars": 123,
"no_bid_dollars": 123,
"yes_contracts_fp": 123,
"no_contracts_fp": 123,
"contracts_fp": 123,
"accepted_buy_flag": true,
"accepted_ts": "<string>",
"confirmed_ts": "<string>",
"executed_ts": "<string>",
"cancelled_ts": "<string>",
"created_ts": "<string>",
"updated_ts": "<string>",
"rest_remainder": true,
"post_only": true,
"cancellation_reason": "<string>",
"creator_id": "<string>",
"creator_user_id": "<string>",
"rfq_creator_user_id": "<string>",
"rfq_creator_order_id": "<string>",
"creator_order_id": "<string>"
}
],
"cursor": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}RFQs
List Quotes For Rfq
The quotes makers have posted on your RFQ, in YES space. Poll this while the RFQ is open. On Polymarket US the answer is served from a 2 second cache: the exchange allows a retail key 10 requests per 10 seconds across all RFQ endpoints.
GET
/
v1
/
rfqs
/
{river_rfq_id}
/
quotes
List Quotes For Rfq
curl --request GET \
--url https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-River-Key-Id': '<api-key>',
'X-River-Timestamp': '<api-key>',
'X-River-Signature': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-River-Key-Id: <api-key>",
"X-River-Signature: <api-key>",
"X-River-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-River-Key-Id", "<api-key>")
req.Header.Add("X-River-Timestamp", "<api-key>")
req.Header.Add("X-River-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/rfqs/{river_rfq_id}/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-River-Key-Id"] = '<api-key>'
request["X-River-Timestamp"] = '<api-key>'
request["X-River-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"quotes": [
{
"exchange_quote_id": "<string>",
"exchange_rfq_id": "<string>",
"market_ticker": "<string>",
"status": "<string>",
"exchange": "<string>",
"yes_bid_dollars": 123,
"no_bid_dollars": 123,
"yes_contracts_fp": 123,
"no_contracts_fp": 123,
"contracts_fp": 123,
"accepted_buy_flag": true,
"accepted_ts": "<string>",
"confirmed_ts": "<string>",
"executed_ts": "<string>",
"cancelled_ts": "<string>",
"created_ts": "<string>",
"updated_ts": "<string>",
"rest_remainder": true,
"post_only": true,
"cancellation_reason": "<string>",
"creator_id": "<string>",
"creator_user_id": "<string>",
"rfq_creator_user_id": "<string>",
"rfq_creator_order_id": "<string>",
"creator_order_id": "<string>"
}
],
"cursor": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
SignedRequestKeyId & SignedRequestTimestamp & SignedRequestSignatureBearerAuth
UUID of your API key (from Settings → API Keys).
Current unix milliseconds (unix seconds also accepted). Must be within 30s of server time.
Base64 Ed25519 signature over the canonical request: METHOD\nPATH\nSORTED_QUERY\nTIMESTAMP\nSHA256(body) hex. See /api-reference/authentication for the full recipe.
Path Parameters
Query Parameters
Non-custodial subaccount to query under
Filter by quote status
Required range:
1 <= x <= 500
