Live executable-arbitrage assessment of discrepancy clusters. Router only.
const url = 'https://data.predictefy.com/api/polymarket/fetchArbitrage?contracts=100&executableOnly=false&limit=5';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/api/polymarket/fetchArbitrage?contracts=100&executableOnly=false&limit=5' \ --header 'Authorization: Bearer <token>'Prices a page of discrepancy clusters against LIVE order books at the requested contracts size: buy YES on the cheap venue’s real asks + buy NO on the dear venue’s real asks (a locked $1/contract payout at resolution). A row is labeled "arbitrage" ONLY when EVERY gate passes — live non-synthetic asks on both legs, open market status, full depth at the requested size, a VERIFIED per-venue fee model (fees are per-level walked; settlement commissions charged at the worst-case winning leg), the resolution-equivalence gate (an affirmative persisted verdict for the current rule-content hashes plus threshold/stage/settlement-source vetoes), and a positive net edge after all costs. Every other row is served as "indicative price discrepancy" with per-leg machine-readable reasons (unverified_fees, market_not_open — covering stale status, inactive flag, and passed close time —, synthetic_book, book_unavailable, no_asks, insufficient_depth) and pair-level reasons (threshold/stage/source conflicts, close_time_mismatch, resolution_equivalence_unverified, same_venue, *_leg_not_executable, no_positive_edge) — the WHY is always on the record. The fingerprint conflict vetoes AND the close-time bar are re-applied live at claim time. Venues without a published fee schedule carry a note explaining the research state. page is CLUSTER-grain and hard-capped small (each cluster costs at most two live venue book reads); clusters with no served cross-venue pair are omitted from data — the same cluster-grain caveat as the match verbs.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”One of the 17 product venues, or router for the all-venues union. SX Bet serves catalog reads, real CLOB order books, the public trades tape, tape-derived candles, Trader Intelligence, and public account resources. It has no server execution lane. Its separate client-side SDK trading lane is live as of 2026-07-27. The SX Bet trading wallet must have a registered sx.bet account and betting enabled once per token per network. There is no venue-official history claim. pascal, xo and pred all serve catalog reads and real CLOB order books, plus a public trades tape on pascal only — xo and pred answer 501 NOT_SUPPORTED for fetchTrades. XO’s is a venue property rather than a gap: its trade endpoints are caller-scoped, so no public XO tape exists to serve. Their execution state differs per venue and is no longer uniform. Pascal is ARMED in production for build, submit, and signed cancel permits (armed 2026-08-12; fleet-verified 2026-08-15). XO advertises exactly its registry row — cancel plus the client-credentialed status refresh, with hosted build and submit disarmed. PRED is production-DARKED (2026-08-13) pending the venue’s key model: PRED_EXCHANGE_ADDRESSES is empty, which unregisters the entire lane, so every PRED execution route including build answers 404 VENUE_NOT_SUPPORTED. None of the three has an account or venue-official history lane. GET /v1/exec/venues remains the authoritative live list; this description is not a claim about one deployment’s runtime gates. PredictStreet serves keyless catalog/detail reads and real two-sided CLOB books. Its ADI Chain execution lane is armed for build and submit; it has no server cancel or hosted settlement lane. Predict Street Limited states it operates under Gibraltar licence 167, and FIFA names it the official prediction-market partner of the FIFA World Cup 2026. Venue eligibility and jurisdiction restrictions remain an operator/compliance responsibility. Pascal’s restricted-jurisdiction and API/data clauses are under owner review. PRED restricts the US, UK, France, Ontario, Singapore, Poland, Thailand, and Taiwan and prohibits location masking; pascal is US-restricted at the venue, and XO read access is partner-provided.
Query Parameters
Section titled “Query Parameters”Position size to assess; depth and fees are judged AT this size.
True = serve ONLY rows that earned the “arbitrage” label.
Clusters assessed per page (fan-out bound: ≤ 2 live book reads each).
Responses
Section titled “Responses”Live executable-arbitrage assessments (honestly labeled per row).
object
A discrepancy cluster’s best cross-venue pair priced against LIVE books. label is “arbitrage” IFF executable — every gate passed at the requested size; otherwise “indicative price discrepancy” with the failing gates in reasons (hard rule 2: the claim is earned, never assumed).
object
Match score — similarity, never “confidence”.
The assessed size; depth/fees judged AT this size.
object
One taker-BUY leg of the assessed pair. Pricing fields are null whenever the leg cannot honestly be priced AS THE CLAIMED TRADE (missing/synthetic/thin book, or no verified fee model) — reasons carries the machine-readable WHY.
object
Composite “{venue}:{marketId}”.
Research note for unverified-fee venues (why no model exists).
VWAP of the full requested fill, $/contract.
Walked cost of the full requested fill, $.
VERIFIED taker fee for the fill, $ (0 for settlement-commission venues).
Which fee rate applied (general, sports, conservative-max, …).
Contracts available on the walked asks (≤ requested).
One taker-BUY leg of the assessed pair. Pricing fields are null whenever the leg cannot honestly be priced AS THE CLAIMED TRADE (missing/synthetic/thin book, or no verified fee model) — reasons carries the machine-readable WHY.
object
Composite “{venue}:{marketId}”.
Research note for unverified-fee venues (why no model exists).
VWAP of the full requested fill, $/contract.
Walked cost of the full requested fill, $.
VERIFIED taker fee for the fill, $ (0 for settlement-commission venues).
Which fee rate applied (general, sports, conservative-max, …).
Contracts available on the walked asks (≤ requested).
Whether a high-confidence affirmative persisted verdict matches both legs’ current resolution-rule content hashes.
Cheap fingerprint conflict veto (compatible ≠ verified equivalent).
object
Worst-case settlement commission across legs (only one leg wins), $.
Legs + fees + settlement worst case, $; null when unknowable.
The locked payout: contracts × $1.
Payout − totalCost, $; null when unknowable.
Pair-level failing gates (empty when executable).
EARLIEST leg-book freshness; null when either live book is missing.
Live: true + the assessed contracts size; totalUnavailable explains a null page.total.
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": [ { "legs": { "buyYes": { "side": "yes", "reasons": [ "unverified_fees" ] }, "buyNo": { "side": "yes", "reasons": [ "unverified_fees" ] } }, "resolutionEquivalence": "verified", "resolution": { "reason": "" }, "label": "arbitrage" } ]}Enveloped 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" }}Enveloped 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" }}Enveloped 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" }}Enveloped 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" }}Enveloped 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" }}Enveloped 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" }}Enveloped 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" }}