API ReferenceMatched Markets
Cross-venue event matches from stored event clusters. Router only.
const url = 'https://data.predictefy.com/api/router/fetchEventMatches';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/router/fetchEventMatches \ --header 'Authorization: Bearer <token>'EVENT-grain discovery over stored event_clusters output. In browse mode (no eventId), returns cross-venue event pairs from a cluster page with sourceEvent and event. In lookup mode (eventId), returns co-member events for the canonical "{venue}:{eventId}" anchor. Scores are similarity, never confidence; reasoning is null because the event matcher does not emit per-match rationale. There are no prices at event grain and nothing here is labeled arbitrage or executable. This route is router-only; non-router exchanges answer 400.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Must be router for this cross-venue operation. Market anchors must use the canonical venue:marketId form; event anchors must use the canonical venue:eventId form.
Query Parameters
Section titled “Query Parameters”Canonical "{venue}:{eventId}" anchor. Presence switches to lookup mode.
Minimum uncalibrated similarity. minConfidence is rejected NOT_SUPPORTED.
Offsets above the maximum are rejected; use cursor pagination for deep walks.
Responses
Section titled “Responses”A page of stored event matches.
object
object
object
Venue-native event id.
Canonical "{venue}:{eventId}" key.
Present in browse mode only; absent in lookup mode.
object
Venue-native event id.
Canonical "{venue}:{eventId}" key.
Uncalibrated similarity score, never confidence.
The event matcher does not emit rationale yet.
Stored event-cluster computed_at; never live.
object
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.
Examplegenerated
{ "success": true, "data": [ { "event": { "venue": "example", "eventId": "example", "eventPk": "example", "title": "example", "marketCount": 1 }, "sourceEvent": { "venue": "example", "eventId": "example", "eventPk": "example", "title": "example", "marketCount": 1 }, "clusterId": "example", "similarity": 1, "reasoning": "example", "asOf": "2026-04-15T12:00:00Z" } ], "meta": { "asOf": "2026-04-15T12:00:00Z", "provenance": { "venues": [ "example" ] } }, "page": { "limit": 1, "offset": 1, "total": 1, "hasMore": true, "nextCursor": "example" }}VALIDATION_ERROR / NOT_SUPPORTED (non-router, slug, relations, minConfidence, venue, venues, pairVenues)
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 — platform lane (READS_ENABLE_AUTH)
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 — endpoint-weighted 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 — API key lacks the route's required scope (RBAC v1)
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 when READS_ENABLE_EVENT_MATCHES is off
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 — per-key rps limit
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" }}CATALOG_UNAVAILABLE
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" }}