CricVeda API

25 unique ball-by-ball analytics endpoints: win probability from any match state, player clutch scores, cross-format momentum, batting phase profiles, venue toss intelligence, and more. Powered by ball-by-ball data across 22 leagues (T20 + ODI, professional and domestic).

Base URL https://api.cricsynthesis.in/v1

Authentication

Pass your API key in the X-API-Key header with every request. Never include it in query strings or URLs.

curl https://api.cricsynthesis.in/v1/oracle/win-probability \
  -H "X-API-Key: cv_live_your_key_here"
import requests

res = requests.get(
    "https://api.cricsynthesis.in/v1/oracle/win-probability",
    headers={"X-API-Key": "cv_live_your_key_here"},
)
print(res.json())
const res = await fetch(
  "https://api.cricsynthesis.in/v1/oracle/win-probability",
  { headers: { "X-API-Key": "cv_live_your_key_here" } }
);
const data = await res.json();
Keep your API key secret. If it's compromised, contact support to rotate it.

Rate Limits

Free tier allows 100 requests per day per API key. Response headers tell you your current usage:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1735689600

Responses are cached (oracle 6h · player analytics 1h · momentum 30min · match data 6h), so repeated calls within the cache window don't consume quota.

Error Responses

StatusMeaning
401Missing X-API-Key header
403Invalid API key
404Resource not found (match / player)
422Validation error, check your request params
429Rate limit exceeded
500Internal server error

/oracle/win-probability

GET /v1/oracle/win-probability Historical win probability from any match state

Returns historical win probability from any match state across all T20/ODI matches in the database.

Query parameters

NameTypeRequiredDescription
formatstringrequiredT20 or ODI
inningsintegerrequired1 or 2
overintegerrequiredCurrent over number
wicketsintegerrequiredWickets fallen so far
runsintegerrequiredRuns scored so far
targetintegerrequired if innings=2Target runs (2nd innings only)

Example request

curl "https://api.cricsynthesis.in/v1/oracle/win-probability?format=T20&innings=2&over=10&wickets=3&runs=80&target=160" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "win_probability": 0.42,
  "runs_needed": 80,
  "balls_remaining": 60,
  "required_rr": 8.0,
  "blueprint": [
    {"over": 12, "target_runs_by_end": 96},
    {"over": 15, "target_runs_by_end": 120},
    {"over": 18, "target_runs_by_end": 144}
  ],
  "sample_size": 312,
  "confidence": "high"
}

/oracle/collapse-probability

GET /v1/oracle/collapse-probability Probability of a batting collapse in the next 30 balls

Returns the probability of a batting collapse (3+ wickets in next 30 balls) given the current match state.

Query parameters

NameTypeRequiredDescription
formatstringrequiredT20 or ODI
inningsintegerrequired1 or 2
overintegerrequiredCurrent over number
wicketsintegerrequiredWickets fallen so far
scoreintegerrequiredCurrent score

Example request

curl "https://api.cricsynthesis.in/v1/oracle/collapse-probability?format=T20&innings=1&over=8&wickets=2&score=65" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "collapse_probability": 0.28,
  "definition": "3+ wickets in next 30 balls",
  "most_common_trigger": "caught",
  "expected_runs_if_collapse": 32.4,
  "expected_runs_if_no_collapse": 67.1,
  "sample_size": 186,
  "confidence": "medium"
}

/players/{player_id}/momentum

GET /v1/players/{player_id}/momentum Cross-format, time-decayed form score

Cross-format, time-decayed form score computed across ALL leagues and formats in the past N days. Weights recent matches more heavily and normalises performance within each league's population.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
daysqueryintegeroptionalLookback window in days (default 60)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/momentum?days=60" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "momentum_score": 7.8,
  "signal": "hot",
  "matches_in_window": 8,
  "days_since_last_match": 3,
  "recent_activity": [
    {"match_date": "2026-07-10", "league_id": "t20i", "total_points": 74.5, "z_score": 1.82, "weight": 0.91},
    {"match_date": "2026-07-06", "league_id": "ipl",  "total_points": 61.0, "z_score": 1.24, "weight": 0.87}
  ]
}

/players/{player_id}/clutch

GET /v1/players/{player_id}/clutch Performance index in high-leverage moments only

Performance in high-leverage moments only, meaning innings 2 overs 15+, or a required RR above 12. Clutch index normalised 0-10 across all players with min 30 clutch deliveries.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
seasonquerystringoptionalFilter to a specific season (e.g. 2024)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/clutch" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "clutch_batting_sr": 148.6,
  "clutch_batting_avg": 34.2,
  "clutch_bowling_economy": null,
  "clutch_deliveries": 184,
  "clutch_index": 8.2,
  "signal": "elite_clutch"
}

/players/{player_id}/phase-profile

GET /v1/players/{player_id}/phase-profile SR, avg, and boundary % by powerplay / middle / death

SR, avg, boundary %, and dot ball % broken down by powerplay / middle overs / death, with acceleration score and player type classification.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/phase-profile?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "format": "T20",
  "powerplay": {"sr": 128.4, "avg": 31.2, "boundary_pct": 0.22, "dot_pct": 0.38, "dismissal_rate_per_100": 8.1},
  "middle":    {"sr": 118.0, "avg": 34.5, "boundary_pct": 0.18, "dot_pct": 0.42, "dismissal_rate_per_100": 6.3},
  "death":     {"sr": 162.4, "avg": 22.0, "boundary_pct": 0.31, "dot_pct": 0.28, "dismissal_rate_per_100": 12.4},
  "acceleration_score": 34.0,
  "player_type": "finisher"
}

/players/{player_id}/pressure-fingerprint

GET /v1/players/{player_id}/pressure-fingerprint Bowling pressure profile and archetype

Bowling pressure profile covering dot streak patterns, maiden rate, collapse trigger frequency, and an overall pressure score and archetype (strangler / comeback-king / containment).

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/277916/pressure-fingerprint?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 277916,
  "economy": 6.8,
  "dot_pct": 0.51,
  "maiden_rate": 0.09,
  "avg_consecutive_dots": 3.8,
  "max_dot_streak_ever": 18,
  "wicket_after_boundary_rate": 0.22,
  "pressure_score": 8.6,
  "archetype": "strangler"
}

/players/{player_id}/dismissal-map

GET /v1/players/{player_id}/dismissal-map Dismissal type breakdown per phase with danger zone

Where and how a batter gets out, with a dismissal type breakdown per phase and danger zone identification.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/dismissal-map?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "total_dismissals": 142,
  "most_common_dismissal": "caught",
  "danger_zone_phase": "powerplay",
  "by_phase": {
    "powerplay": {"caught": 12, "bowled": 8,  "lbw": 6, "run out": 2, "stumped": 0, "other": 1, "dismissal_rate_per_100": 11.2},
    "middle":    {"caught": 38, "bowled": 14, "lbw": 9, "run out": 4, "stumped": 2, "other": 2, "dismissal_rate_per_100": 6.8},
    "death":     {"caught": 22, "bowled": 5,  "lbw": 4, "run out": 8, "stumped": 1, "other": 2, "dismissal_rate_per_100": 13.1}
  }
}

/players/{player_id}/nemesis

GET /v1/players/{player_id}/nemesis Top opponents who own this player head-to-head

For a batter: top bowlers who dismiss them most efficiently. For a bowler: batters who own them. Role determines direction of analysis.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
rolequerystringrequiredbatter or bowler

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/nemesis?role=batter" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "role": "batter",
  "nemesis_list": [
    {"opponent_id": 277916, "opponent_name": "Jasprit Bumrah", "balls": 48, "dismissals_or_runs": 5, "rate": 1.04, "label": "dismissed every 9.6 balls"},
    {"opponent_id": 322890, "opponent_name": "Rashid Khan",    "balls": 36, "dismissals_or_runs": 3, "rate": 0.83, "label": "dismissed every 12 balls"}
  ]
}

/players/{player_id}/consistency

GET /v1/players/{player_id}/consistency Risk-adjusted reliability score with floor and ceiling

Risk-adjusted reliability score covering mean FP, standard deviation, coefficient of variation, floor (10th percentile), ceiling (90th percentile), and a risk profile classification.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI
seasonquerystringoptionalFilter to a specific season (e.g. 2024)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/consistency?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "matches_analyzed": 34,
  "mean_fp": 52.4,
  "std_fp": 14.8,
  "cv": 0.28,
  "floor_fp": 28.0,
  "ceiling_fp": 78.5,
  "risk_profile": "safe",
  "upside_ratio": 1.50
}

/players/{player_id}/win-contribution

GET /v1/players/{player_id}/win-contribution Leverage-weighted match impact score

Leverage-weighted match impact score that captures how much a player contributed to actual wins, not just their volume of runs and wickets.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
seasonquerystringoptionalFilter to a specific season (e.g. 2024)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/win-contribution" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "matches": 28,
  "wins": 18,
  "win_rate": 0.64,
  "mean_fp_in_wins": 61.4,
  "mean_fp_in_losses": 38.2,
  "wci_score": 74.8,
  "high_leverage_matches": 11,
  "winning_in_high_leverage_pct": 0.73
}

/players/{player_id}/scoring-rhythm

GET /v1/players/{player_id}/scoring-rhythm Innings build-up pattern and acceleration archetype

How a batter builds an innings, covering average dot streak length, boundary clustering, acceleration curve by balls faced, and archetype (instant-accelerator / slow-starter / steady-state).

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/scoring-rhythm?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "avg_dot_streak_length": 2.4,
  "boundary_clustering_score": 1.8,
  "acceleration_curve": {
    "balls_1_10": 118.4, "balls_11_20": 134.2, "balls_21_30": 156.8, "balls_31_40": 162.1, "balls_40_plus": 148.5
  },
  "player_archetype": "slow-starter",
  "ignition_point": "balls_21_30",
  "innings_analyzed": 84
}

/players/{player_id}/milestone-behaviour

GET /v1/players/{player_id}/milestone-behaviour SR delta when approaching 25, 50, or 100

Does a batter freeze or accelerate when approaching 25, 50, or 100? SR delta in the 5-ball window before each milestone vs overall SR.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/milestone-behaviour?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "overall_sr": 138.6,
  "milestone_behaviour": {
    "approaching_25":  {"sr": 122.4, "sr_delta": -16.2, "sample": 68},
    "approaching_50":  {"sr": 141.8, "sr_delta": 3.2,   "sample": 34},
    "approaching_100": {"sr": 156.2, "sr_delta": 17.6,  "sample": 12}
  },
  "conversion_rates": {"25_to_50": 0.50, "50_to_100": 0.35},
  "label": "unaffected"
}

/players/{player_id}/league-adjusted-performance

GET /v1/players/{player_id}/league-adjusted-performance Cross-league z-score normalisation with inflation index

Normalises a player's stats across leagues by z-score. Surfaces the inflation index, showing how much their raw numbers inflate in weaker leagues versus elite ones.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/league-adjusted-performance" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "overall_adjusted_score": 1.42,
  "league_breakdown": [
    {"league_id": "ipl",   "league_name": "Indian Premier League", "matches": 18, "raw_avg_fp": 52.4, "z_score": 1.48, "difficulty_multiplier": 1.5},
    {"league_id": "blast", "league_name": "Vitality T20 Blast",    "matches": 12, "raw_avg_fp": 71.2, "z_score": 1.12, "difficulty_multiplier": 0.8}
  ],
  "inflation_index": -0.36,
  "label": "consistent"
}

/players/{player_id}/position-analysis

GET /v1/players/{player_id}/position-analysis Performance by batting position with optimal position

Performance broken down by batting position (1-11), inferred from delivery sequence. Includes optimal position and recent deviation from it.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/position-analysis?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "by_position": {
    "3": {"matches": 22, "avg_sr": 142.8, "avg_runs": 44.2},
    "4": {"matches": 8,  "avg_sr": 118.4, "avg_runs": 32.1}
  },
  "optimal_position": 3,
  "current_season_position": 3
}

/players/{player_id}/inherited-pressure

GET /v1/players/{player_id}/inherited-pressure Performance by match state when the player walked in

Performance segmented by the match state when this player walked in: clean start, slight pressure, crisis, or rescue mission.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/inherited-pressure?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "by_state": {
    "clean_start":     {"innings": 28, "avg_sr": 142.6, "avg_runs": 46.2},
    "slight_pressure": {"innings": 18, "avg_sr": 138.4, "avg_runs": 38.8},
    "crisis":          {"innings": 12, "avg_sr": 124.2, "avg_runs": 28.4},
    "rescue_mission":  {"innings": 4,  "avg_sr": 118.0, "avg_runs": 22.1}
  },
  "best_state": "clean_start",
  "crisis_delta": -18.4
}

/players/{player_id}/format-switch-impact

GET /v1/players/{player_id}/format-switch-impact Performance drop when switching format within 7 days

How much does performance drop when a player switches format (T20 ↔ ODI) within 7 days? Compares z-scores in switch matches vs settled matches.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/format-switch-impact" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "switch_matches": 14,
  "settled_matches": 28,
  "switch_avg_z": 0.68,
  "settled_avg_z": 1.24,
  "performance_delta": -0.56,
  "worst_switch_direction": "ODI_to_T20",
  "format_adaptability_score": 0.55,
  "verdict": "slight-impact"
}

/players/{player_id}/spell-analysis

GET /v1/players/{player_id}/spell-analysis Economy and wickets by spell number with decay measurement

For bowlers, economy and wicket rate broken down by spell number (1st, 2nd, 3rd) with a spell decay measurement and a best spell recommendation.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/277916/spell-analysis?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 277916,
  "by_spell": {
    "spell_1": {"matches": 38, "avg_economy": 6.2, "avg_wickets": 1.4, "avg_balls": 14.2},
    "spell_2": {"matches": 28, "avg_economy": 7.1, "avg_wickets": 0.9, "avg_balls": 8.8},
    "spell_3": {"matches": 12, "avg_economy": 6.8, "avg_wickets": 1.2, "avg_balls": 5.4}
  },
  "spell_decay": 0.6,
  "best_spell": 1,
  "verdict": "frontloader"
}

/players/{player_id}/scoring-zones

GET /v1/players/{player_id}/scoring-zones SR and boundary rate by balls-faced bucket

SR and boundary rate by balls-faced bucket, showing exactly when in an innings a batter peaks.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/scoring-zones?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "scoring_zones": {
    "balls_1_10":    {"sr": 118.4, "boundary_pct": 0.18, "runs": 682,  "balls": 576},
    "balls_11_20":   {"sr": 134.2, "boundary_pct": 0.22, "runs": 528,  "balls": 394},
    "balls_21_30":   {"sr": 156.8, "boundary_pct": 0.28, "runs": 412,  "balls": 263},
    "balls_31_40":   {"sr": 162.1, "boundary_pct": 0.30, "runs": 244,  "balls": 151},
    "balls_40_plus": {"sr": 148.5, "boundary_pct": 0.26, "runs": 112,  "balls": 75}
  },
  "ignition_point": "balls_21_30",
  "peak_zone": "balls_31_40",
  "innings_analyzed": 84
}

/venues/{venue_id}/toss-intelligence

GET /v1/venues/{venue_id}/toss-intelligence Toss alpha and best decision at this venue

Toss alpha at this venue, showing how much the toss actually matters once you control for team quality. Includes best toss decision and win rates by decision type.

Parameters

NameInTypeRequiredDescription
venue_idpathintegerrequiredVenue ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/venues/2/toss-intelligence?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "venue_id": 2,
  "venue_name": "Wankhede Stadium",
  "format": "T20",
  "total_matches": 64,
  "batting_first_win_pct": 0.42,
  "fielding_first_win_pct": 0.58,
  "toss_alpha": 0.14,
  "best_toss_decision": "field",
  "win_rate_when_winning_toss": 0.62,
  "confidence": "high"
}

/venues/{venue_id}/day-night-analysis

GET /v1/venues/{venue_id}/day-night-analysis Dew factor score and 2nd innings advantage

Quantifies the dew factor by comparing death-over run rates between the 1st and 2nd innings, and whether batting second is statistically advantaged.

Parameters

NameInTypeRequiredDescription
venue_idpathintegerrequiredVenue ID
formatquerystringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/venues/2/day-night-analysis?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "venue_id": 2,
  "venue_name": "Wankhede Stadium",
  "total_matches": 64,
  "batting_second_win_pct": 0.58,
  "death_overs_1st_innings_rr": 9.8,
  "death_overs_2nd_innings_rr": 11.4,
  "dew_factor_score": 6.2,
  "dew_effect_interpretation": "Significant dew advantage for teams batting second, with the death-over run rate 16% higher in the 2nd innings.",
  "strongest_effect_phase": "overs_17-20"
}

/teams/{team_name}/batting-depth

GET /v1/teams/{team_name}/batting-depth Run distribution by position group and depth score

How dependent is this team on their top 3? Returns % of runs scored by position groups and a depth score (higher = less top-order reliant).

Parameters

NameInTypeRequiredDescription
team_namepathstringrequiredURL-encoded team name (e.g. India)
formatquerystringoptionalT20 or ODI
seasonquerystringoptionalFilter to a specific season (e.g. 2024)

Example request

curl "https://api.cricsynthesis.in/v1/teams/India/batting-depth?format=T20&season=2024" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "team_name": "India",
  "matches_analyzed": 28,
  "avg_team_total": 168.4,
  "top_order_pct": 0.58,
  "middle_order_pct": 0.32,
  "lower_order_pct": 0.10,
  "depth_score": 4.2,
  "top_order_reliance": "medium"
}

/matches/{match_id}/pitch-reading

GET /v1/matches/{match_id}/pitch-reading Inferred pitch classification from early delivery data

Infers pitch behaviour from the first N overs of delivery data, with no manual pitch report needed. Classifies as batting-friendly, pace-friendly, spin-friendly, or balanced.

Parameters

NameInTypeRequiredDescription
match_idpathintegerrequiredMatch ID
after_overqueryintegeroptionalSample overs to analyse (default 3)

Example request

curl "https://api.cricsynthesis.in/v1/matches/12345/pitch-reading?after_over=3" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "match_id": 12345,
  "overs_analyzed": 3,
  "classification": "pace-friendly",
  "confidence": "high",
  "actual_run_rate": 6.8,
  "wickets_in_sample": 4,
  "wicket_types": {"bowled": 2, "lbw": 1, "caught": 1},
  "pace_indicator": 0.75,
  "vs_venue_baseline": "below",
  "interpretation": "4 wickets in 3 overs with 3 bowled/LBW suggests significant seam and swing movement."
}

/matches/{match_id}/momentum-curve

GET /v1/matches/{match_id}/momentum-curve Ball-by-ball win probability with turning point identification

Ball-by-ball win probability for any historical match, with automatic turning point identification and top 3 momentum swings.

Parameters

NameInTypeRequiredDescription
match_idpathintegerrequiredMatch ID

Example request

curl "https://api.cricsynthesis.in/v1/matches/12345/momentum-curve" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "match_id": 12345,
  "team1": "India",
  "team2": "Australia",
  "winner": "India",
  "total_deliveries": 238,
  "curve": [
    {"delivery_num": 1,   "innings": 1, "over_ball": 0.1,  "event": "dot",     "runs_this_ball": 0, "wicket_type": null, "wp_batting_team": 0.50, "wp_delta": 0.0},
    {"delivery_num": 24,  "innings": 1, "over_ball": 3.6,  "event": "wicket",  "runs_this_ball": 0, "wicket_type": "bowled", "wp_batting_team": 0.42, "wp_delta": -0.08},
    {"delivery_num": 108, "innings": 2, "over_ball": 17.4, "event": "boundary","runs_this_ball": 6, "wicket_type": null, "wp_batting_team": 0.78, "wp_delta": 0.18}
  ],
  "turning_point": {"delivery_num": 108, "innings": 2, "over_ball": 17.4, "event": "boundary", "runs_this_ball": 6, "wicket_type": null, "wp_batting_team": 0.78, "wp_delta": 0.18},
  "top_momentum_swings": []
}

/leagues/{league_id}/final-over-specialists

GET /v1/leagues/{league_id}/final-over-specialists Rankings for the last over only, the true nerve specialists

Rankings for the final over only (over 20 in T20, over 50 in ODI), completely separate from general death-over stats. Reveals the true nerve specialists.

Parameters

NameInTypeRequiredDescription
league_idpathstringrequiredLeague identifier (e.g. ipl)
seasonquerystringoptionalFilter to a specific season (e.g. 2024)
rolequerystringoptionalbowler or batter (default bowler)
limitqueryintegeroptionalMax results (default 10)

Example request

curl "https://api.cricsynthesis.in/v1/leagues/ipl/final-over-specialists?season=2024&role=bowler" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "league_id": "ipl",
  "season": "2024",
  "role": "bowler",
  "over_analyzed": "20th over (T20)",
  "specialists": [
    {"player_id": 277916, "name": "Jasprit Bumrah",  "balls": 42, "economy": 5.14, "wickets": 8},
    {"player_id": 419898, "name": "Arshdeep Singh", "balls": 36, "economy": 7.33, "wickets": 5}
  ]
}

/matchups/optimal-bowler

GET /v1/matchups/optimal-bowler Rank available bowlers by effectiveness against a specific batter

Given a batter and a list of available bowlers, ranks them by historical effectiveness (dismissal rate and SR conceded) against that specific batter.

Query parameters

NameTypeRequiredDescription
batter_idintegerrequiredESPNcricinfo player ID of the batter
bowler_idsstringrequiredComma-separated player IDs (max 10)
formatstringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/matchups/optimal-bowler?batter_id=253802&bowler_ids=277916,290716,322890" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "batter_id": 253802,
  "batter_name": "Virat Kohli",
  "ranked_bowlers": [
    {"player_id": 277916, "name": "Jasprit Bumrah",  "balls_faced": 48, "runs": 38,  "dismissals": 5, "sr_conceded": 79.2,  "dismissal_rate": 1.04, "confidence": "high",   "rank": 1},
    {"player_id": 322890, "name": "Rashid Khan",     "balls_faced": 36, "runs": 42,  "dismissals": 3, "sr_conceded": 116.7, "dismissal_rate": 0.83, "confidence": "high",   "rank": 2},
    {"player_id": 290716, "name": "Ravindra Jadeja",  "balls_faced": 22, "runs": 28,  "dismissals": 1, "sr_conceded": 127.3, "dismissal_rate": 0.45, "confidence": "medium", "rank": 3}
  ],
  "recommendation": "Jasprit Bumrah is the best choice with 5 dismissals in 48 balls (one every 9.6 balls) and an SR conceded of just 79.2.",
  "caveat": null
}

/players/{player_id}/chase-master

GET /v1/players/{player_id}/chase-master Record in run chases

How a batter performs specifically when chasing. Compares chase strike rate against overall SR, plus finishing rate in successful chases and a chaser verdict.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/chase-master?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "format": "T20",
  "chase_innings": 42,
  "overall_sr": 138.6,
  "chase_sr": 146.2,
  "chase_avg": 48.5,
  "chases_finished_won": 11,
  "finishing_rate": 0.45,
  "verdict": "elite_chaser"
}

/players/{player_id}/strike-rotation

GET /v1/players/{player_id}/strike-rotation Strike rotation profile

How well a batter keeps the scoreboard ticking. Breaks down singles %, dot %, boundary %, and non-boundary strike rate into an overall rotation score and archetype.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/strike-rotation?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "format": "T20",
  "balls": 2840,
  "singles_pct": 0.42,
  "dot_pct": 0.34,
  "boundary_pct": 0.15,
  "non_boundary_sr": 92.4,
  "rotation_score": 7.8,
  "archetype": "rotator"
}

/players/{player_id}/six-map

GET /v1/players/{player_id}/six-map Six-hitting power profile

A batter's six-hitting profile, including total sixes, six rate, sixes per innings, and how those sixes are distributed across powerplay, middle, and death phases.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/players/253802/six-map?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 253802,
  "format": "T20",
  "total_sixes": 184,
  "six_rate": 3.2,
  "sixes_per_innings": 1.6,
  "six_phase_distribution": {
    "powerplay": {"count": 38, "pct": 0.21},
    "middle":    {"count": 72, "pct": 0.39},
    "death":     {"count": 74, "pct": 0.40}
  },
  "dominant_six_phase": "death",
  "power_rating": 6.4
}

/players/{player_id}/workload

GET /v1/players/{player_id}/workload Bowler workload and fatigue

Recent bowling workload and fatigue signals over a rolling window: balls bowled, back-to-back matches, and the economy delta between the first and second half of the window.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI
daysqueryintegeroptionalLookback window in days (default 30)

Example request

curl "https://api.cricsynthesis.in/v1/players/277916/workload?days=30" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 277916,
  "days": 30,
  "total_balls_bowled": 192,
  "matches_bowled": 8,
  "days_active": 26,
  "balls_per_match": 24.0,
  "back_to_back_matches": 3,
  "first_half_economy": 6.4,
  "second_half_economy": 7.8,
  "economy_delta": 1.4,
  "workload_level": "high",
  "fatigue_signal": "elevated"
}

/players/{player_id}/ball-age-split

GET /v1/players/{player_id}/ball-age-split New-ball vs old-ball bowling

A bowler's effectiveness split by ball age: new ball, middle overs, and old ball. Surfaces economy and wickets per over in each phase and a specialist classification.

Parameters

NameInTypeRequiredDescription
player_idpathintegerrequiredESPNcricinfo player ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/players/277916/ball-age-split?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "player_id": 277916,
  "format": "T20",
  "new_ball": {"balls": 420, "runs": 448, "wickets": 22, "economy": 6.4, "wickets_per_over": 0.31},
  "middle":   {"balls": 180, "runs": 216, "wickets": 6,  "economy": 7.2, "wickets_per_over": 0.20},
  "old_ball": {"balls": 360, "runs": 432, "wickets": 28, "economy": 7.2, "wickets_per_over": 0.47},
  "best_phase": "new_ball",
  "specialist_type": "new_ball_specialist"
}

/venues/{venue_id}/par-score

GET /v1/venues/{venue_id}/par-score Over-by-over par progression

Over-by-over par progression for a venue, showing the expected first-innings total at key over marks plus the winning threshold derived from historical results.

Parameters

NameInTypeRequiredDescription
venue_idpathintegerrequiredVenue ID
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/venues/2/par-score?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "venue_id": 2,
  "venue_name": "Wankhede Stadium",
  "format": "T20",
  "matches_analyzed": 64,
  "par_progression": [
    {"over": 6,  "par_runs": 52.0},
    {"over": 10, "par_runs": 84.0},
    {"over": 15, "par_runs": 128.0},
    {"over": 20, "par_runs": 178.0}
  ],
  "avg_first_innings_total": 176.4,
  "winning_threshold": 182.0,
  "confidence": "high"
}

/teams/{team_name}/comeback-index

GET /v1/teams/{team_name}/comeback-index Win rate from losing positions

How often a team wins from a losing position. Measures the share of matches where the team was behind at a key checkpoint yet went on to win, as a resilience rating.

Parameters

NameInTypeRequiredDescription
team_namepathstringrequiredURL-encoded team name (e.g. India)
formatquerystringoptionalT20 or ODI (default T20)
seasonquerystringoptionalFilter to a specific season (e.g. 2024)

Example request

curl "https://api.cricsynthesis.in/v1/teams/India/comeback-index?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "team_name": "India",
  "format": "T20",
  "season": null,
  "matches_analyzed": 180,
  "losing_position_matches": 48,
  "comebacks_won": 19,
  "comeback_index": 0.4,
  "resilience": "elite"
}

/teams/{team1_name}/rivalry/{team2_name}

GET /v1/teams/{team1_name}/rivalry/{team2_name} Head-to-head rivalry record

Head-to-head rivalry record between two teams: total meetings, win split, recent results, current streak, and the dominant team overall.

Parameters

NameInTypeRequiredDescription
team1_namepathstringrequiredURL-encoded team name (e.g. India)
team2_namepathstringrequiredURL-encoded team name (e.g. Australia)
formatquerystringoptionalT20 or ODI (default T20)

Example request

curl "https://api.cricsynthesis.in/v1/teams/India/rivalry/Australia?format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "team1_name": "India",
  "team2_name": "Australia",
  "format": "T20",
  "total_meetings": 32,
  "team1_wins": 18,
  "team2_wins": 13,
  "no_results": 1,
  "team1_win_pct": 0.56,
  "last_5_results": [
    {"match_date": "2026-06-14", "winner": "India"},
    {"match_date": "2026-03-02", "winner": "Australia"}
  ],
  "current_streak": "India won last 2",
  "dominant_team": "India"
}

/matchups/partnership

GET /v1/matchups/partnership Batting partnership chemistry

Chemistry between two batters at the crease together: total partnerships, combined strike rate, best stand, and a chemistry delta versus their individual baselines.

Query parameters

NameTypeRequiredDescription
batter1_idintegerrequiredESPNcricinfo player ID of the first batter
batter2_idintegerrequiredESPNcricinfo player ID of the second batter
formatstringoptionalT20 or ODI

Example request

curl "https://api.cricsynthesis.in/v1/matchups/partnership?batter1_id=253802&batter2_id=34102&format=T20" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "batter1_id": 253802,
  "batter1_name": "Virat Kohli",
  "batter2_id": 34102,
  "batter2_name": "Rohit Sharma",
  "format": "T20",
  "partnerships": 38,
  "total_runs": 1240,
  "total_balls": 892,
  "combined_sr": 139.0,
  "runs_per_partnership": 32.6,
  "best_partnership": 143,
  "chemistry_delta": 12.4,
  "verdict": "elite_pairing"
}

/matches/{match_id}/turning-points

GET /v1/matches/{match_id}/turning-points Biggest momentum-swing overs

The overs that swung a historical match the most, ranked by win-probability shift, with the key event and a plain-language description of each turning point.

Parameters

NameInTypeRequiredDescription
match_idpathintegerrequiredMatch ID

Example request

curl "https://api.cricsynthesis.in/v1/matches/12345/turning-points" \
  -H "X-API-Key: cv_live_your_key_here"

Example response

{
  "match_id": 12345,
  "team1": "India",
  "team2": "Australia",
  "winner": "India",
  "turning_points": [
    {"innings": 2, "over": 17, "wp_before": 0.52, "wp_after": 0.71, "wp_swing": 0.19, "key_event": {"striker_id": 253802, "bowler_id": 277916, "runs": 18, "wicket_type": null}, "description": "Over 17 (innings 2): 18 runs swung win probability +0.19 toward the chasing side."}
  ]
}