curl --request GET \
--url https://api.limitless.exchange/parlay/packsimport requests
url = "https://api.limitless.exchange/parlay/packs"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/parlay/packs', 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",
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"
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")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/packs")
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
}
]List Packs
Returns active, eligible Packs in their trade window. Returns an empty array while the treasury is below its floor. Catalogue payouts are display estimates for a 10 USDC stake; obtain a partner quote for the intended stake.
curl --request GET \
--url https://api.limitless.exchange/parlay/packsimport requests
url = "https://api.limitless.exchange/parlay/packs"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/parlay/packs', 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",
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"
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")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/packs")
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
}
]property query parameter filters by property slug; an unknown slug returns an empty array.
The response is publicly cacheable for 30 seconds with 60 seconds of stale-while-revalidate. While the treasury is below its operating floor, the list is empty.
Catalogue payout values are display estimates for a 10 USDC stake. Use a partner quote for the intended stake before buying.
See the Partner Packs workflow for buying and claiming with managed wallets.Query Parameters
Property slug filter. Unknown slugs return an empty list.
Response
Active catalogue Packs
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.