Skip to main content
TRUE OVERLAYAI racing intelligence

Documentation

Use the platform with confidence.

A practical reference for reading an analysis, understanding freshness, managing an account, and consuming derived prediction records.

Reading an analysis

1. Check freshness

Start with the race source timestamp and completeness score.

2. Read probability

Treat fair odds as the reciprocal of an estimate, not a promised market truth.

3. Audit evidence

Open the cited runner fields and uncertainty before considering the market gap.

For the full generation and validation contract, see the methodology reference.

HTTP API

MethodPathPurpose
GET/api/races?date=&region=Normalized race index and freshness
POST/api/analysesAuthenticated custom analysis request
GET/api/analyses/{id}Immutable analysis and uncertainty record
GET/api/resultsPublic settled ledger with Brier score, matched market benchmark and calibration
GET/api/healthConfiguration and pipeline freshness without source records
GET / POST / DELETE/api/saved-racesManage paid watchlist, in-app alerts, and email opt-in
GET / PUT / DELETE/api/race-notesRead, save, or remove an account-private race research note
POST/api/research-receiptsCapture a server-validated immutable pre-race research receipt
GET / POST / DELETE/api/tracked-runnersManage the paid stable-ID runner tracker and entry/result-alert preferences
GET / POST / DELETE/api/tracked-connectionsManage the paid trainer/jockey tracker and entry-alert preferences
PATCH/api/notificationsMark one or all account alerts as read
GET/api/openapiMachine-readable OpenAPI 3.1 contract
POST/api/mcpRead-only Streamable HTTP MCP endpoint for AI agents
POST/api/waitlist/withdrawRemove a founding-access request using its private email token
POST/api/checkoutRace Day or subscription Checkout session
GET/api/v1/predictionsFilterable, cursor-based predictions with derived official outcomes
GET/api/v1/predictions/{id}Fetch one exact derived prediction referenced by a webhook
GET/api/v1/predictions/{id}/live-decisionReprice one locked forecast against the newest reliable market
GET/api/v1/races/{id}/connection-combinationsSyndicate exact-pair aggregate records and locked expectation diagnostics
GET/api/v1/races/{id}/market-tapeSyndicate derived multi-book consensus movement history
GET/api/v1/signalsRanked upcoming current-contract VALUE/WATCH signals
GET/api/v1/signal-scout/diagnosticsExplain saved-rule passes, rejections, and one-rule near misses
GET/api/v1/usageCurrent UTC-month successful API operations by resource
GET / POST / DELETE/api/v1/keysList, create, or revoke hashed Syndicate API keys
GET / POST / DELETE/api/v1/webhooksManage verified, signed Syndicate intelligence delivery
GET/api/v1/webhooks/{id}/deliveriesInspect cursor-paginated delivery status and retry metadata
POST/api/v1/webhooks/{id}/testSend a rate-limited signed test through the production sender
GET/api/exports/predictionsDerived CSV export for Syndicate accounts

Syndicate authentication

Send a generated API key as Authorization: Bearer to_…. Keys are shown once, stored only as SHA-256 hashes, and rejected immediately after revocation or entitlement loss. Commercial API traffic shares a 120-request rolling one-minute quota per Syndicate account.

Successful operations return X-Usage-Period, X-Usage-Resource, and X-Usage-Resource-Requests. GET /api/v1/usage returns the current UTC-month total and per-resource breakdown without counting itself. These counters are visibility only: no monthly cap, allowance, or overage charge is currently defined.

The Syndicate interface exposes derived platform records only. Exact licensed evidence facts are omitted, and the interface is not a substitute for a racing-data licence.

AI-agent connection

Connect an MCP-compatible agent to /api/mcp with the Streamable HTTP transport and the same Authorization: Bearer to_… header used by the REST API. After a key is created, the dashboard can copy a generic client configuration or an OpenAI Responses MCP tool object and perform a live authenticated protocol handshake before the one-time secret leaves the screen. The endpoint deliberately rejects browser-session-only authentication. It is stateless, read-only, uses the shared Syndicate abuse limit, and counts successful tool calls under mcp-tools.

list_current_signals returns the current decision order plus the five fixed trust-map matches for each race; get_signal_scout_diagnostics explains the account's saved-rule passes, overlapping rejections, and strictly rejected one-rule near misses; get_prediction_record returns one derived immutable forecast and official evaluation; get_live_decision reprices an upcoming locked forecast and returns its transition and trigger prices; get_market_tape returns a bounded filtered consensus history for a race or one requested runner; get_model_trust returns current-contract prospective evidence globally or for one race. Agents receive the same uncertainty, truncation, and evidence boundaries as the product. No tool places wagers, mutates customer data, or returns a reconstructable provider racecard or bookmaker-level history.

Derived pace-shape record

Each compatible prediction record includes a paceShape object derived from the locked runner-style labels. It reports coverage, credible-style count, limited/balanced/strong pressure, and conservative runner setup notes. The object is withheld below three supported styles, 60% field coverage, or two medium/high-confidence styles. It does not change forecast probabilities and contains no sectional, course, draw, going, historical pace-bias, or underlying evidence text.

Channel agreement

Paid forecast views and derived-prediction-v2 records expose each runner's market, ratings, and qualitative-AI component probabilities before weighting. Their deterministic range is tight at 5 probability points or less, mixed above 5 through 15, and wide above 15. The record preserves unavailable channels and tied highs or lows, plus race-level counts and the widest range. Paid members can persist any combination of those states in Signal Scout; Syndicate clients can apply the same channelAgreementState filter in REST or MCP. A selected state fails closed when the component ledger is unavailable. This is arithmetic sensitivity context, not calibrated uncertainty, and it does not identify which channel is correct.

Forecast compatibility

Current-contract forecasts lock normalized going, surface, distance, active-runner count, and a one-way active-field fingerprint. Race pages, the paid watchlist, the decision board, Signal Scout, briefing, and Syndicate signal feed fail closed when the stored field or conditions no longer match the current card. The old snapshot remains immutable and auditable, but current repricing and signal interpretation are withheld. Inside the final analysis window, a material mismatch bypasses the ordinary ten-minute refresh cooldown. Derived prediction records expose the locked context and fingerprint, not a raw provider racecard.

Syndicate quick start

curl "https://www.trueoverlay.com
/api/v1/predictions?region=GB&limit=50" \
  -H "Authorization: Bearer to_your_key"

Use from and to as ISO-8601 generated-at filters; version isolates a forecast contract. Pass the returned opaque nextCursor unchanged as the next request's cursor. The compound cursor remains stable when records share a generation timestamp.

Derived outcome records

Set settlement=settled or settlement=unsettled to isolate the desired lifecycle state. Every settled compatible record includes official winner identity, per-race multiclass Brier, a matched de-vigged-market Brier and skill comparison when available, the locked model-leader outcome, and derived VALUE/WATCH outcomes. Signal return uses one unit at the locked observed price with dead-heat division. lockedVsStartingPct gives a percentage comparison without returning the exact official starting price. These are platform evaluation records, not customer executions or a licensed raw-results feed. The CSV export supports the same settlement filter and includes a derived_outcome column.

Prospective model trust map

The public results ledger slices the current forecast contract across five fixed dimensions: region, surface, race type, field size, and locked input confidence. Each segment scores every valid forecast and compares model and de-vigged market Brier only on identical complete races. pairedBrierAdvantage is market error minus model error, so positive is better for the model. Its 95% t interval is calculated from per-race paired differences. The evidence state remains insufficient below 30 matched races, becomes directional only when the interval excludes zero, and is otherwise inconclusive. These predeclared cuts diagnose operating regimes; they are not optimized betting angles, independent validation, or a promise of future performance.

Live signal feed

Use /api/v1/signals?region=GB&signal=VALUE&pacePressure=HIGH&channelAgreementState=TIGHT&stableOnly=true&robustEdgeOnly=true&limit=50 to consume the same upcoming decision order shown to paid members. Optional filters can require limited, balanced, or strong diagnosed pressure, tight, mixed, or wide component-channel agreement, an unchanged rank, and/or positive expected value plus probability disagreement across every disclosed weight-stress mix. Each row includes pace, setup-role, and channel-agreement diagnostics; unavailable evidence is represented as null and cannot pass an explicit filter. Compatible rows also include derived probability, rank, EV, probability-edge ranges, and first-place frequency. These fields are setup and finite-grid sensitivity diagnostics, not statistical confidence. The endpoint returns only current-contract VALUE and WATCH rows backed by a timestamped source quote no more than 30 minutes old; accumulated history remains available from the cursor-based predictions endpoint.

Signed intelligence webhooks

Syndicate accounts can register up to three public HTTPS endpoints for signals.updated and prediction.settled. Setup sends an unsigned ownership challenge; the receiver must return its X-True-Overlay-Challenge value in the response header. The returned whsec_… signing secret is shown once. Normal deliveries include stable delivery and event headers, X-True-Overlay-Attempt, and X-True-Overlay-Signature: t=…,v1=…, where v1 is HMAC-SHA256 over timestamp.raw_body. Reject stale timestamps and deduplicate by delivery ID. Delivery is at least once and follows no redirects. Network failures, HTTP 408, 425, 429, and 5xx responses use the bounded five-attempt schedule; other 3xx and 4xx responses fail immediately. The dashboard and authenticated API can send a rate-limited signed endpoint.test event through the same production sender and inspect cursor-paginated status, attempt count, response code, error, and next retry without exposing response or event payload bodies. Each prediction.settled event carries one prediction ID and an exact /api/v1/predictions/{id} resource; signal events include the current board, originating prediction, and race market-tape resources. Consumers fetch those authenticated derived records rather than receiving licensed racecard data in the event.

Signal Scout rule contract

A saved rule can require signal class, region, minimum EV, minimum input confidence, a decimal-price range, a minimum number of accepted bookmaker quotes, a maximum post-outlier price spread, one or more field-relative pace-pressure regimes, one or more channel-agreement states, an unchanged rank, and/or a positive edge across the disclosed weight-stress grid. Leaving a pressure or agreement group clear accepts every available state; selecting a state fails closed when its derived evidence is withheld or unavailable. The identical rule is used for the member decision board, new-signal alerts, opted-in email and daily briefing, post-race current-rule replay, and prospectively settled evidence preview.

The paid dashboard also evaluates the saved rule against the current fresh VALUE/WATCH population. It reports pass and rejection counts, conditions that reject candidates, and up to five one-rule near misses. Impact counts may overlap because one runner can fail multiple conditions. Near misses remain excluded and the audit never adjusts or back-fits the saved rule.

Machine-readable contract

Import the OpenAPI 3.1 specification into compatible API clients, documentation generators, and internal tooling. It describes the REST resources and the outbound signed webhook request under the standard top-level webhooks object, including event bodies and required signature headers. The contract contains derived interfaces only.

Response discipline

Public list endpoints may return an empty array when no provider-backed records exist. Protected routes use explicit error codes including UNAUTHORIZED, FORBIDDEN, ANALYSIS_QUOTA_EXCEEDED, and SERVICE_NOT_CONFIGURED.

Alert delivery

Paid users choose odds-movement, decision, and racecard-change alerts separately for each saved race, then opt into email as an independent delivery channel. Decision alerts cover forecast revisions and live price-driven threshold crossings. Revision alerts compare consecutive prospectively stored forecasts: the first qualified forecast is new, then only a new, strengthened, weakened, or lost VALUE/WATCH state creates an alert. An enabled Signal Scout also monitors every eligible race globally without requiring it to be saved. For both revision and live crossings, the exact saved rule checks the prior and current qualified states so a previous match that disappears can still be reported. Live monitoring keeps the forecast probability immutable, stores the first reliable state as a silent baseline, and then alerts only when a later reliable whole-field observation enters WATCH, enters VALUE, falls from VALUE to WATCH, or falls below WATCH. First-seen, unchanged, incompatible, and unreliable-market observations stay silent. Racecard monitoring compares successive stored provider cards and groups confirmed going-to-going transitions plus newly declared non-runners into one deduplicated update; it stays silent on first import, first-known going, and already-known non-runners. Material price movements are coalesced into fifteen-minute windows. Every decision notification is idempotent for its forecast, source card, and customer. Email is retried at most three times, rechecks the current preference and paid entitlement, uses a notification-scoped idempotency key, and never blocks race ingestion.

Daily intelligence briefing

The paid dashboard consolidates matching Signal Scout selections, tracked declarations, and saved cards in one next-24-hours view without relaxing any freshness or evidence rule. A separate trust-context panel matches up to ten briefing races against the fixed prospective region, surface, race-type, field-size, and locked-confidence evidence cuts. It explains sample and comparison state but never creates, suppresses, or reorders a signal. Daily email is a separate Signal Scout opt-in with a supported IANA time zone and local delivery hour. A dedicated fifteen-minute scheduler claims one durable user/local-date record under a recoverable lease, persists the first non-empty email payload for retry consistency, and uses a recipient-scoped idempotency key. Empty briefings stay quiet.

Private research notebook

Overlay and Syndicate members can keep one private note of up to 2,000 characters beside each racecard. Notes stay linked to the card after the result, appear in the member dashboard, are excluded from AI prompts, and are included in account export and deletion controls.

Prospective research receipts

On a paid unsettled racecard, a member can capture an immutable shortlist, monitor, or pass receipt for one runner and forecast revision. The server rejects client-supplied prices and recomputes the current whole-field market, forecast compatibility, quote freshness, and scheduled off-time before storing the model probability, fair price, current accepted quote, signal, EV, data confidence, forecast context, and optional rationale. One member can capture each runner once per forecast revision. A confirmed going or non-runner change creates a deduplicated in-app warning for active members with receipts on the card. Official result ingestion atomically stores the race result, settles forecasts, and creates one in-app receipt outcome per member and provider result revision. The dashboard evaluates a disclosed window of up to 1,000 recent receipts and reports win rate, average locked probability, calibration gap, binary Brier score, and quote-versus-SP discipline overall and by intent. These are descriptive personal-process diagnostics: receipts are self-selected, runners within a race can be correlated, and captured quotes do not prove execution, profit, ROI, closing-line efficiency, or independent model skill. Receipt lifecycle notices are in-app only because capture does not imply email consent. Receipts are covered by account export and deletion.

Runner tracker

Overlay and Syndicate members can follow up to 100 horses using the provider's stable horse identifier. Each new stored declaration creates at most one in-app entry alert per horse and race. A separate result-intelligence preference joins the official finish and starting price to the latest current-contract prospectively locked forecast, or states explicitly that compatible forecast context is unavailable. Entry and result email delivery have independent opt-ins and recheck the current tracker preference and paid entitlement before sending. The dashboard lists upcoming stored entries. Trackers and delivery preferences are private account data, excluded from prediction prompts, and covered by export and deletion controls.

Runner intelligence profiles

Each paid runner profile joins the stable horse identity to up to 50 appearances in True Overlay's stored coverage, official outcomes, source-rating movement, future entries, exact-match course/surface/going context, and the latest compatible locked forecast for each race. Runner-level Brier is shown only as a descriptive binary diagnostic with its settled sample count. The profile never fills missing history, mixes forecast contracts, or presents context records as causal evidence.

Trainer and jockey intelligence

Paid racecards link provider-stable trainer and jockey identities to profiles built from up to 200 locally stored Standard-card appearances. Each profile combines upcoming entries, official stored win and top-three records, rolling 30-day form, exact-label course/race-type/surface splits, and expectation diagnostics from current-contract locked forecasts. Members can separately track up to 100 connections with deduplicated in-app entry alerts and optional email. Coverage is not a complete career history, splits are not adjusted for opportunity or field strength, and observed-versus-expected rates and Brier scores can be unstable at small samples.

Trainer–jockey combinations

Paid racecards compare every declared stable trainer–jockey pairing against its exact locally stored identity match. The panel shows official starts, wins and top-three finishes, the latest 30 days, current-course and matching race-type/surface records, and prospectively locked mean win probability versus observed win rate and binary Brier. Historical cards use their race off-time as an explicit evidence cutoff, and samples below ten official starts are labelled thin. The evidence is unadjusted for horse quality, opportunity, field strength, or market selection and never enters the published forecast or AI prompt.

Watchlist intelligence

The paid dashboard recalculates each saved race against the newest accepted price snapshots and ranks current VALUE and WATCH states first. The forecast probability remains the prospectively locked model output; the comparison market must have fresh timestamps, at least two accepted books per runner, and complete active-field coverage. If those conditions fail, the card says the market is not reliable instead of presenting an edge.

Live decision monitor

On an unsettled paid racecard, the live monitor compares the locked signal with a fresh recalculation using the same stored model probabilities and the newest accepted whole-field market. Price movement is the percentage change from the locked observed decimal price; EV movement is the percentage-point change in expected value. WATCH and VALUE target prices express only the 3% and 10% EV thresholds and do not override the confidence or probability-disagreement requirements. If the active field changes, the old forecast is treated as incompatible rather than silently renormalized.

Syndicate clients can retrieve the same derived state at /api/v1/predictions/{id}/live-decision or with MCP get_live_decision. Only an upcoming, unsettled current-contract shared forecast is accepted. The response exposes no odds history or raw racecard, and current prices remain observations rather than execution guarantees.

Recorded market tape

Paid racecards reconstruct up to 72 hours of append-only changed quotes into a derived median-book consensus path. Every point reuses the production forecast's source-timestamp freshness, outlier, spread, and minimum two-book gates. The table reports earliest and latest reliable consensus, recorded range, net shortening or drifting, accepted-book depth, and a bounded path of at most 48 states per runner. For a compatible current forecast, it also compares the locked probability and locked consensus only with reliable changes captured after the forecast, reporting whether the arithmetic estimated-value gap expanded, eroded, stayed steady, or recorded no later move. Queries inspect at most 10,000 newest rows and disclose truncation. Syndicate customers receive the same bookmaker-free record at /api/v1/races/{id}/market-tape. It is descriptive arithmetic evidence, not exchange volume, execution, causal explanation, or a new prediction input.

Founding-access consent

While paid checkout is gated, a request records the normalized email, intended plan, and consent time. Confirmation delivery runs after the request response and is retried by the scheduled sync at most three times. The email contains a private removal link; viewing that page is non-destructive and deletion requires an explicit confirmation.