curl --get --max-time 10 \
--url "https://api.oddswire.io/v1/native/odds" \
--data-urlencode "source_id=$SOURCE_ID" \
--data-urlencode "namespace=$ODDSWIRE_NAMESPACE" \
--data-urlencode "native_fixture=$NATIVE_FIXTURE_ID" \
--header "X-API-Key: $ODDSWIRE_API_KEY"import os
from urllib.parse import urlencode
from urllib.request import Request, build_opener, HTTPRedirectHandler
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
query = {"source_id": os.environ["SOURCE_ID"], "namespace": os.environ["ODDSWIRE_NAMESPACE"], "native_fixture": os.environ["NATIVE_FIXTURE_ID"]}
url = "https://api.oddswire.io/v1/native/odds" + ("?" + urlencode(query) if query else "")
request = Request(url, headers={"X-API-Key": os.environ["ODDSWIRE_API_KEY"]})
with build_opener(NoRedirect).open(request, timeout=10) as response:
print(response.read().decode())const required = (name: string) => {
const value = process.env[name];
if (!value) throw new Error(`Set ${name}`);
return value;
};
const url = new URL("https://api.oddswire.io/v1/native/odds");
url.searchParams.set("source_id", required("SOURCE_ID"));
url.searchParams.set("namespace", required("ODDSWIRE_NAMESPACE"));
url.searchParams.set("native_fixture", required("NATIVE_FIXTURE_ID"));
const response = await fetch(url, {
headers: {"X-API-Key": required("ODDSWIRE_API_KEY")},
redirect: "error", signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());{
"data": [
{
"capture_id": "<string>",
"delay_seconds": 123,
"fee_model_verified": true,
"key": {
"event_id": "<string>",
"line": "<string>",
"line_index": 123,
"market_id": "<string>",
"selection_id": "<string>",
"source_id": 4503599627370496,
"type": "<string>"
},
"market_name": "<string>",
"market_type": "<string>",
"native_unit": "<string>",
"native_value": "<string>",
"period": "<string>",
"player_identity_verified": true,
"player_prop_candidate": true,
"provider_delay_seconds": 123,
"quote_key": "<string>",
"received_at": "2023-11-07T05:31:56Z",
"selection_name": "<string>",
"settlement_compatibility_verified": true,
"source_ts": "2023-11-07T05:31:56Z",
"state": "<string>",
"native_context_id": "<string>",
"native_internal_event_id": "<string>",
"native_player_id": "<string>",
"native_player_name": "<string>",
"reason": "<string>"
}
],
"meta": {
"consistency": "<string>",
"count": 123,
"next_cursor": "<string>",
"request_id": "<string>",
"sent_ts": "2023-11-07T05:31:56Z",
"snapshot_ts": "2023-11-07T05:31:56Z",
"version": "<string>",
"dataset": "<string>",
"namespace": "<string>"
},
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
]
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}Native odds and props
Native odds and props: request contract, authentication, parameters and response behavior for the Oddswire private pilot.
curl --get --max-time 10 \
--url "https://api.oddswire.io/v1/native/odds" \
--data-urlencode "source_id=$SOURCE_ID" \
--data-urlencode "namespace=$ODDSWIRE_NAMESPACE" \
--data-urlencode "native_fixture=$NATIVE_FIXTURE_ID" \
--header "X-API-Key: $ODDSWIRE_API_KEY"import os
from urllib.parse import urlencode
from urllib.request import Request, build_opener, HTTPRedirectHandler
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
query = {"source_id": os.environ["SOURCE_ID"], "namespace": os.environ["ODDSWIRE_NAMESPACE"], "native_fixture": os.environ["NATIVE_FIXTURE_ID"]}
url = "https://api.oddswire.io/v1/native/odds" + ("?" + urlencode(query) if query else "")
request = Request(url, headers={"X-API-Key": os.environ["ODDSWIRE_API_KEY"]})
with build_opener(NoRedirect).open(request, timeout=10) as response:
print(response.read().decode())const required = (name: string) => {
const value = process.env[name];
if (!value) throw new Error(`Set ${name}`);
return value;
};
const url = new URL("https://api.oddswire.io/v1/native/odds");
url.searchParams.set("source_id", required("SOURCE_ID"));
url.searchParams.set("namespace", required("ODDSWIRE_NAMESPACE"));
url.searchParams.set("native_fixture", required("NATIVE_FIXTURE_ID"));
const response = await fetch(url, {
headers: {"X-API-Key": required("ODDSWIRE_API_KEY")},
redirect: "error", signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());{
"data": [
{
"capture_id": "<string>",
"delay_seconds": 123,
"fee_model_verified": true,
"key": {
"event_id": "<string>",
"line": "<string>",
"line_index": 123,
"market_id": "<string>",
"selection_id": "<string>",
"source_id": 4503599627370496,
"type": "<string>"
},
"market_name": "<string>",
"market_type": "<string>",
"native_unit": "<string>",
"native_value": "<string>",
"period": "<string>",
"player_identity_verified": true,
"player_prop_candidate": true,
"provider_delay_seconds": 123,
"quote_key": "<string>",
"received_at": "2023-11-07T05:31:56Z",
"selection_name": "<string>",
"settlement_compatibility_verified": true,
"source_ts": "2023-11-07T05:31:56Z",
"state": "<string>",
"native_context_id": "<string>",
"native_internal_event_id": "<string>",
"native_player_id": "<string>",
"native_player_name": "<string>",
"reason": "<string>"
}
],
"meta": {
"consistency": "<string>",
"count": 123,
"next_cursor": "<string>",
"request_id": "<string>",
"sent_ts": "2023-11-07T05:31:56Z",
"snapshot_ts": "2023-11-07T05:31:56Z",
"version": "<string>",
"dataset": "<string>",
"namespace": "<string>"
},
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
]
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
],
"missing": [
{
"detail": "<string>",
"reason": "<string>",
"family": "1x2",
"fixture_id": 4503599627370496,
"quote_key": "<string>",
"source_id": 4503599627370496
}
],
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>"
}GET /v1/native/odds
Set the required IDs from native fixture discovery. Examples read IDs and namespace from your environment; use only values returned for your approved scope.
Authentication · Requests, quota and errors · Coverage and units.Authorizations
Headers
Weak semantic ETag; freshness and access are revalidated before 304.
Query Parameters
Native source11 (198Bet, default),12 (1xBit) or13 (20Bet); requires its explicit source grant.
Explicit native-evidence namespace: oddswire_bookmakers.
Additional delay0..3600 from original receive time; default0. Freshness90s relative to cutoff; current suspension/kickoff still fences delivery.
Page size1..100 within current grant.
1 <= x <= 100Query/access/evidence-bound cursor; restart after409.
One source-native fixture ID from native/fixtures.
Return only source-labelled player-prop candidates, without inferred canonical identity.
legacy (default) or the consistent standard view.
legacy, standard Response
Typed native page. A nonempty eligible native data page costs one credit. Empty native fixture pages and native odds pages without eligible records are free; inspect Usage for final settlement. Errors and 304 are free. Read all missing[] entries.