curl --request GET \
--url https://api.limitless.exchange/parlay/packs/{id}import requests
url = "https://api.limitless.exchange/parlay/packs/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/parlay/packs/{id}', 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://api.limitless.exchange/parlay/packs/{id}",
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://api.limitless.exchange/parlay/packs/{id}"
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://api.limitless.exchange/parlay/packs/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/packs/{id}")
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": "<string>",
"name": "<string>",
"parlayType": "CLOB",
"status": "ACTIVE",
"wasteStrategy": "HOLD",
"earliestDeadline": "<string>",
"legs": [
{
"marketId": 123,
"marketSlug": "<string>",
"marketTitle": "<string>",
"outcome": "YES",
"livePrice": 123,
"priceSnapshot": 123,
"resolvedOutcome": "YES",
"esportsPropType": "map_winner",
"outcomeLabels": [
"<string>"
],
"outcomeImageUrls": [
"<string>"
],
"marketType": "CLOB",
"group": {
"id": 123,
"slug": "<string>",
"title": "<string>",
"leagueName": "<string>",
"homeTeam": "<string>",
"awayTeam": "<string>",
"homeScore": 123,
"awayScore": 123,
"startMatchTimestamp": 123
},
"leagueName": "<string>",
"marketImageUrl": "<string>",
"startMatchTimestamp": 123
}
],
"payout": {
"stake": "10",
"parlayMultiplier": 123,
"parlayPayout": "76.80",
"singlesMultiplier": 123,
"singlesPayout": "<string>",
"savingsPct": 123
},
"properties": [
{
"id": "<string>",
"propertyKeyId": "<string>",
"propertyKeySlug": "<string>",
"propertyKeyName": "<string>",
"value": "<unknown>"
}
],
"inDeadlineWindow": true,
"packOutcome": "WON",
"eligible": true,
"ineligibleReason": "<string>",
"payoutCoefficient": 123
}Get Pack
Returns catalogue details. A returned Pack is not necessarily active or currently eligible; obtain a partner quote before buying. Hidden Packs return 404.
curl --request GET \
--url https://api.limitless.exchange/parlay/packs/{id}import requests
url = "https://api.limitless.exchange/parlay/packs/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/parlay/packs/{id}', 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://api.limitless.exchange/parlay/packs/{id}",
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://api.limitless.exchange/parlay/packs/{id}"
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://api.limitless.exchange/parlay/packs/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/packs/{id}")
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": "<string>",
"name": "<string>",
"parlayType": "CLOB",
"status": "ACTIVE",
"wasteStrategy": "HOLD",
"earliestDeadline": "<string>",
"legs": [
{
"marketId": 123,
"marketSlug": "<string>",
"marketTitle": "<string>",
"outcome": "YES",
"livePrice": 123,
"priceSnapshot": 123,
"resolvedOutcome": "YES",
"esportsPropType": "map_winner",
"outcomeLabels": [
"<string>"
],
"outcomeImageUrls": [
"<string>"
],
"marketType": "CLOB",
"group": {
"id": 123,
"slug": "<string>",
"title": "<string>",
"leagueName": "<string>",
"homeTeam": "<string>",
"awayTeam": "<string>",
"homeScore": 123,
"awayScore": 123,
"startMatchTimestamp": 123
},
"leagueName": "<string>",
"marketImageUrl": "<string>",
"startMatchTimestamp": 123
}
],
"payout": {
"stake": "10",
"parlayMultiplier": 123,
"parlayPayout": "76.80",
"singlesMultiplier": 123,
"singlesPayout": "<string>",
"savingsPct": 123
},
"properties": [
{
"id": "<string>",
"propertyKeyId": "<string>",
"propertyKeySlug": "<string>",
"propertyKeyName": "<string>",
"value": "<unknown>"
}
],
"inDeadlineWindow": true,
"packOutcome": "WON",
"eligible": true,
"ineligibleReason": "<string>",
"payoutCoefficient": 123
}404.
A returned Pack may be closed or ineligible. Check its state and request a partner quote for the desired stake before preparing a purchase. The response is publicly cacheable for 30 seconds with 60 seconds of stale-while-revalidate.
The catalogue ID identifies the product. Buying creates a separate position ID, which is used for tracking and claiming.Path Parameters
Response
Catalogue Pack
CLOB, NEGRISK ACTIVE, CLOSED, DRAFT, HIDDEN Waste-disposition strategy for parlays bought from this pack
HOLD, SELL ISO timestamp of the earliest leg deadline
Show child attributes
Show child attributes
Always computed with stake = "10"
Show child attributes
Show child attributes
Property-key tags attached to this pack (used by filter pages)
Show child attributes
Show child attributes
Mirrors the deadline gate the active-pack listing applies. False packs are hidden from users even when ACTIVE.
LOST the moment any resolved leg mismatches, WON only when every leg resolves matching, PENDING otherwise
WON, LOST, PENDING True when the pack would be accepted by a quote against current orderbook state. False signals clients to disable the buy CTA and surface ineligibleReason.
Single-line reason from the most recent quote attempt when eligible=false. Null when eligible.
Catalogue payout coefficient.