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).
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();
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
| Status | Meaning |
|---|---|
| 401 | Missing X-API-Key header |
| 403 | Invalid API key |
| 404 | Resource not found (match / player) |
| 422 | Validation error, check your request params |
| 429 | Rate limit exceeded |
| 500 | Internal 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
| Name | Type | Required | Description |
|---|---|---|---|
| format | string | required | T20 or ODI |
| innings | integer | required | 1 or 2 |
| over | integer | required | Current over number |
| wickets | integer | required | Wickets fallen so far |
| runs | integer | required | Runs scored so far |
| target | integer | required if innings=2 | Target 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
| Name | Type | Required | Description |
|---|---|---|---|
| format | string | required | T20 or ODI |
| innings | integer | required | 1 or 2 |
| over | integer | required | Current over number |
| wickets | integer | required | Wickets fallen so far |
| score | integer | required | Current 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| days | query | integer | optional | Lookback 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| season | query | string | optional | Filter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| role | query | string | required | batter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 or ODI |
| season | query | string | optional | Filter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| season | query | string | optional | Filter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| venue_id | path | integer | required | Venue ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| venue_id | path | integer | required | Venue ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| team_name | path | string | required | URL-encoded team name (e.g. India) |
| format | query | string | optional | T20 or ODI |
| season | query | string | optional | Filter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| match_id | path | integer | required | Match ID |
| after_over | query | integer | optional | Sample 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| match_id | path | integer | required | Match 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| league_id | path | string | required | League identifier (e.g. ipl) |
| season | query | string | optional | Filter to a specific season (e.g. 2024) |
| role | query | string | optional | bowler or batter (default bowler) |
| limit | query | integer | optional | Max 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
| Name | Type | Required | Description |
|---|---|---|---|
| batter_id | integer | required | ESPNcricinfo player ID of the batter |
| bowler_ids | string | required | Comma-separated player IDs (max 10) |
| format | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 or ODI |
| days | query | integer | optional | Lookback 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| player_id | path | integer | required | ESPNcricinfo player ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| venue_id | path | integer | required | Venue ID |
| format | query | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| team_name | path | string | required | URL-encoded team name (e.g. India) |
| format | query | string | optional | T20 or ODI (default T20) |
| season | query | string | optional | Filter 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| team1_name | path | string | required | URL-encoded team name (e.g. India) |
| team2_name | path | string | required | URL-encoded team name (e.g. Australia) |
| format | query | string | optional | T20 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
| Name | Type | Required | Description |
|---|---|---|---|
| batter1_id | integer | required | ESPNcricinfo player ID of the first batter |
| batter2_id | integer | required | ESPNcricinfo player ID of the second batter |
| format | string | optional | T20 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| match_id | path | integer | required | Match 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."}
]
}