Fetch a single match by slug
curl --request GET \
--url https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}import requests
url = "https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}', 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://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"teamA": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"teamB": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"group": "<string>",
"tags": [
{
"slug": "<string>",
"name": "<string>",
"color": "<string>",
"iconUrl": "<string>"
}
],
"stage": "group",
"kickoffAt": "2023-11-07T05:31:56Z",
"state": "<string>",
"scheduleStatus": "SCHEDULED",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"events": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"group": "<string>",
"stage": "group",
"teamA": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"teamB": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"tags": [
{
"slug": "<string>",
"name": "<string>",
"color": "<string>",
"iconUrl": "<string>"
}
],
"scheduledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"markets": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"eventId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"symbol": "<string>",
"slug": "<string>",
"title": "<string>",
"groupItemTitle": "<string>",
"conditionId": "<string>",
"questionId": "<string>",
"yesTokenId": "<string>",
"noTokenId": "<string>",
"status": "PRE_MARKET",
"currentReviewRound": 123,
"outcomeCount": 123,
"outcomeLabels": [
"<string>"
],
"feeTakerBps": 123,
"tradingWindow": {
"preMarketStartsAt": "<string>",
"opensAt": "<string>",
"closesAt": "<string>"
},
"kickoff": "2023-11-07T05:31:56Z",
"resolutionWindowHours": 123,
"lifecycle": {
"closedAt": "<string>",
"pausedAt": "<string>",
"resolvedAt": "<string>",
"voidedAt": "<string>"
},
"payoutNumerators": "<unknown>",
"officialDataSource": "<string>",
"sourceMatchId": "<string>",
"resolutionCriteria": "<string>",
"negRiskEligible": true,
"isNewMarketType": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"outcomePrices": [
"<string>"
],
"chances": [
"<string>"
],
"vertical": "crypto",
"marketType": "<string>",
"crypto": {
"productType": "THRESHOLD_BY_DEADLINE",
"direction": "ABOVE",
"targetPrice": "64400",
"instrumentId": "BTC-USD",
"benchmarkInstrumentId": "<string>",
"deadlineAt": "2023-11-07T05:31:56Z",
"month": "2026-07"
},
"cryptoWindow": {
"seriesId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"windowStartAt": "2023-11-07T05:31:56Z",
"windowEndAt": "2023-11-07T05:31:56Z",
"openPrice": "63672459298735910000000",
"streamDecimals": 18,
"openPriceIsFinal": true,
"outcome": "UP"
}
}
]
}
]
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}Matches
Fetch a single match by slug
Public match detail is resolved by the canonical match slug. UUID-based public match URLs are not part of the API contract. 404 with code=match_not_found if the slug does not exist or has no public-status markets.
GET
/
api
/
matches
/
{slug}
Fetch a single match by slug
curl --request GET \
--url https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}import requests
url = "https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}', 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://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/matches/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"teamA": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"teamB": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"group": "<string>",
"tags": [
{
"slug": "<string>",
"name": "<string>",
"color": "<string>",
"iconUrl": "<string>"
}
],
"stage": "group",
"kickoffAt": "2023-11-07T05:31:56Z",
"state": "<string>",
"scheduleStatus": "SCHEDULED",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"events": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"group": "<string>",
"stage": "group",
"teamA": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"teamB": {
"code": "<string>",
"label": "<string>",
"logo": "<string>"
},
"tags": [
{
"slug": "<string>",
"name": "<string>",
"color": "<string>",
"iconUrl": "<string>"
}
],
"scheduledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"markets": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"eventId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"symbol": "<string>",
"slug": "<string>",
"title": "<string>",
"groupItemTitle": "<string>",
"conditionId": "<string>",
"questionId": "<string>",
"yesTokenId": "<string>",
"noTokenId": "<string>",
"status": "PRE_MARKET",
"currentReviewRound": 123,
"outcomeCount": 123,
"outcomeLabels": [
"<string>"
],
"feeTakerBps": 123,
"tradingWindow": {
"preMarketStartsAt": "<string>",
"opensAt": "<string>",
"closesAt": "<string>"
},
"kickoff": "2023-11-07T05:31:56Z",
"resolutionWindowHours": 123,
"lifecycle": {
"closedAt": "<string>",
"pausedAt": "<string>",
"resolvedAt": "<string>",
"voidedAt": "<string>"
},
"payoutNumerators": "<unknown>",
"officialDataSource": "<string>",
"sourceMatchId": "<string>",
"resolutionCriteria": "<string>",
"negRiskEligible": true,
"isNewMarketType": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"outcomePrices": [
"<string>"
],
"chances": [
"<string>"
],
"vertical": "crypto",
"marketType": "<string>",
"crypto": {
"productType": "THRESHOLD_BY_DEADLINE",
"direction": "ABOVE",
"targetPrice": "64400",
"instrumentId": "BTC-USD",
"benchmarkInstrumentId": "<string>",
"deadlineAt": "2023-11-07T05:31:56Z",
"month": "2026-07"
},
"cryptoWindow": {
"seriesId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"windowStartAt": "2023-11-07T05:31:56Z",
"windowEndAt": "2023-11-07T05:31:56Z",
"openPrice": "63672459298735910000000",
"streamDecimals": 18,
"openPriceIsFinal": true,
"outcome": "UP"
}
}
]
}
]
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}Path Parameters
Canonical match slug.
Response
OK
A single fixture/card that groups several related events (e.g. 1X2, first-scorer, over-under) under one matchup.
Short matchup label (e.g. 'BRA vs ARG').
Home team.
Show child attributes
Show child attributes
Away team.
Show child attributes
Show child attributes
Group letter, only set when stage is group.
Show child attributes
Show child attributes
Available options:
group, r32, r16, quarter_finals, semi_finals, third_place, final, fifa_friendlies, ucl, uefa_europa_conference_league Scheduled kickoff.
Match publication state — LIVE for every match returned publicly. Not an in-play flag; use live for that.
Rollup of the child events: CANCELLED > POSTPONED > PLAYED (all) > SCHEDULED.
Available options:
SCHEDULED, POSTPONED, CANCELLED, PLAYED Show child attributes
Show child attributes