Enumerate active markets for a provider (MMC cursor page)
Returns one cursor-paginated page of the active-market snapshot for a single provider. If the upstream listing is unavailable or the lookup otherwise fails, the route responds 503 Service Unavailable (“Active market snapshot is temporarily unavailable”) rather than fabricating an empty page — this can also happen for an exchange whose listing isn’t ready yet. The response echoes back the validated/lowercased provider and a source field. next_cursor is opaque — pass it back verbatim as cursor to fetch the next page; has_more: false / next_cursor: null marks the last page.
curl --request GET \
--url https://data.kairos.trade/markets/active \
--header 'X-Api-Key: <api-key>' \
--header 'X-Api-Secret: <api-key>' \
--header 'X-Client-Id: <api-key>'import requests
url = "https://data.kairos.trade/markets/active"
headers = {
"X-Client-Id": "<api-key>",
"X-Api-Key": "<api-key>",
"X-Api-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-Id': '<api-key>',
'X-Api-Key': '<api-key>',
'X-Api-Secret': '<api-key>'
}
};
fetch('https://data.kairos.trade/markets/active', 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://data.kairos.trade/markets/active",
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-Api-Key: <api-key>",
"X-Api-Secret: <api-key>",
"X-Client-Id: <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://data.kairos.trade/markets/active"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-Id", "<api-key>")
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("X-Api-Secret", "<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://data.kairos.trade/markets/active")
.header("X-Client-Id", "<api-key>")
.header("X-Api-Key", "<api-key>")
.header("X-Api-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.kairos.trade/markets/active")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-Id"] = '<api-key>'
request["X-Api-Key"] = '<api-key>'
request["X-Api-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"exchange_id": "polymarket",
"markets": [
{
"exchange_id": "<string>",
"market_id": "<string>",
"condition_id": "<string>",
"event_id": "<string>",
"title": "<string>",
"neg_risk": true,
"tick_size": 123,
"taker_base_fee_bps": 123,
"fees_enabled": true,
"category": "<string>",
"group_slug": "<string>",
"fee_type": "<string>",
"status": "<string>",
"image": "<string>",
"icon": "<string>",
"end_date": "<string>",
"open_time": "<string>",
"outcomes": [
{
"outcome": "Yes",
"normalized_outcome": "yes",
"token_id": "<string>",
"outcome_index": 123,
"side": true
}
],
"raw": {},
"resolution_status": "<string>",
"payout_numerators": [
123
],
"resolved_ts": "<string>",
"proposed_price": 123,
"challenge_window_ends_at": "<string>"
}
],
"count": 100,
"next_cursor": "<string>",
"has_more": true,
"provider": "polymarket",
"source": "<string>"
}{
"detail": "Invalid provider: foobar"
}{
"detail": "Not authenticated"
}{
"detail": "Invite required"
}{
"detail": [
{}
]
}{
"error": "Rate limit exceeded: 100 per 1 minute"
}{
"detail": "Active market snapshot is temporarily unavailable"
}next_cursor back as cursor, and stop when has_more is false.Authorizations
Credential client id (kairos_ck_...). Must be sent together with X-Api-Key and X-Api-Secret.
64-char hex API key.
64-char hex API secret.
Query Parameters
Provider/exchange id. Must be an active, known provider or the request is rejected with 400.
1 - 641 <= x <= 250Opaque pagination cursor from a previous page's next_cursor.
512Response
One page of active markets for the provider.
One page of the active-market listing for a provider, with provider/source stamped on by the API.
Lower-cased exchange id the market is listed under.
"polymarket"
Show child attributes
Show child attributes
Number of markets in this page (markets.length).
100
Opaque cursor for the next page, or null if this is the last page.
Echo of the validated/lowercased provider query param.
"polymarket"
Opaque internal origin marker. NOT a stable part of the contract — its value may change without notice; do not depend on or switch on it.
Was this page helpful?
curl --request GET \
--url https://data.kairos.trade/markets/active \
--header 'X-Api-Key: <api-key>' \
--header 'X-Api-Secret: <api-key>' \
--header 'X-Client-Id: <api-key>'import requests
url = "https://data.kairos.trade/markets/active"
headers = {
"X-Client-Id": "<api-key>",
"X-Api-Key": "<api-key>",
"X-Api-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-Id': '<api-key>',
'X-Api-Key': '<api-key>',
'X-Api-Secret': '<api-key>'
}
};
fetch('https://data.kairos.trade/markets/active', 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://data.kairos.trade/markets/active",
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-Api-Key: <api-key>",
"X-Api-Secret: <api-key>",
"X-Client-Id: <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://data.kairos.trade/markets/active"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-Id", "<api-key>")
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("X-Api-Secret", "<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://data.kairos.trade/markets/active")
.header("X-Client-Id", "<api-key>")
.header("X-Api-Key", "<api-key>")
.header("X-Api-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.kairos.trade/markets/active")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-Id"] = '<api-key>'
request["X-Api-Key"] = '<api-key>'
request["X-Api-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"exchange_id": "polymarket",
"markets": [
{
"exchange_id": "<string>",
"market_id": "<string>",
"condition_id": "<string>",
"event_id": "<string>",
"title": "<string>",
"neg_risk": true,
"tick_size": 123,
"taker_base_fee_bps": 123,
"fees_enabled": true,
"category": "<string>",
"group_slug": "<string>",
"fee_type": "<string>",
"status": "<string>",
"image": "<string>",
"icon": "<string>",
"end_date": "<string>",
"open_time": "<string>",
"outcomes": [
{
"outcome": "Yes",
"normalized_outcome": "yes",
"token_id": "<string>",
"outcome_index": 123,
"side": true
}
],
"raw": {},
"resolution_status": "<string>",
"payout_numerators": [
123
],
"resolved_ts": "<string>",
"proposed_price": 123,
"challenge_window_ends_at": "<string>"
}
],
"count": 100,
"next_cursor": "<string>",
"has_more": true,
"provider": "polymarket",
"source": "<string>"
}{
"detail": "Invalid provider: foobar"
}{
"detail": "Not authenticated"
}{
"detail": "Invite required"
}{
"detail": [
{}
]
}{
"error": "Rate limit exceeded: 100 per 1 minute"
}{
"detail": "Active market snapshot is temporarily unavailable"
}
