curl -sS 'https://api.0xinsider.com/api/v1/pick-of-the-day/ledger'import requests
url = "https://api.0xinsider.com/api/v1/pick-of-the-day/ledger"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.0xinsider.com/api/v1/pick-of-the-day/ledger', 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.0xinsider.com/api/v1/pick-of-the-day/ledger",
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.0xinsider.com/api/v1/pick-of-the-day/ledger"
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.0xinsider.com/api/v1/pick-of-the-day/ledger")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.0xinsider.com/api/v1/pick-of-the-day/ledger")
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{
"object": "pick_of_the_day_ledger",
"data": {
"entries": [
{
"state": "uncommitted",
"pick_date": "2026-06-22",
"pick_rank": 1,
"pre_commitment": true,
"outcome": "win",
"matchup": "Spain vs. France",
"category": "Soccer",
"resolved_at": null,
"permalink": "https://0xinsider.com/pick-of-the-day/2026-06-22/1",
"payload": {
"backed_price": "0.6100",
"condition_id": "0xabc1230000000000000000000000000000000abc7f7f7f7f7f7f7f7f7f7f7f7f",
"kickoff": "2026-06-22T19:00:00Z",
"pick_date": "2026-06-22",
"pick_outcome_index": 0,
"pick_outcome_label": "Spain",
"pick_rank": 1,
"platform": "polymarket"
},
"pick_id": "1000",
"publication_order": 1,
"is_free_selection": true,
"supersedes_pick_id": null
},
{
"state": "opened",
"pick_date": "2026-09-20",
"pick_rank": 1,
"commitment_hash": "44d18fa5e2aa3a2bf3c971dcc9317c8ccbdfd5480a4773b6d8ffd5fbeeea84dc",
"commitment_nonce": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"commitment_algo": "sha256(canonical_json(payload)||nonce)",
"sealed_at": "2026-09-20T17:00:04.318271Z",
"resolved_at": "2026-09-21T02:41:09.552310Z",
"kickoff": "2026-09-20T23:05:00Z",
"payload": {
"backed_price": "0.545000",
"condition_id": "0xabc",
"kickoff": "2026-09-20T23:05:00Z",
"pick_date": "2026-09-20",
"pick_outcome_index": 1,
"pick_outcome_label": "Lakers",
"pick_rank": 1,
"platform": "polymarket"
},
"outcome": "win",
"matchup": "Lakers vs. Warriors",
"category": "Basketball",
"permalink": "https://0xinsider.com/pick-of-the-day/2026-09-20/1",
"pick_id": "1001",
"publication_order": 1,
"is_free_selection": true,
"supersedes_pick_id": null,
"commitment_version": 1
}
],
"entry_count": 2,
"sealed_count": 0,
"opened_count": 1,
"uncommitted_count": 1
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}Pick of the Day ledger
Read pick commitments and revealed payloads to verify that a settled pick is unchanged.
curl -sS 'https://api.0xinsider.com/api/v1/pick-of-the-day/ledger'import requests
url = "https://api.0xinsider.com/api/v1/pick-of-the-day/ledger"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.0xinsider.com/api/v1/pick-of-the-day/ledger', 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.0xinsider.com/api/v1/pick-of-the-day/ledger",
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.0xinsider.com/api/v1/pick-of-the-day/ledger"
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.0xinsider.com/api/v1/pick-of-the-day/ledger")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.0xinsider.com/api/v1/pick-of-the-day/ledger")
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{
"object": "pick_of_the_day_ledger",
"data": {
"entries": [
{
"state": "uncommitted",
"pick_date": "2026-06-22",
"pick_rank": 1,
"pre_commitment": true,
"outcome": "win",
"matchup": "Spain vs. France",
"category": "Soccer",
"resolved_at": null,
"permalink": "https://0xinsider.com/pick-of-the-day/2026-06-22/1",
"payload": {
"backed_price": "0.6100",
"condition_id": "0xabc1230000000000000000000000000000000abc7f7f7f7f7f7f7f7f7f7f7f7f",
"kickoff": "2026-06-22T19:00:00Z",
"pick_date": "2026-06-22",
"pick_outcome_index": 0,
"pick_outcome_label": "Spain",
"pick_rank": 1,
"platform": "polymarket"
},
"pick_id": "1000",
"publication_order": 1,
"is_free_selection": true,
"supersedes_pick_id": null
},
{
"state": "opened",
"pick_date": "2026-09-20",
"pick_rank": 1,
"commitment_hash": "44d18fa5e2aa3a2bf3c971dcc9317c8ccbdfd5480a4773b6d8ffd5fbeeea84dc",
"commitment_nonce": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"commitment_algo": "sha256(canonical_json(payload)||nonce)",
"sealed_at": "2026-09-20T17:00:04.318271Z",
"resolved_at": "2026-09-21T02:41:09.552310Z",
"kickoff": "2026-09-20T23:05:00Z",
"payload": {
"backed_price": "0.545000",
"condition_id": "0xabc",
"kickoff": "2026-09-20T23:05:00Z",
"pick_date": "2026-09-20",
"pick_outcome_index": 1,
"pick_outcome_label": "Lakers",
"pick_rank": 1,
"platform": "polymarket"
},
"outcome": "win",
"matchup": "Lakers vs. Warriors",
"category": "Basketball",
"permalink": "https://0xinsider.com/pick-of-the-day/2026-09-20/1",
"pick_id": "1001",
"publication_order": 1,
"is_free_selection": true,
"supersedes_pick_id": null,
"commitment_version": 1
}
],
"entry_count": 2,
"sealed_count": 0,
"opened_count": 1,
"uncommitted_count": 1
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z",
"freshness": {
"max_age_s": 1,
"data_quality_status": "fresh",
"actual_age_s": 1,
"as_of": "2023-11-07T05:31:56Z"
},
"reason": "cursor_expired"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"ranking_generation": 123,
"ranking_as_of": "2023-11-07T05:31:56Z",
"directional_source": "live",
"ranking_source": "live",
"category_skill_source": "live",
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "polymarket",
"category_skill_scope": "observed_goldsky_primary_taker_fill",
"category_skill_source_coverage": "partial_whale_threshold_fills",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}sha256(canonical_json(payload) || nonce). Read commitment_version to choose the correct payload format.
The payload and nonce become available after settlement. No API key or subscription is required, and every caller sees the same fields for an entry’s state.
The ledger retains commitments for withdrawn picks. Removing a recommendation from current picks or the archive does not change its identity, proof bytes, or provider-owned settlement.
For results and the running hit rate, use Pick of the Day archive.
The three states
The ledger has one entry per published pick, sorted by date and publication order, oldest first. Readstate before processing an entry because each state has different fields.
state | What the entry carries |
|---|---|
sealed | A pick that has not settled yet: commitment_hash, commitment_algo, sealed_at, and permalink. kickoff is omitted while the entry is sealed. There is no nonce, no payload, no side, and no price, because the hash alone reveals none of them. |
opened | A settled pick: every sealed field plus kickoff, commitment_nonce, payload, outcome, resolved_at, matchup, and category. This is the only state you can verify. |
uncommitted | A pick that was published before commitments existed or reached kickoff unsealed has pre_commitment: true, no hash, and no nonce. Pending entries omit matchup and category, and their payload is null. After settlement, payload can disclose the market, side, and price, without making a proof claim. |
kickoff field to avoid identifying an unresolved game. Opened entries retain kickoff and the original proof payload; historical commitment bytes do not change. Pending uncommitted entries also omit matchup and category.
Commitment versions
Checkcommitment_version before verifying a committed entry. Version 1 uses the original payload with pick_rank. Version 2 replaces that field with the decimal-string pick_id and adds the integer version: 2.
The version 2 payload has exactly 9 keys: backed_price, condition_id, kickoff, pick_date, pick_id, pick_outcome_index, pick_outcome_label, platform, and version. Historical version 1 payloads retain their exact bytes and hashes, and an uncommitted entry claims no commitment version. Refuse an unknown or missing committed-entry version instead of guessing its payload shape.
To fetch one published entry by its stable identity, use Get a Pick of the Day ledger entry.
Key response fields
| Field | Meaning |
|---|---|
pick_id | The pick’s stable positive decimal-string identity, present in every state. |
publication_order | The publication order within the date. It does not rank pick quality. |
is_free_selection | The explicit free-selection designation. |
supersedes_pick_id | The ID of the selection this pick replaced, or null if it replaced none. |
commitment_version | The payload contract for a committed entry: 1 or 2. It is absent on uncommitted entries. |
commitment_hash | Lowercase hex, with no 0x prefix. It is safe to publish the moment a pick releases, because without the nonce it cannot be inverted. |
commitment_algo | The exact construction the hash was taken with, stated in the response so a verifier never has to guess the serialization. |
sealed_at | When the hash was frozen. It is always strictly before kickoff: a seal written after the game started would be a backdated proof, so it is never written. |
resolved_at | When outcome was last written to a settled value, or null when that instant is unknown. It can move under an unchanged commitment_hash when a corrected market re-maps a pick that had already settled. |
entry_count, sealed_count, opened_count, uncommitted_count | Counts over the same set of entries, computed in the pass that builds the list. uncommitted_count can only stop growing, because no pick is ever sealed after the fact. |
Verify an opened entry
- Take the bytes of the
payloadobject exactly as you received them. Do not reserialize it. - Append
commitment_nonce, decoded from hex. - Take the SHA-256 of that concatenation. It equals
commitment_hash.
Z.
Errors
A500 with error.code internal_error means one entry failed a consistency check, so the whole ledger is refused rather than served incomplete. A 503 with Retry-After means the database was unavailable; retry after that many seconds.
Example
curl "https://api.0xinsider.com/api/v1/pick-of-the-day/ledger"
What it does not return
- The backed side of a live pick. A pick payload has little entropy, so publishing the nonce before the game would hand out the side.
- A commitment written after kickoff. A pick that reached kickoff unsealed stays
uncommittedfor good. - The outcome inside the hash. The commitment deliberately covers the pick, not the result, which is why a corrected market can move
resolved_atwhilecommitment_hashstays the same. - Anything formatted for display. An entry changes only when the pick does, so a rewrite of the archive’s wording can never look like a broken proof.
Caching
Save the response’sETag and send it in If-None-Match on your next request. If the ledger has not changed, the server returns 304 Not Modified with no body.Headers
Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.
strict Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.
Response
Pick of the Day commitment ledger
"pick_of_the_day_ledger"The commitment ledger: every published pick, ascending, in the state its commitment is actually in. The counts are derived from entries in the same pass that builds it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?