API ReferenceCross-Venue Intelligence
List honestly labeled indicative price discrepancies.
const url = 'https://data.predictefy.com/v1/discrepancies?live=false&limit=20';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://data.predictefy.com/v1/discrepancies?live=false&limit=20' \ --header 'Authorization: Bearer <token>'DARK behind READS_ENABLE_CLUSTERS. Uses the matcher-maintained eligibility flag and orders by stored spread. The data page is fetched first; an exact total that is cold or past its honesty ceiling becomes null immediately while one process-wide background count warms it under a three-second budget. meta.totalUnavailable explains the missing total. live=true overlays current order-book mids when the order-book lane is wired, but never upgrades the indicative label.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”CSV list of response expansions. Currently only markets is supported; an unrecognized value returns 400 (VALIDATION_ERROR). expand=markets adds the market object to every discrepancy leg at no extra metering weight.
Stored requests may use up to 100 results (default 20). When live=true, the effective maximum is 10; requesting more returns 400 (VALIDATION_ERROR) because every live cluster recomputes against real order books. The previous shared 100 ceiling was an accidental abuse vector specifically on the live path.
Offsets above the maximum are rejected; use cursor pagination for deep walks.
Responses
Section titled “Responses”A cluster-grain page of indicative discrepancies.
object
object
object
Present only when the list request passes expand=markets.
object
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
The picture to show. It is the venue's art when it has any, else a stored substitute (see imageSource). Known-absent is null; this key is always emitted; null until the image-resolve stage has written this market. Thumbnail rule imageResolved ?? image ?? eventImage.
Why imageResolved is what it is (see ImageSource); null exactly when imageResolved is null.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
Metric-specific provenance for volume24h. venue is published by the venue; derived_cumulative is Predictefy-derived from cumulative snapshots; derived_tape is Predictefy-derived from captured fills. A derived value must carry this field.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
object
Present only when the list request passes expand=markets.
object
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
The picture to show. It is the venue's art when it has any, else a stored substitute (see imageSource). Known-absent is null; this key is always emitted; null until the image-resolve stage has written this market. Thumbnail rule imageResolved ?? image ?? eventImage.
Why imageResolved is what it is (see ImageSource); null exactly when imageResolved is null.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
Metric-specific provenance for volume24h. venue is published by the venue; derived_cumulative is Predictefy-derived from cumulative snapshots; derived_tape is Predictefy-derived from captured fills. A derived value must carry this field.
Known-absent is null; this key is always emitted for expanded discrepancy-leg market records.
Optional cluster-page metadata. asOf is present only when page.total is served stale and records that exact count's last successful computation time; totalUnavailable is present if and only if page.total is null; live/provenance identify a live discrepancy overlay; timings is present only when the request passed live=true.
object
Last successful exact-count time, present only while that total is stale.
Machine-readable explanation for an intentionally absent exact total.
object
Predictefy-live — served from the live WebSocket hub or live order book.
Per-stage live discrepancy processing time in milliseconds.
object
object
Total matching rows, or null when the total was NOT computed — never a fabricated 0. The data page is the product and the count is metadata, so routes may warm an exact total off-request or abandon a count that exceeds its short budget while the page is still served. null is always accompanied by meta.totalUnavailable, which says why; use hasMore / nextCursor to walk the result set.
Whether another page exists. Determined by fetching one row beyond the requested limit, so it stays correct even when total is null.
Opaque cursor for the next page. Omitted on the final page.
Example
{ "data": [ { "low": { "market": { "imageSource": "venue", "volume24hSource": "venue" } }, "high": { "market": { "imageSource": "venue", "volume24hSource": "venue" } }, "label": "indicative price discrepancy" } ], "meta": { "provenance": { "source": "predictefy-live" } }}VALIDATION_ERROR
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}UNAUTHORIZED
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}INSUFFICIENT_CREDITS
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}SCOPE_MISSING or PLAN_REQUIRED — see credits.md
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}ROUTE_NOT_FOUND while the lane is dark
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}RATE_LIMITED
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}Unexpected internal error. Retryable; error.requestId identifies the failure.
object
object
Always present on errors; quote this id when reporting a failed request.
Present only when a venue error is attributed to a specific exchange.
Example
{ "success": false, "error": { "code": "VALIDATION_ERROR" }}