curl --request GET \
--url https://api.routeur.app/v1/markets/{venue}/{id}/relations \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/markets/{venue}/{id}/relations"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.routeur.app/v1/markets/{venue}/{id}/relations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.routeur.app/v1/markets/{venue}/{id}/relations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"relation": "equivalent",
"cross_venue": true,
"evidence": [
"<string>"
],
"market": {
"venue": "kalshi",
"id": "<string>",
"event_id": "<string>",
"title": "<string>",
"yes_label": "<string>",
"no_label": "<string>",
"event_mutually_exclusive": true,
"relations": {
"implies": 123,
"implied_by": 123,
"equivalent": 123,
"contradicts": 123,
"overlaps": 123,
"cross_venue": 123
},
"volume_24h_usd": "0.4100",
"trades_24h": 123,
"liquidity": "deep",
"category": "<string>",
"strike": {
"type": "<string>",
"rules_template_hash": "<string>",
"floor": "<string>",
"cap": "<string>",
"custom": {},
"functional": true
},
"game_starts_at": "2023-11-07T05:31:56Z",
"quote": {
"observed_at": "2023-11-07T05:31:56Z",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"yes_bid_usd": "0.4100",
"no_bid_usd": "0.4100",
"price_usd": "0.4100",
"source": "venue"
},
"volume_source": "venue",
"total_volume_usd": "0.4100",
"open_interest_usd": "0.4100",
"spread_usd": "0.4100",
"yes_spread_usd": "0.4100",
"no_spread_usd": "0.4100",
"book_spread_usd": "0.4100",
"book_yes_depth_5c_usd": "0.4100",
"book_no_depth_5c_usd": "0.4100",
"book_imbalance": "0.4100",
"book_at": "2023-11-07T05:31:56Z"
}
}
],
"proposals": [
{
"relation": "equivalent",
"informational": true,
"cross_venue": true,
"probability": 0.5,
"confidence": 0.5,
"questions": [
{
"id": "hedge_pays_once",
"version": "<string>"
}
],
"model": "<string>",
"proposed_at": "2023-11-07T05:31:56Z",
"market": {
"venue": "kalshi",
"id": "<string>",
"event_id": "<string>",
"title": "<string>",
"yes_label": "<string>",
"no_label": "<string>",
"event_mutually_exclusive": true,
"relations": {
"implies": 123,
"implied_by": 123,
"equivalent": 123,
"contradicts": 123,
"overlaps": 123,
"cross_venue": 123
},
"volume_24h_usd": "0.4100",
"trades_24h": 123,
"liquidity": "deep",
"category": "<string>",
"strike": {
"type": "<string>",
"rules_template_hash": "<string>",
"floor": "<string>",
"cap": "<string>",
"custom": {},
"functional": true
},
"game_starts_at": "2023-11-07T05:31:56Z",
"quote": {
"observed_at": "2023-11-07T05:31:56Z",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"yes_bid_usd": "0.4100",
"no_bid_usd": "0.4100",
"price_usd": "0.4100",
"source": "venue"
},
"volume_source": "venue",
"total_volume_usd": "0.4100",
"open_interest_usd": "0.4100",
"spread_usd": "0.4100",
"yes_spread_usd": "0.4100",
"no_spread_usd": "0.4100",
"book_spread_usd": "0.4100",
"book_yes_depth_5c_usd": "0.4100",
"book_no_depth_5c_usd": "0.4100",
"book_imbalance": "0.4100",
"book_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid or unsupported query parameter: limit."
}
}{
"error": {
"code": "api_key_required",
"message": "Send an API key in the X-API-Key header or as a Bearer token."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}List a market's relations
Every proven relation from this market’s point of view: implies means
this market resolving Yes guarantees the other resolves Yes. Cross-venue
relations come first.
data holds proofs and only proofs. Where a market is one the graph’s
templates cannot reach — politics, culture, a one-off question — a
separate proposals field carries cross-venue matches a model
suggested, each with the probability it answered and the version of
every question it was asked. A proposal is informational: it is not a
proof, it is not evidence, and no lead, accuracy figure or other
endpoint is built on one. Proposals are sent only on the first page of
an unnarrowed list, and only while they are still open: once the solver
agrees with or refutes one, or a moderator dismisses it, it is gone.
curl --request GET \
--url https://api.routeur.app/v1/markets/{venue}/{id}/relations \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/markets/{venue}/{id}/relations"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.routeur.app/v1/markets/{venue}/{id}/relations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.routeur.app/v1/markets/{venue}/{id}/relations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"relation": "equivalent",
"cross_venue": true,
"evidence": [
"<string>"
],
"market": {
"venue": "kalshi",
"id": "<string>",
"event_id": "<string>",
"title": "<string>",
"yes_label": "<string>",
"no_label": "<string>",
"event_mutually_exclusive": true,
"relations": {
"implies": 123,
"implied_by": 123,
"equivalent": 123,
"contradicts": 123,
"overlaps": 123,
"cross_venue": 123
},
"volume_24h_usd": "0.4100",
"trades_24h": 123,
"liquidity": "deep",
"category": "<string>",
"strike": {
"type": "<string>",
"rules_template_hash": "<string>",
"floor": "<string>",
"cap": "<string>",
"custom": {},
"functional": true
},
"game_starts_at": "2023-11-07T05:31:56Z",
"quote": {
"observed_at": "2023-11-07T05:31:56Z",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"yes_bid_usd": "0.4100",
"no_bid_usd": "0.4100",
"price_usd": "0.4100",
"source": "venue"
},
"volume_source": "venue",
"total_volume_usd": "0.4100",
"open_interest_usd": "0.4100",
"spread_usd": "0.4100",
"yes_spread_usd": "0.4100",
"no_spread_usd": "0.4100",
"book_spread_usd": "0.4100",
"book_yes_depth_5c_usd": "0.4100",
"book_no_depth_5c_usd": "0.4100",
"book_imbalance": "0.4100",
"book_at": "2023-11-07T05:31:56Z"
}
}
],
"proposals": [
{
"relation": "equivalent",
"informational": true,
"cross_venue": true,
"probability": 0.5,
"confidence": 0.5,
"questions": [
{
"id": "hedge_pays_once",
"version": "<string>"
}
],
"model": "<string>",
"proposed_at": "2023-11-07T05:31:56Z",
"market": {
"venue": "kalshi",
"id": "<string>",
"event_id": "<string>",
"title": "<string>",
"yes_label": "<string>",
"no_label": "<string>",
"event_mutually_exclusive": true,
"relations": {
"implies": 123,
"implied_by": 123,
"equivalent": 123,
"contradicts": 123,
"overlaps": 123,
"cross_venue": 123
},
"volume_24h_usd": "0.4100",
"trades_24h": 123,
"liquidity": "deep",
"category": "<string>",
"strike": {
"type": "<string>",
"rules_template_hash": "<string>",
"floor": "<string>",
"cap": "<string>",
"custom": {},
"functional": true
},
"game_starts_at": "2023-11-07T05:31:56Z",
"quote": {
"observed_at": "2023-11-07T05:31:56Z",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"yes_bid_usd": "0.4100",
"no_bid_usd": "0.4100",
"price_usd": "0.4100",
"source": "venue"
},
"volume_source": "venue",
"total_volume_usd": "0.4100",
"open_interest_usd": "0.4100",
"spread_usd": "0.4100",
"yes_spread_usd": "0.4100",
"no_spread_usd": "0.4100",
"book_spread_usd": "0.4100",
"book_yes_depth_5c_usd": "0.4100",
"book_no_depth_5c_usd": "0.4100",
"book_imbalance": "0.4100",
"book_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid or unsupported query parameter: limit."
}
}{
"error": {
"code": "api_key_required",
"message": "Send an API key in the X-API-Key header or as a Bearer token."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Path Parameters
Query Parameters
Only relations of this kind, from this market's side.
A relation from the requested market's side. implies: if this market
resolves Yes, the other does. implied_by: the reverse. contradicts:
both cannot resolve Yes. overlaps: the outcome sets intersect without
containment.
equivalent, implies, implied_by, contradicts, overlaps