Reference
What each DeepChamp for Agents product line returns
A field-level reference generated from the product catalog and the API schema: what each line returns, what you send, what is live today and what is not. No odds, prices or results fields exist in any line.
By DeepChamp research team · Updated
Short answer
DeepChamp for Agents has 15 product lines that can go live and one locked prediction-market line: a free daily slate with matchup context, ranked picks and edge scores, research briefs, ranked news, daily intel, injury and lineup intel, live game intelligence, derived market signals, a bring-your-own-odds evaluator, an archive, the ask_jev research agent and push delivery. Only the free slate line is live today. Every line returns research intelligence in one fixed envelope and none returns odds, prices or results.
A real response
Captured from production on 2026-10-31 at 01:07Z UTC from GET /api/agent/v1/slate/today?sport=nba, with the list of games trimmed to the first of ten. It shows schedule facts and our computed rest context, the compliance block, freshness and cache in meta, and billing status free. Values change daily.
{
"data": {
"sport": "nba",
"date": "2026-10-30",
"timezone": "America/New_York",
"relation": "today",
"game_count": 10,
"games_returned": 10,
"truncated": false,
"schedule": {
"first_start_et": "7:00 PM ET",
"last_start_et": "10:00 PM ET",
"final_count": 0,
"back_to_back_teams": [],
"short_rest_games": 3,
"rest_gap_games": 1
},
"editors_read": null,
"games": [
{
"game_id": "gm_a18578774609cdbd",
"slug": "charlotte-hornets-at-washington-wizards",
"away": "Charlotte Hornets",
"home": "Washington Wizards",
"starts_at": "2026-10-30T23:00:00Z",
"start_et": "7:00 PM ET",
"start_pt": "4:00 PM PT",
"status": "scheduled",
"final_score": null,
"rest": {
"away": {
"rest_days": 1,
"back_to_back": false,
"games_in_four_days": 2,
"days_since_last": 2
},
"home": {
"rest_days": 1,
"back_to_back": false,
"games_in_four_days": 2,
"days_since_last": 2
}
},
"context_flags": [],
"matchup_url": "https://deepchampai.com/matchups/nba/2026-10-30/charlotte-hornets-at-washington-wizards"
}
]
},
"compliance": {
"age_gate": 21,
"notice": "Research and information, not betting advice. No outcomes are guaranteed. Adults 21+ only, where legal. AI-generated analysis can be wrong; use your own judgment.",
"helpline": "1-800-MY-RESET",
"helpline_url": "https://www.1800myreset.org",
"ai_generated": true,
"terms_url": "https://deepchampai.com/terms/api",
"privacy_url": "https://deepchampai.com/privacy"
},
"meta": {
"request_id": "req_398766b1f2a76a699f30",
"as_of": "2026-10-31T01:07:40.609Z",
"model_version": "dc-intel-1.0.0",
"data_freshness_seconds": 52,
"cache": "miss",
"day": "2026-10-30",
"stale": false,
"canonical_url": "https://deepchampai.com/slate/nba/2026-10-30",
"attribution": "Schedule context computed by DeepChamp AI",
"continue_url": "https://deepchampai.com/open-app?target=betgpt&source=agent_rest&utm_source=agent&utm_medium=rest&utm_campaign=get_daily_slate"
},
"billing": {
"status": "free",
"units": 0,
"price_micros": 0,
"payer": "none"
}
}The response envelope
Every response, free or paid, is one JSON object with four members. Nothing else is ever added to it, and the schema forbids extra fields, so an agent can validate a response strictly.
| Member | What it holds | Fields |
|---|---|---|
| data | The product payload described in the sections below. | Differs by product. |
| compliance | The 21+ notice, the problem-gambling helpline, an AI-generated flag and links to the terms and privacy policy. Relay it to your users. | age_gate, ai_generated, helpline, helpline_url, notice, privacy_url, terms_url |
| meta | Request id, an as-of time, the model version and a freshness figure so an agent can refuse stale input. | as_of, cache, data_freshness_seconds, day, feedback, model_quality, model_version, request_id, stale |
| billing | Whether the call was free or charged, the units and the price in micro-dollars. | balance_micros, currency, payer, price_micros, status, units |
Sport codes used in every payload: nfl, ncaaf, nba, ncaab, wnba, mlb, nhl, epl, laliga, seriea, bundesliga, ligue1, mls, ucl, ufc. Which of them have data on a given day depends on the season.
Daily slate (free)
Every game on the board for a sport and day, with start times and plain-language rest and schedule context. Free, cached, no signup. Status: Live.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_daily_slate | GET /api/agent/v1/slate/today | sport, date (optional) | Games for a sport and Eastern date with start times, status, and plain-language rest and schedule context. |
| get_matchup_context | GET /api/agent/v1/matchup/{sport}/{date}/{slug} | sport, date and game slug in the path | Schedule context for one game: each team's last result, rest, and next game. Facts and our computed context only. |
| request_capability | POST /api/agent/v1/request-capability | category, sport, market, format and urgency (enumerated), optional short note | Tell us what you need that is missing: a category, sport, market, format and urgency, with an optional short plain-text note. Enumerated fields only. Free, never charged, no signup. |
| rate_response | POST /api/agent/v1/rate-response | request id, rating, reason code (no free text) | Say whether a response was useful, with a reason code, tied to its request id. No free text. Free, never charged, no signup. |
Why the output is ours: Our schedule-context computation and writing; same fields as the public /slate pages.
Picks and edge scores
Ranked signals with side, graded line, edge score 0 to 100, model probability, confidence tier, rationale and factors, each with signal_id, model_version and issued_at. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_edge_score | GET /api/agent/v1/edge-score | game_id (optional), pick_id (optional), market_type (optional) | game_edge_score (integer); game_id (string); items (list of PickSignal); matchup (Matchup); sport (one of 15 codes); starts_at (string) |
| get_ranked_picks | GET /api/agent/v1/ranked-picks | sport, day (optional), limit (optional) | count (integer); day (string); items (list of PickSignal); sport (one of 15 codes) |
Why the output is ours: Our model's probability, score, rank and wording; the graded line is part of our signal, not a market price.
Research briefs
Matchup briefs, prop briefs and research cards written from our signals, with code-computed factors. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_matchup_brief | GET /api/agent/v1/briefs/matchup | game_id | brief (string); game_id (string); generation (one of model, template); headline (string); key_points (list of string); matchup (Matchup); signals (list of PickSignal); sport (one of 15 codes); starts_at (string) |
| get_prop_brief | GET /api/agent/v1/briefs/prop | pick_id | brief (string); game_id (string); generation (one of model, template); headline (string); key_points (list of string); matchup (Matchup); pick_id (string); signals (list of PickSignal); sport (one of 15 codes); starts_at (string); subject (string) |
| get_research_card | GET /api/agent/v1/research-card | pick_id | game_id (string); headline (string); key_points (list of string); matchup (Matchup); pick_id (string); signal (PickSignal); sport (one of 15 codes); starts_at (string) |
Why the output is ours: Our analysis built only from allowlisted inputs; every number is traceable to a signal.
Ranked news
News we sort, dedupe, rank and entity-link: short facts-only summaries with attribution and a link, impact scores, clusters, search and by-game lookups. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_ranked_news | GET /api/agent/v1/news | sport (optional), limit (optional), min_impact (optional), changed_since (optional) | count (integer); cursor (string); has_more (boolean); items (list of NewsStory); sport (one of 15 codes) |
| get_game_news | GET /api/agent/v1/news/by-game | game_id | count (integer); game_id (string); items (list of NewsStory) |
| search_news | GET /api/agent/v1/news/search | q, sport (optional), limit (optional) | count (integer); items (list of NewsStory); query (string) |
Why the output is ours: Our title, summary, rank, impact score and entity links; attribution and link; no article text.
Daily intel
Our daily digest of the stories that matter for the day, with changed-since cursors. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_daily_intel | GET /api/agent/v1/intel/daily | sport (optional), day (optional), changed_since (optional) | count (integer); cursor (string); day (string); has_more (boolean); items (list of IntelItem); sport (one of 15 codes) |
Why the output is ours: Our selection and wording.
Injury and lineup intel
Injury and lineup items in our words, with a status word and why it matters. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_injury_lineup_intel | GET /api/agent/v1/intel/injuries-lineups | sport, day (optional), changed_since (optional) | count (integer); cursor (string); day (string); has_more (boolean); items (list of IntelItem); sport (one of 15 codes) |
Why the output is ours: Our wording; a status word.
Live game intelligence
Derived live flags and what changed between polls. No scoreboard and no play-by-play. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_live_game_intel | GET /api/agent/v1/live/intel | sport (optional), since (optional) | count (integer); cursor (string); items (list of LiveFlag); pulled (list of string); since (string); sport (one of 15 codes) |
Why the output is ours: Our live flags and probability shifts, derived only.
Market intelligence (derived)
Derived gap buckets and movement direction between our estimate and the market. Never prices, midpoints or volumes. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_market_signals | GET /api/agent/v1/markets/signals | sport, day (optional) | count (integer); day (string); items (list of MarketSignal); sport (one of 15 codes) |
Why the output is ours: Buckets and directions we derive; no market values are returned.
Prediction-market intelligence
Derived signals about prediction markets. Coming soon: ships only after data licences are confirmed in writing. Status: Locked off.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_prediction_market_signals | GET /api/agent/v1/prediction-markets/signals | sport, day (optional) | count (integer); day (string); items (list of MarketSignal); sport (one of 15 codes) |
Why the output is ours: Not available. Hard-locked until licences exist.
Bring your own odds: evaluate_market
Send your own price from your own feed; get our probability for that side and line, de-vigged fair value, edge, expected value per unit and Kelly sizing as plain arithmetic. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| evaluate_market | POST /api/agent/v1/evaluate-market | bankroll (optional), game_id (optional), kelly_multiplier (optional), line (optional), market_type (optional), opposite_price (optional), pick_id (optional), price, side (optional), subject (optional) | calculation (Calculation); confidence_tier (one of high, medium, low); disclaimers (list of string); model_available (boolean); rationale (string); signal (PickSignal); unavailable_reason (one of no_signal, line_mismatch, side_mismatch, not_enough_input) |
| fair_value | POST /api/agent/v1/tools/fair-value | markets, method (optional) | disclaimers (list of string); results (list of FairMarketResult) |
| best_price | POST /api/agent/v1/tools/best-price | quotes | disclaimers (list of string); results (list of OutcomeBest) |
| kelly_math | POST /api/agent/v1/tools/kelly-math | bankroll (optional), kelly_multiplier (optional), price, probability | calculation (KellyCalculation); disclaimers (list of string) |
| hedge_calculator | POST /api/agent/v1/tools/hedge | opposite_price, price, stake, target_net (optional) | calculation (HedgeCalculation); disclaimers (list of string) |
| jev_rank | POST /api/agent/v1/tools/jev-rank | candidates | disclaimers (list of string); matched_count (integer); results (list of RankedCandidate) |
| match_event | GET /api/agent/v1/match-event | text, date (optional), sport (optional) | candidates (list of EventCandidate); count (integer) |
Why the output is ours: Pure arithmetic on the caller's own input plus our signal. We never host or return sportsbook odds.
Signal and news archive
Our own issued signals and stories as issued, by day, with hash-verifiable copies. No outcomes. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_signal_archive | GET /api/agent/v1/archive/signals | sport, date_from, date_to, limit (optional), cursor (optional) | count (integer); date_from (string); date_to (string); items (list of PickSignal); next_cursor (string); sport (one of 15 codes) |
| get_news_archive | GET /api/agent/v1/archive/news | sport, date_from, date_to, limit (optional), cursor (optional) | count (integer); date_from (string); date_to (string); items (list of NewsStory); next_cursor (string); sport (one of 15 codes) |
Why the output is ours: Our own issued output, unchanged.
Ask Jev (agent to agent)
Ask DeepChamp's research agent a natural-language question; get an answer and structured evidence cards, streamed or whole. Refuses requests for raw data, prices or performance claims. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| ask_jev | POST /api/agent/v1/ask | game_id (optional), max_cards (optional), question, session_id (optional), sport (optional) | answer_text (string); cost_units (integer); evidence_cards (list of PickSignal); follow_ups (list of string); partial (boolean); refusal (one of out_of_scope, unsafe_output, no_evidence, timeout) |
Why the output is ours: Jev answers only from our allowlisted tools; evidence cards are built by code from signal ids.
Push: subscribe
Signed webhooks or a bounded event stream for new ranked news, live flags and line-move signals. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| subscribe | POST /api/agent/v1/subscriptions | daily_delivery_cap (optional), events, min_impact (optional), sport (optional), url | Signed webhook or event stream for new ranked news, live flags and market signals. |
| list_subscriptions | GET /api/agent/v1/subscriptions | none | Your webhook subscriptions. Needs an enterprise key; free. |
Why the output is ours: Same filtered outputs as the polling lines, delivered when they change.
Expected-value scan (your odds)
Batch edge and expected value over up to 100 selections whose prices you supply from your own feed. Stake sizing appears only for accounts that attested a human decides before any stake. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| ev_scan | POST /api/agent/v1/tools/ev-scan | bankroll (optional), fair_value_method (optional), kelly_multiplier (optional), selections | disclaimers (list of string); fair_value_method (one of proportional, power); matched_count (integer); results (list of SelectionResult) |
Why the output is ours: Arithmetic on the caller's own prices plus our signal where we have one. We never host, return or store sportsbook odds.
Your account and service
Your usage and balance with an enterprise key, our own model-evaluation numbers (calibration and closing-line value, with no performance claims) and a free feedback channel. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| get_usage | GET /api/agent/v1/usage | none | balance_micros (integer); daily_spend_cap_micros (integer); daily_spend_remaining_micros (integer); day (string); requests (integer); rpm (integer); spent_micros (integer); tier (string) |
| get_evaluation | GET /api/agent/v1/evaluation | none | as_of_day (string); brier (number); calibration (list of EvaluationBin); clv_ci95 (list of number); clv_mean (number); min_n_for_claim (integer); model_version (string); n_graded (integer); n_issued (integer); note (string); status (one of unproven, measured) |
| send_feedback | POST /api/agent/v1/feedback | comment (optional), rating, request_id | received (true) |
Why the output is ours: Our own account data and our own evaluation of our own signals; nothing from a third party.
Calculators (your numbers)
Kelly sizing, no-vig fair value, hedge, parlay, line-shop ranking and batch expected value, computed on the prices and probabilities you send. Nothing is stored and no outside data is involved. Status: Not live yet.
| Tool | Endpoint | Inputs | What data holds |
|---|---|---|---|
| calc_kelly | POST /api/agent/v1/calc/kelly | none | Sizing fraction for your price and your probability, capped at 5 percent of bankroll. Enterprise keys of accounts that attested a human decides before any stake only. |
| calc_fair_value | POST /api/agent/v1/calc/fair-value | none | No-margin fair probability from one or two of your own prices. |
| calc_hedge | POST /api/agent/v1/calc/hedge | none | The stake on the other side that equalizes the result, from your own prices. Enterprise keys of accounts that attested a human decides before any stake only. |
| calc_parlay | POST /api/agent/v1/calc/parlay | none | Combined price, and combined probability if you supply yours, for two to twenty legs. |
| calc_best_price | POST /api/agent/v1/calc/best-price | none | Rank up to 50 prices you supply for the same outcome by payout. |
| calc_ev_scan | POST /api/agent/v1/calc/ev-scan | none | Expected value per unit for up to 50 price and probability pairs you supply. |
Why the output is ours: Pure arithmetic on the caller's own input. No third-party data is read or returned and nothing is retained.
Shared objects inside data
Named objects that appear inside the product payloads above, with their fields. A signal is the central object: it carries an id, a content hash, a model version and an issue time so a copy can be verified later, and it carries a probability estimate and an edge score, never a price or an outcome.
| Object | Fields |
|---|---|
| Calculation | caller_implied_probability (number); edge_points (number); expected_value_per_unit (number); model_probability (number); no_vig_fair_american (integer); no_vig_fair_decimal (number); no_vig_fair_probability (number); reference (one of no_vig_fair, caller_implied); sizing (Sizing) |
| EntityLink | game_id (string); kind (one of team, player, game); name (string) |
| EvaluationBin | bin_hi (number); bin_lo (number); n (integer); observed_rate (number); predicted_mean (number) |
| EventCandidate | confidence (number); game_id (string); matchup (Matchup); sport (one of 15 codes); starts_at (string) |
| Factor | key (one of value_signal, jev_review, injury_context, market_depth, timing, board_role); label (string); value (one of 18 codes) |
| FairMarketResult | market_id (string); method (one of proportional, power); outcomes (list of FairOutcomeResult); overround_percent (number) |
| FairOutcomeResult | caller_implied_probability (number); fair_american (integer); fair_decimal (number); fair_probability (number); outcome (string) |
| GameLine | game_id (string); matchup (Matchup); signal_count (integer); starts_at (string); top_edge_score (integer) |
| HedgeCalculation | hedge_stake (number); meets_target (boolean); mode (one of equal_net, target_net); net_if_hedge_wins (number); net_if_original_wins (number); payout_if_hedge_wins (number); payout_if_original_wins (number); total_outlay (number) |
| IntelItem | body (string); change (one of new, updated); entities (list of EntityLink); first_seen_at (string); game_id (string); headline (string); impact_score (integer); item_id (string); kind (one of daily, injury, lineup); published_at (string); sport (one of 15 codes); status (one of out, doubtful, questionable, probable, available, unknown); updated_at (string) |
| KellyCalculation | caller_implied_probability (number); edge_points (number); expected_value_per_unit (number); sizing (Sizing); supplied_probability (number) |
| LiveFlag | change (one of new, changed, unchanged); flag_id (string); game_id (string); matchup (Matchup); note (string); probability_shift (one of up, down, flat); shift_points (number); signal (PickSignal); sport (one of 15 codes); status (live); updated_at (string) |
| MarketCloseReference | basis (scheduled_start); reference_time (string) |
| MarketSignal | commentary (string); game_id (string); gap_bucket (one of favors_view, near_fair, against_view); issued_at (string); matchup (Matchup); model_version (string); movement (one of toward_view, away_from_view, flat, unknown); pick_id (string); signal_id (string); sport (one of 15 codes); starts_at (string) |
| Matchup | away (string); home (string) |
| NewsSource | name (string); url (string) |
| NewsStory | change (one of new, updated); cluster_id (string); cluster_size (integer); entities (list of EntityLink); first_seen_at (string); freshness (one of breaking, fresh, recent, aging); freshness_minutes (integer); impact_score (integer); kind (one of 11 codes); published_at (string); rank_score (integer); source (NewsSource); sport (one of 15 codes); story_id (string); summary (string); tags (list of one of 11 codes); title (string); updated_at (string); why_it_matters (string) |
| OutcomeBest | best_american (integer); best_decimal (number); best_quote_id (string); outcome (string); quote_count (integer); spread_decimal (number); spread_probability_points (number); worst_american (integer); worst_decimal (number); worst_quote_id (string) |
| PickSignal | confidence_tier (one of high, medium, low); content_hash (string); edge_score (integer); factors (list of Factor); game_id (string); issued_at (string); line (number); market_close_reference (MarketCloseReference); market_label (string); market_type (one of moneyline, spread, total, team_total, player_prop, period_line, other); matchup (Matchup); model_probability (number); model_version (string); pick_id (string); probability_basis (fair_value_estimate); rank (integer); rank_basis (one of dc_edge_v1, jev_board); rationale (string); side (string); signal_id (string); sport (one of 15 codes); starts_at (string); subject (string) |
| RankedCandidate | candidate_id (string); confidence_tier (one of high, medium, low); edge_score (integer); expected_value_per_unit (number); matched (boolean); model_probability (number); pick_id (string); rank (integer); reason (one of no_signal, line_mismatch, side_mismatch) |
| SelectionResult | calculation (Calculation); confidence_tier (one of high, medium, low); matched (boolean); pick_id (string); rank (integer); reason (one of no_signal, line_mismatch, side_mismatch); selection_id (string) |
| Sizing | applied_fraction (number); capped (boolean); full_kelly_fraction (number); note (string); stake_amount (number) |
What no line ever returns
- Odds, prices, price comparisons, line-movement histories or bookmaker names.
- Box scores, stat lines, play-by-play or any raw third-party data.
- A win rate, record, return, profit, units or any claim about results.
- Logos, photographs or image URLs, and article text.
- Anything about prediction-market venues; that line is locked off.
Common questions
Which DeepChamp for Agents product lines are live?
Only the free daily slate line, with its two tools get_daily_slate and get_matchup_context, is live today. Ranked picks, research briefs, news, intel, live intelligence, market signals, the evaluator, the archive, ask_jev and push are specified in the published contract and stay off in production until the licence, legal and payment checks they depend on clear.
What fields does a DeepChamp signal contain?
A signal contains an id, a content hash, the game and sport, the matchup, the start time, the market type and side, the line our signal is graded at, an edge score from 0 to 100, a probability estimate, a confidence tier, a short rationale, a list of factors, a model version and an issue time. It contains no price, no outcome and no performance field.
Does the response include a closing price?
No. A signal can carry a market-close reference that holds a timestamp and never a price, so your agent can read its own closing market from its own feed at that moment.
This page is published by DeepChamp AI, so read it as one vendor’s view. Examples use hypothetical numbers and are not live markets, picks or claims about performance.
21+ for U.S. sports betting. Follow the laws and age requirements where you are. DeepChamp AI provides independent sports betting research and analysis. It does not accept or place wagers, hold customer funds for betting, or operate a sportsbook. No wins or profits are guaranteed. If you or someone you know has a gambling problem, call or text 1-800-MY-RESET or visit the National Council on Problem Gambling.