Mispricing leads
curl --request GET \
--url https://api.routeur.app/v1/opportunities \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/opportunities"
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/opportunities', 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/opportunities"
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,
"left": {
"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
},
"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",
"price_usd": "0.4100",
"source": "venue"
}
},
"right": {
"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
},
"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",
"price_usd": "0.4100",
"source": "venue"
}
},
"legs": [
{
"venue": "kalshi",
"market_id": "<string>",
"side": "yes",
"ask_usd": "0.4100"
}
],
"cost_usd": "0.4100",
"gross_edge_usd": "0.4100",
"estimated_fee_usd": "0.4100",
"net_edge_usd": "0.4100",
"issues": [
"<string>"
],
"depth": {
"executable": true,
"pairs": "0.4100",
"cost_usd": "0.4100",
"fees_usd": "0.4100",
"net_usd": "0.4100",
"limited_by": "price",
"observed_at": "2023-11-07T05:31:56Z",
"issues": [
"<string>"
]
}
}
],
"graph_run": 2
}{
"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>"
}
}Signals
Mispricing leads
Two-leg purchases that pay at least $1 in every outcome a proven relation
allows, priced from recorded top-of-book asks with estimated fees. The best
leads each run are sized against live order books (depth); only leads
with depth.executable could be filled at a profit when the books were
read. Leads are observations, not quotes.
GET
/
v1
/
opportunities
Mispricing leads
curl --request GET \
--url https://api.routeur.app/v1/opportunities \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/opportunities"
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/opportunities', 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/opportunities"
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,
"left": {
"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
},
"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",
"price_usd": "0.4100",
"source": "venue"
}
},
"right": {
"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
},
"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",
"price_usd": "0.4100",
"source": "venue"
}
},
"legs": [
{
"venue": "kalshi",
"market_id": "<string>",
"side": "yes",
"ask_usd": "0.4100"
}
],
"cost_usd": "0.4100",
"gross_edge_usd": "0.4100",
"estimated_fee_usd": "0.4100",
"net_edge_usd": "0.4100",
"issues": [
"<string>"
],
"depth": {
"executable": true,
"pairs": "0.4100",
"cost_usd": "0.4100",
"fees_usd": "0.4100",
"net_usd": "0.4100",
"limited_by": "price",
"observed_at": "2023-11-07T05:31:56Z",
"issues": [
"<string>"
]
}
}
],
"graph_run": 2
}{
"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>"
}
}Authorizations
apiKeybearer
Query Parameters
Only leads whose legs are on different venues.
Only leads whose live order books could be filled at a profit.
Leads to return, best net edge first.
Required range:
1 <= x <= 200