{"success":true,"events":[{"event":"cs2.match.started","game":"cs2","kind":"lifecycle","description":"A CS2 match has started, with event name and team names.","whenFires":"When a match goes live. Once per match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 25 per day across all matches","last7Days":174,"lastSentAt":"2026-11-08T19:02:14.695Z","latency":{"p50Ms":301,"p95Ms":597,"deliveries":566,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE","ONE_GAME_STARTER (own game)","BASIC"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":495,"max":571,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.event","types":["null","string"],"presentPct":100},{"name":"data.teams","types":["array"],"presentPct":100},{"name":"event","types":["null","string"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["null","object"],"presentPct":100},{"name":"previous_state.status","types":["string"],"presentPct":92},{"name":"teams","types":["array"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.match.started","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T14:09:05.649Z","event_type":"cs2.match.started","match_id":"cs2-match-2400316","previous_state":{"status":"upcoming"},"data":{"data":{"event":"ESL Challenger League Season 52 Europe Cup 11","teams":["Balkan Outlaws","The Last Resort"]},"event":"ESL Challenger League Season 52 Europe Cup 11","teams":["Balkan Outlaws","The Last Resort"],"league":"cs2","matchId":"cs2-match-2400316","match_id":"cs2-match-2400316","timestamp":"2026-11-08T14:09:05.633Z","event_type":"cs2.match.started","previous_state":{"status":"upcoming"}}},"exampleCapturedAt":"2026-11-08T14:09:05.649Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-match-started"},{"event":"cs2.match.live_started","game":"cs2","kind":"lifecycle","description":"Live round-by-round tracking began for a CS2 match.","whenFires":"When live tracking of a match begins. About once per match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 25 per day across all matches","last7Days":173,"lastSentAt":"2026-11-08T19:02:15.829Z","latency":{"p50Ms":357,"p95Ms":1000,"deliveries":567,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":586,"max":604,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.match_id","types":["string"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.started_at","types":["string"],"presentPct":100},{"name":"data.status","types":["string"],"presentPct":100},{"name":"data.teams","types":["object"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["null"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.match.live_started","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T16:25:22.572Z","event_type":"cs2.match.live_started","match_id":"cs2-match-2400093","previous_state":null,"data":{"data":{"score":{"team1":null,"team2":null},"teams":{"team1_id":"cs2-team-13029","team2_id":"cs2-team-13026","team1_name":"RED Canids Academy","team2_name":"BESTIA Academy"},"status":"live","match_id":"cs2-match-2400093","started_at":"2026-11-08T16:25:22.451Z"},"league":"cs2","matchId":"cs2-match-2400093","match_id":"cs2-match-2400093","timestamp":"2026-11-08T16:25:22.451Z","event_type":"cs2.match.live_started","previous_state":null}},"exampleCapturedAt":"2026-11-08T16:25:22.572Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-match-live_started"},{"event":"cs2.match.live_ended","game":"cs2","kind":"lifecycle","description":"Live tracking ended for a CS2 match, with the last known state of the map and players in data.final_state.","whenFires":"When a match stops being live. Use cs2.match.completed for the official result.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 25 per day across all matches","last7Days":173,"lastSentAt":"2026-11-08T20:23:58.687Z","latency":{"p50Ms":353,"p95Ms":1037,"deliveries":554,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":8966,"max":9662,"sampledRows":300},"notes":"data.reason says why tracking stopped. The score in data.score counts maps; data.final_state.score counts rounds on the last map.","fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.ended_at","types":["string"],"presentPct":100},{"name":"data.final_state","types":["object"],"presentPct":100},{"name":"data.match_id","types":["string"],"presentPct":100},{"name":"data.reason","types":["string"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.status","types":["string"],"presentPct":100},{"name":"data.teams","types":["object"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["object"],"presentPct":100},{"name":"previous_state.bomb_planted","types":["boolean"],"presentPct":100},{"name":"previous_state.current_map","types":["string"],"presentPct":100},{"name":"previous_state.current_round","types":["number"],"presentPct":100},{"name":"previous_state.match_id","types":["string"],"presentPct":100},{"name":"previous_state.players","types":["array"],"presentPct":100},{"name":"previous_state.round_time_seconds","types":["null"],"presentPct":100},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"previous_state.status","types":["string"],"presentPct":100},{"name":"previous_state.teams","types":["object"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.match.live_ended","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T14:10:55.655Z","event_type":"cs2.match.live_ended","match_id":"cs2-match-2400384","previous_state":{"score":{"team1":5,"team2":12},"teams":{"team1_name":"benched gods","team2_name":"PCIFIC","terrorist_team_name":"PCIFIC","counter_terrorist_team_name":"benched gods"},"status":"live","players":[{"hp":100,"adr":120.83333333333333,"name":"jresy","nick":"jresy","side":"T","alive":true,"kills":19,"money":3100,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":6,"player_id":"cs2-player-21250","has_defuse_kit":false},{"hp":100,"adr":74.5,"name":"scolleN","nick":"scolleN","side":"T","alive":true,"kills":15,"money":6350,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-22504","has_defuse_kit":false},{"hp":100,"adr":73.61111111111111,"name":"lugseN","nick":"lugseN","side":"T","alive":true,"kills":15,"money":8300,"deaths":7,"helmet":true,"kevlar":true,"weapon":"awp","assists":4,"player_id":"cs2-player-23274","has_defuse_kit":false},{"hp":100,"adr":85.38888888888889,"name":"mini","nick":"mini","side":"T","alive":true,"kills":14,"money":2550,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-9352","has_defuse_kit":false},{"hp":100,"adr":59.27777777777778,"name":"oyesil","nick":"oyesil","side":"T","alive":true,"kills":10,"money":3050,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-25890","has_defuse_kit":false},{"hp":100,"adr":69.77777777777777,"name":"facer","nick":"facer","side":"CT","alive":true,"kills":10,"money":100,"deaths":16,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":4,"player_id":"cs2-player-24885","has_defuse_kit":false},{"hp":100,"adr":72.94444444444444,"name":"f1chper","nick":"f1chper","side":"CT","alive":true,"kills":10,"money":300,"deaths":13,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":1,"player_id":"cs2-player-26074","has_defuse_kit":false},{"hp":100,"adr":41.388888888888886,"name":"yoyoS2","nick":"yoyoS2","side":"CT","alive":true,"kills":9,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"awp","assists":2,"player_id":"cs2-player-26646","has_defuse_kit":false},{"hp":95,"adr":56.55555555555556,"name":"wign","nick":"Wign","side":"CT","alive":true,"kills":8,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":3,"player_id":"cs2-player-23773","has_defuse_kit":false},{"hp":100,"adr":48.833333333333336,"name":"K014NZ","nick":"K014NZ","side":"CT","alive":true,"kills":8,"money":0,"deaths":16,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":2,"player_id":"cs2-player-24840","has_defuse_kit":true}],"match_id":"cs2-match-2400384","current_map":"de_anubis","bomb_planted":false,"current_round":18,"round_time_seconds":null},"data":{"data":{"score":{"team1":1,"team2":1},"teams":{"team1_id":"cs2-team-13599","team2_id":"cs2-team-13054","team1_name":"benched gods","team2_name":"PCIFIC"},"reason":"not_live","status":"ended","ended_at":"2026-11-08T14:10:55.632Z","match_id":"cs2-match-2400384","final_state":{"score":{"team1":5,"team2":12},"teams":{"team1_name":"benched gods","team2_name":"PCIFIC","terrorist_team_name":"PCIFIC","counter_terrorist_team_name":"benched gods"},"status":"live","players":[{"hp":100,"adr":120.83333333333333,"name":"jresy","nick":"jresy","side":"T","alive":true,"kills":19,"money":3100,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":6,"player_id":"cs2-player-21250","has_defuse_kit":false},{"hp":100,"adr":74.5,"name":"scolleN","nick":"scolleN","side":"T","alive":true,"kills":15,"money":6350,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-22504","has_defuse_kit":false},{"hp":100,"adr":73.61111111111111,"name":"lugseN","nick":"lugseN","side":"T","alive":true,"kills":15,"money":8300,"deaths":7,"helmet":true,"kevlar":true,"weapon":"awp","assists":4,"player_id":"cs2-player-23274","has_defuse_kit":false},{"hp":100,"adr":85.38888888888889,"name":"mini","nick":"mini","side":"T","alive":true,"kills":14,"money":2550,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-9352","has_defuse_kit":false},{"hp":100,"adr":59.27777777777778,"name":"oyesil","nick":"oyesil","side":"T","alive":true,"kills":10,"money":3050,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-25890","has_defuse_kit":false},{"hp":100,"adr":69.77777777777777,"name":"facer","nick":"facer","side":"CT","alive":true,"kills":10,"money":100,"deaths":16,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":4,"player_id":"cs2-player-24885","has_defuse_kit":false},{"hp":100,"adr":72.94444444444444,"name":"f1chper","nick":"f1chper","side":"CT","alive":true,"kills":10,"money":300,"deaths":13,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":1,"player_id":"cs2-player-26074","has_defuse_kit":false},{"hp":100,"adr":41.388888888888886,"name":"yoyoS2","nick":"yoyoS2","side":"CT","alive":true,"kills":9,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"awp","assists":2,"player_id":"cs2-player-26646","has_defuse_kit":false},{"hp":95,"adr":56.55555555555556,"name":"wign","nick":"Wign","side":"CT","alive":true,"kills":8,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":3,"player_id":"cs2-player-23773","has_defuse_kit":false},{"hp":100,"adr":48.833333333333336,"name":"K014NZ","nick":"K014NZ","side":"CT","alive":true,"kills":8,"money":0,"deaths":16,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":2,"player_id":"cs2-player-24840","has_defuse_kit":true}],"match_id":"cs2-match-2400384","current_map":"de_anubis","bomb_planted":false,"current_round":18,"round_time_seconds":null}},"league":"cs2","matchId":"cs2-match-2400384","match_id":"cs2-match-2400384","timestamp":"2026-11-08T14:10:55.632Z","event_type":"cs2.match.live_ended","previous_state":{"score":{"team1":5,"team2":12},"teams":{"team1_name":"benched gods","team2_name":"PCIFIC","terrorist_team_name":"PCIFIC","counter_terrorist_team_name":"benched gods"},"status":"live","players":[{"hp":100,"adr":120.83333333333333,"name":"jresy","nick":"jresy","side":"T","alive":true,"kills":19,"money":3100,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":6,"player_id":"cs2-player-21250","has_defuse_kit":false},{"hp":100,"adr":74.5,"name":"scolleN","nick":"scolleN","side":"T","alive":true,"kills":15,"money":6350,"deaths":11,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-22504","has_defuse_kit":false},{"hp":100,"adr":73.61111111111111,"name":"lugseN","nick":"lugseN","side":"T","alive":true,"kills":15,"money":8300,"deaths":7,"helmet":true,"kevlar":true,"weapon":"awp","assists":4,"player_id":"cs2-player-23274","has_defuse_kit":false},{"hp":100,"adr":85.38888888888889,"name":"mini","nick":"mini","side":"T","alive":true,"kills":14,"money":2550,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-9352","has_defuse_kit":false},{"hp":100,"adr":59.27777777777778,"name":"oyesil","nick":"oyesil","side":"T","alive":true,"kills":10,"money":3050,"deaths":8,"helmet":true,"kevlar":true,"weapon":"ak47","assists":5,"player_id":"cs2-player-25890","has_defuse_kit":false},{"hp":100,"adr":69.77777777777777,"name":"facer","nick":"facer","side":"CT","alive":true,"kills":10,"money":100,"deaths":16,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":4,"player_id":"cs2-player-24885","has_defuse_kit":false},{"hp":100,"adr":72.94444444444444,"name":"f1chper","nick":"f1chper","side":"CT","alive":true,"kills":10,"money":300,"deaths":13,"helmet":false,"kevlar":true,"weapon":"m4a1_silencer","assists":1,"player_id":"cs2-player-26074","has_defuse_kit":false},{"hp":100,"adr":41.388888888888886,"name":"yoyoS2","nick":"yoyoS2","side":"CT","alive":true,"kills":9,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"awp","assists":2,"player_id":"cs2-player-26646","has_defuse_kit":false},{"hp":95,"adr":56.55555555555556,"name":"wign","nick":"Wign","side":"CT","alive":true,"kills":8,"money":0,"deaths":14,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":3,"player_id":"cs2-player-23773","has_defuse_kit":false},{"hp":100,"adr":48.833333333333336,"name":"K014NZ","nick":"K014NZ","side":"CT","alive":true,"kills":8,"money":0,"deaths":16,"helmet":true,"kevlar":true,"weapon":"m4a1_silencer","assists":2,"player_id":"cs2-player-24840","has_defuse_kit":true}],"match_id":"cs2-match-2400384","current_map":"de_anubis","bomb_planted":false,"current_round":18,"round_time_seconds":null}}},"exampleCapturedAt":"2026-11-08T14:10:55.655Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-match-live_ended"},{"event":"cs2.match.completed","game":"cs2","kind":"lifecycle","description":"A CS2 match has finished, with the final map score and winner.","whenFires":"When a match result is final.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 28 per day across all matches","last7Days":198,"lastSentAt":"2026-11-08T20:23:55.926Z","latency":{"p50Ms":266,"p95Ms":641,"deliveries":2800,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE","ONE_GAME_STARTER (own game)","BASIC"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":388,"max":426,"sampledRows":300},"notes":"On this event matchId, mapId and winnerTeamId can use a different id prefix from other CS2 events. The trailing number is the same one as in cs2-match-{number}, so compare on that number.","fields":[{"name":"endsAt","types":["string"],"presentPct":100},{"name":"event","types":["null","string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"team1Score","types":["number"],"presentPct":100},{"name":"team2Score","types":["number"],"presentPct":100},{"name":"teams","types":["array"],"presentPct":100},{"name":"winnerTeamId","types":["string"],"presentPct":100}],"example":{"event":"cs2.match.completed","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T15:24:03.312Z","event_type":"cs2.match.completed","match_id":"cs2-match-2400316","previous_state":null,"data":{"event":"ESL Challenger League Season 52 Europe Cup 11","teams":["Balkan Outlaws","The Last Resort"],"endsAt":"2026-11-08T15:24:03.241Z","league":"cs2","matchId":"cs2-match-2400316","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-14130"}},"exampleCapturedAt":"2026-11-08T15:24:03.312Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-match-completed"},{"event":"cs2.map.started","game":"cs2","kind":"lifecycle","description":"A map of a CS2 series is known or has started.","whenFires":"When a map record of a live series opens.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 336 per day across all matches (about 25 per match)","last7Days":2353,"lastSentAt":"2026-11-08T20:25:38.311Z","latency":{"p50Ms":509,"p95Ms":872,"deliveries":4772,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE","ONE_GAME_STARTER (own game)","BASIC"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":321,"max":323,"sampledRows":300},"notes":"data.mapName can be \"TBA\" and scores null until the map is picked and played, and this event can repeat for one map. On this event matchId, mapId and winnerTeamId can use a different id prefix from other CS2 events. The trailing number is the same one as in cs2-match-{number}, so compare on that number.","fields":[{"name":"league","types":["string"],"presentPct":100},{"name":"mapId","types":["string"],"presentPct":100},{"name":"mapName","types":["string"],"presentPct":100},{"name":"mapNumber","types":["number"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"team1Score","types":["null"],"presentPct":100},{"name":"team2Score","types":["null"],"presentPct":100}],"example":{"event":"cs2.map.started","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:25:38.311Z","event_type":"cs2.map.started","match_id":"cs2-match-2400439","previous_state":null,"data":{"mapId":"cs2-match-2400439-map-1","league":"cs2","mapName":"Default","matchId":"cs2-match-2400439","mapNumber":1,"team1Score":null,"team2Score":null}},"exampleCapturedAt":"2026-11-08T20:25:38.311Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-map-started"},{"event":"cs2.map.completed","game":"cs2","kind":"lifecycle","description":"A map of a CS2 series finished, with the round score and winner.","whenFires":"When a map ends.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 16 per day across all matches (about 2 per match)","last7Days":115,"lastSentAt":"2026-11-08T12:17:00.774Z","latency":{"p50Ms":264,"p95Ms":624,"deliveries":3023,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE","ONE_GAME_STARTER (own game)","BASIC"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":354,"max":356,"sampledRows":300},"notes":"On this event matchId, mapId and winnerTeamId can use a different id prefix from other CS2 events. The trailing number is the same one as in cs2-match-{number}, so compare on that number.","fields":[{"name":"league","types":["string"],"presentPct":100},{"name":"mapId","types":["string"],"presentPct":100},{"name":"mapName","types":["string"],"presentPct":100},{"name":"mapNumber","types":["number"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"team1Score","types":["number"],"presentPct":100},{"name":"team2Score","types":["number"],"presentPct":100},{"name":"winnerTeamId","types":["string"],"presentPct":100}],"example":{"event":"cs2.map.completed","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-06T18:31:57.023Z","event_type":"cs2.map.completed","match_id":"cs2-match-2400085","previous_state":null,"data":{"mapId":"cs2-match-2400085-map-2","league":"cs2","mapName":"Ancient","matchId":"cs2-match-2400085","mapNumber":2,"team1Score":10,"team2Score":13,"winnerTeamId":"cs2-team-14126"}},"exampleCapturedAt":"2026-11-06T18:31:57.023Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-map-completed"},{"event":"cs2.round.started","game":"cs2","kind":"live_tick","description":"A round started, with teams and sides.","whenFires":"At the start of each round of a live match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 1,186 per day across all matches (about 47 per match)","last7Days":8305,"lastSentAt":"2026-11-08T20:30:00.573Z","latency":{"p50Ms":367,"p95Ms":1324,"deliveries":8847,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":617,"max":657,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.map","types":["string"],"presentPct":100},{"name":"data.round_number","types":["number"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.teams","types":["object"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["null","object"],"presentPct":100},{"name":"previous_state.round_number","types":["number"],"presentPct":100},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.round.started","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:29:35.329Z","event_type":"cs2.round.started","match_id":"cs2-match-2400320","previous_state":{"score":{"team1":4,"team2":8},"round_number":12},"data":{"data":{"map":"de_anubis","score":{"team1":8,"team2":4},"teams":{"team1_name":"aimclub","team2_name":"Balkan Outlaws","terrorist_team_name":"Balkan Outlaws","counter_terrorist_team_name":"aimclub"},"round_number":13},"league":"cs2","matchId":"cs2-match-2400320","match_id":"cs2-match-2400320","timestamp":"2026-11-08T20:29:35.312Z","event_type":"cs2.round.started","previous_state":{"score":{"team1":4,"team2":8},"round_number":12}}},"exampleCapturedAt":"2026-11-08T20:29:35.329Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-round-started"},{"event":"cs2.round.ended","game":"cs2","kind":"live_tick","description":"A round ended, with winner side and reason.","whenFires":"At the end of each round of a live match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 1,223 per day across all matches (about 51 per match)","last7Days":8562,"lastSentAt":"2026-11-08T20:29:24.916Z","latency":{"p50Ms":392,"p95Ms":1557,"deliveries":8852,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":610,"max":624,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.event_id","types":["string"],"presentPct":100},{"name":"data.map","types":["string"],"presentPct":100},{"name":"data.reason","types":["string"],"presentPct":100},{"name":"data.round_number","types":["number"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.timestamp","types":["string"],"presentPct":100},{"name":"data.winner","types":["string"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["object"],"presentPct":100},{"name":"previous_state.round_number","types":["number"],"presentPct":100},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.round.ended","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:15:22.416Z","event_type":"cs2.round.ended","match_id":"cs2-match-2400228","previous_state":{"score":{"team1":13,"team2":13},"round_number":27},"data":{"data":{"map":"de_ancient","score":{"team1":13,"team2":13},"reason":"Terrorists_Win","winner":"TERRORIST","event_id":"ef9cb4d9d46a3126439ff1a6d8745d31","timestamp":"2026-11-08T20:15:21.644Z","round_number":27},"league":"cs2","matchId":"cs2-match-2400228","match_id":"cs2-match-2400228","timestamp":"2026-11-08T20:15:22.400Z","event_type":"cs2.round.ended","previous_state":{"score":{"team1":13,"team2":13},"round_number":27}}},"exampleCapturedAt":"2026-11-08T20:15:22.416Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-round-ended"},{"event":"cs2.bomb.planted","game":"cs2","kind":"live_tick","description":"The bomb was planted: site, player and players alive per side.","whenFires":"On each plant in a live match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 662 per day across all matches (about 28 per match)","last7Days":4631,"lastSentAt":"2026-11-08T20:29:52.935Z","latency":{"p50Ms":395,"p95Ms":1331,"deliveries":6197,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":538,"max":549,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.ct_players","types":["number"],"presentPct":100},{"name":"data.event_id","types":["string"],"presentPct":100},{"name":"data.map","types":["string"],"presentPct":100},{"name":"data.player_name","types":["string"],"presentPct":100},{"name":"data.player_nick","types":["string"],"presentPct":100},{"name":"data.round_number","types":["number"],"presentPct":100},{"name":"data.site","types":["string"],"presentPct":100},{"name":"data.t_players","types":["number"],"presentPct":100},{"name":"data.timestamp","types":["string"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["null"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.bomb.planted","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T19:42:56.992Z","event_type":"cs2.bomb.planted","match_id":"cs2-match-2400320","previous_state":null,"data":{"data":{"map":"de_dust2","site":"A","event_id":"0a7e3923f3a1b55cf4898789ec303f12","t_players":1,"timestamp":"2026-11-08T19:42:56.294Z","ct_players":1,"player_name":"starplajerz","player_nick":"starplajerz","round_number":19},"league":"cs2","matchId":"cs2-match-2400320","match_id":"cs2-match-2400320","timestamp":"2026-11-08T19:42:56.948Z","event_type":"cs2.bomb.planted","previous_state":null}},"exampleCapturedAt":"2026-11-08T19:42:56.992Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-bomb-planted"},{"event":"cs2.bomb.defused","game":"cs2","kind":"live_tick","description":"The bomb was defused.","whenFires":"On each defuse in a live match.","status":"not_observed","statusNote":"You can subscribe, but none has been recorded. Do not rely on it.","typicalFrequency":"none recorded so far","last7Days":0,"lastSentAt":null,"latency":null,"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":[],"filtersNote":"Not known yet: no stored event to read them from.","payloadBytes":null,"fields":[],"example":null,"exampleCapturedAt":null,"docsUrl":"https://citoapi.com/docs/webhooks/#cs2-bomb-defused"},{"event":"cs2.bomb.exploded","game":"cs2","kind":"live_tick","description":"The bomb exploded.","whenFires":"On each explosion in a live match.","status":"not_observed","statusNote":"You can subscribe, but none has been recorded. Do not rely on it.","typicalFrequency":"none recorded so far","last7Days":0,"lastSentAt":null,"latency":null,"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":[],"filtersNote":"Not known yet: no stored event to read them from.","payloadBytes":null,"fields":[],"example":null,"exampleCapturedAt":null,"docsUrl":"https://citoapi.com/docs/webhooks/#cs2-bomb-exploded"},{"event":"cs2.score.updated","game":"cs2","kind":"live_tick","description":"The live score changed.","whenFires":"When the map or round score of a live match changes.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 2,231 per day across all matches (about 90 per match)","last7Days":15615,"lastSentAt":"2026-11-08T20:30:00.542Z","latency":{"p50Ms":365,"p95Ms":1332,"deliveries":8955,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":627,"max":918,"sampledRows":300},"notes":"previous_state.score holds the score before the change. A score can be null while a map is being set up. Round-level detail (data.map, data.round_number) is on most events, not all.","fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.map","types":["string"],"presentPct":60},{"name":"data.round_number","types":["number"],"presentPct":60},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.teams","types":["object"],"presentPct":60},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["object"],"presentPct":100},{"name":"previous_state.round_number","types":["number"],"presentPct":60},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"team1Score","types":["null"],"presentPct":40},{"name":"team2Score","types":["null"],"presentPct":40},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.score.updated","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:29:56.291Z","event_type":"cs2.score.updated","match_id":"cs2-match-2400228","previous_state":{"score":{"team1":1,"team2":1}},"data":{"data":{"score":{"team1":null,"team2":null}},"league":"cs2","matchId":"cs2-match-2400228","match_id":"cs2-match-2400228","timestamp":"2026-11-08T20:29:56.266Z","event_type":"cs2.score.updated","team1Score":null,"team2Score":null,"previous_state":{"score":{"team1":1,"team2":1}}}},"exampleCapturedAt":"2026-11-08T20:29:56.291Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-score-updated"},{"event":"cs2.player.state_changed","game":"cs2","kind":"live_tick","description":"A player changed: health, money, weapon, armor, kills or similar. data.changes lists what changed.","whenFires":"Many times per round for every player in a live match. This is by far the highest-volume event: subscribe only if you need it, and answer quickly.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 58,364 per day across all matches (about 2,417 per match)","last7Days":408546,"lastSentAt":"2026-11-08T20:29:57.159Z","latency":{"p50Ms":426,"p95Ms":1593,"deliveries":9000,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":1338,"max":1407,"sampledRows":300},"fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.changes","types":["array"],"presentPct":100},{"name":"data.map","types":["string"],"presentPct":100},{"name":"data.player","types":["object"],"presentPct":100},{"name":"data.round_number","types":["number"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["object"],"presentPct":100},{"name":"previous_state.player","types":["object"],"presentPct":100},{"name":"previous_state.round_number","types":["number"],"presentPct":100},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.player.state_changed","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:29:47.086Z","event_type":"cs2.player.state_changed","match_id":"cs2-match-2400094","previous_state":{"score":{"team1":1,"team2":3},"player":{"hp":100,"adr":67.4,"name":"Lucaozy","nick":"Lucaozy","side":"CT","alive":true,"kills":4,"money":4850,"deaths":2,"helmet":true,"kevlar":true,"weapon":"ak47","assists":3,"player_id":"cs2-player-18717","has_defuse_kit":true},"round_number":5},"data":{"data":{"map":"de_nuke","score":{"team1":1,"team2":3},"player":{"hp":100,"adr":67.4,"name":"Lucaozy","nick":"Lucaozy","side":"CT","alive":true,"kills":5,"money":5150,"deaths":2,"helmet":true,"kevlar":true,"weapon":"ak47","assists":3,"player_id":"cs2-player-18717","has_defuse_kit":true},"changes":["kill","money_threshold_crossed"],"round_number":5},"league":"cs2","matchId":"cs2-match-2400094","match_id":"cs2-match-2400094","timestamp":"2026-11-08T20:29:47.071Z","event_type":"cs2.player.state_changed","previous_state":{"score":{"team1":1,"team2":3},"player":{"hp":100,"adr":67.4,"name":"Lucaozy","nick":"Lucaozy","side":"CT","alive":true,"kills":4,"money":4850,"deaths":2,"helmet":true,"kevlar":true,"weapon":"ak47","assists":3,"player_id":"cs2-player-18717","has_defuse_kit":true},"round_number":5}}},"exampleCapturedAt":"2026-11-08T20:29:47.086Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-player-state_changed"},{"event":"cs2.live.state","game":"cs2","kind":"live_tick","description":"A snapshot of a live match: status, score and current map.","whenFires":"Repeatedly during a live match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 5,625 per day across all matches (about 221 per match)","last7Days":39372,"lastSentAt":"2026-11-08T20:29:54.719Z","latency":{"p50Ms":526,"p95Ms":1546,"deliveries":8983,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":546,"max":565,"sampledRows":300},"fields":[{"name":"currentMap","types":["null"],"presentPct":100},{"name":"data","types":["object"],"presentPct":100},{"name":"data.current_map","types":["null"],"presentPct":100},{"name":"data.score","types":["object"],"presentPct":100},{"name":"data.status","types":["string"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"previous_state","types":["object"],"presentPct":100},{"name":"previous_state.score","types":["object"],"presentPct":100},{"name":"previous_state.status","types":["string"],"presentPct":100},{"name":"status","types":["string"],"presentPct":100},{"name":"team1Score","types":["null","number"],"presentPct":100},{"name":"team2Score","types":["null","number"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.live.state","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T20:29:17.981Z","event_type":"cs2.live.state","match_id":"cs2-match-2400094","previous_state":{"score":{"team1":0,"team2":1},"status":"live"},"data":{"data":{"score":{"team1":0,"team2":1},"status":"live","current_map":null},"league":"cs2","status":"live","matchId":"cs2-match-2400094","match_id":"cs2-match-2400094","timestamp":"2026-11-08T20:29:17.966Z","currentMap":null,"event_type":"cs2.live.state","team1Score":0,"team2Score":1,"previous_state":{"score":{"team1":0,"team2":1},"status":"live"}}},"exampleCapturedAt":"2026-11-08T20:29:17.981Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-live-state"},{"event":"cs2.live.player_stats_updated","game":"cs2","kind":"live_tick","description":"Live player stats were refreshed. A count only: data.playerStatRows says how many rows changed.","whenFires":"During a live match.","status":"active","statusNote":"Sent during the last 7 days.","typicalFrequency":"about 572 per day across all matches (about 57 per match)","last7Days":4001,"lastSentAt":"2026-11-08T19:12:51.400Z","latency":{"p50Ms":284,"p95Ms":501,"deliveries":3854,"basis":"From the moment Cito recorded the event to the moment a customer endpoint answered, recent deliveries."},"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE"],"filters":["league","matchId"],"filtersNote":"A filter on a field this event does not carry stops every delivery of it, so only filter on the fields listed here.","payloadBytes":{"average":413,"max":413,"sampledRows":300},"notes":"Treat it as a signal to re-read /cs2/live/{matchId}. It carries no player stats.","fields":[{"name":"data","types":["object"],"presentPct":100},{"name":"data.player_stat_rows","types":["number"],"presentPct":100},{"name":"event_type","types":["string"],"presentPct":100},{"name":"league","types":["string"],"presentPct":100},{"name":"match_id","types":["string"],"presentPct":100},{"name":"matchId","types":["string"],"presentPct":100},{"name":"playerStatRows","types":["number"],"presentPct":100},{"name":"previous_state","types":["null"],"presentPct":100},{"name":"timestamp","types":["string"],"presentPct":100}],"example":{"event":"cs2.live.player_stats_updated","id":"a1b2c3d4-0000-4000-8000-000000000000","timestamp":"2026-11-08T19:12:51.400Z","event_type":"cs2.live.player_stats_updated","match_id":"cs2-match-2400319","previous_state":null,"data":{"data":{"player_stat_rows":10},"league":"cs2","matchId":"cs2-match-2400319","match_id":"cs2-match-2400319","timestamp":"2026-11-08T19:12:51.385Z","event_type":"cs2.live.player_stats_updated","playerStatRows":10,"previous_state":null}},"exampleCapturedAt":"2026-11-08T19:12:51.400Z","docsUrl":"https://citoapi.com/docs/webhooks/#cs2-live-player_stats_updated"},{"event":"cs2.ranking.updated","game":"cs2","kind":"summary","description":"A CS2 team ranking update.","whenFires":"When rankings change.","status":"not_observed","statusNote":"You can subscribe, but none has been recorded. Do not rely on it.","typicalFrequency":"none recorded so far","last7Days":0,"lastSentAt":null,"latency":null,"minimumPlan":"pro","plans":["PRO","BUSINESS","ENTERPRISE","ONE_GAME_STARTER (own game)","BASIC"],"filters":[],"filtersNote":"Not known yet: no stored event to read them from.","payloadBytes":null,"fields":[],"example":null,"exampleCapturedAt":null,"docsUrl":"https://citoapi.com/docs/webhooks/#cs2-ranking-updated"}],"count":16,"games":["lol","cod","fortnite","cs2","dota2","tennis","ufc"],"plans":{"live_delivery":{"plans":["PRO","BUSINESS","ENTERPRISE"],"names":"Pro and Scale (and Enterprise)","pro_monthly_usd":59,"scale_monthly_usd":100},"closed_plans":"Accounts still on the closed One Game Starter and Basic plans keep webhooks for the events their plan allows. They cannot subscribe to the real-time CS2 events.","free_and_starter":"Free and Starter accounts can create a test inbox (POST /api/v1/webhook-inbox) and send sample events to it. Live delivery needs Pro or Scale.","upgrade_url":"https://citoapi.com/signup/pro?checkout=1&source=webhook_access","limits":{"webhooks_per_account":5}},"setup":[{"step":1,"title":"Pick events","detail":"GET /api/v1/webhooks/events lists every event, with status, volume, fields and a real example. Subscribe to the fewest that do the job: cs2.player.state_changed alone is hundreds of thousands of requests a week."},{"step":2,"title":"Get a URL","detail":"A public HTTPS route that accepts POST and answers 2xx within 10 seconds. No server yet? POST /api/v1/webhook-inbox gives you a hosted temporary URL, on any plan."},{"step":3,"title":"Create the webhook","detail":"POST /api/v1/webhooks with x-api-key and {\"url\":\"...\",\"events\":[\"...\"],\"filters\":{...}}. Needs Pro or Scale. Save webhook.secret from the response: it is shown once."},{"step":4,"title":"Verify signatures","detail":"HMAC-SHA256 of the raw request body with your secret, hex, compared with the X-Cito-Signature header. Hash the raw bytes before parsing JSON."},{"step":5,"title":"Send a test","detail":"POST /api/v1/webhooks/{id}/test with {\"event\":\"cs2.match.completed\"} sends a real recent sample, signed, marked as a test (X-Cito-Test: true, data.test true, test true). The response has the status code, latency and a plain-English diagnosis."},{"step":6,"title":"Watch deliveries","detail":"GET /api/v1/webhooks/{id}/deliveries lists each delivery. Handle retries with the payload id as your idempotency key."}],"envelope":{"fields":{"event":"The event name.","id":"Unique id of this event. Use it as your idempotency key (same as the X-Cito-Event-Id header).","timestamp":"When Cito sent this delivery, ISO 8601 UTC.","event_type":"The event name.","match_id":"The match id, or null when the event is not about one match.","previous_state":"The state before the change, on events that have one. Otherwise null.","data":"The event body. See fields and example on each event."},"test_markers":"A test delivery has test: true on the envelope, data.test true and the header X-Cito-Test: true. A replay has data.replayed true and data.original_event_id."},"signature_headers":["X-Cito-Signature","X-Cito-Event","X-Cito-Event-Id","X-Cito-Timestamp","X-Cito-Delivery-Attempt","X-Cito-Test (test deliveries only)"],"signing":{"algorithm":"HMAC-SHA256","signedContent":"UTF-8 bytes of the exact JSON request body sent by Cito","bodySerialization":"JSON.stringify(payload)","signatureHeader":"X-Cito-Signature","signatureEncoding":"hex","signaturePrefix":"none","secretFormat":"Use the exact webhook secret value shown when the webhook is created or regenerated. No whsec_ prefix is used.","verificationRule":"Verify against the raw request body bytes before reparsing or reserializing JSON.","sampleSecret":"cito_test_secret_123","samplePayload":{"event":"lol.live.state","id":"sample-event-id-123","timestamp":"2026-06-07T16:00:00.000Z","data":{"gameId":"lol-game-123","matchId":"lol-match-123","league":"LEC","gameTime":1337,"blueTeam":{"tag":"G2","kills":7,"gold":24800,"towers":3,"dragons":2,"barons":0},"redTeam":{"tag":"FNC","kills":5,"gold":23700,"towers":2,"dragons":1,"barons":0}}},"samplePayloadString":"{\"event\":\"lol.live.state\",\"id\":\"sample-event-id-123\",\"timestamp\":\"2026-06-07T16:00:00.000Z\",\"data\":{\"gameId\":\"lol-game-123\",\"matchId\":\"lol-match-123\",\"league\":\"LEC\",\"gameTime\":1337,\"blueTeam\":{\"tag\":\"G2\",\"kills\":7,\"gold\":24800,\"towers\":3,\"dragons\":2,\"barons\":0},\"redTeam\":{\"tag\":\"FNC\",\"kills\":5,\"gold\":23700,\"towers\":2,\"dragons\":1,\"barons\":0}}}","sampleSignature":"97db77f5cd96e09a70dcf6cc75fc5d92d780c41ce82c853b51e4070954c54171","sampleHeaders":{"Content-Type":"application/json","X-Cito-Signature":"97db77f5cd96e09a70dcf6cc75fc5d92d780c41ce82c853b51e4070954c54171","X-Cito-Event":"lol.live.state","X-Cito-Event-Id":"sample-event-id-123","X-Cito-Timestamp":"2026-06-07T16:00:00.000Z","X-Cito-Delivery-Attempt":"1"}},"delivery":{"timeout_ms":10000,"attempts_per_event":3,"retry_gaps_seconds":[1,2],"retried":"Timeouts, network errors, 5xx, 408 and 429.","not_retried":"Other 4xx answers.","success":"Any 2xx answer.","redirects":"307 and 308 keep the POST. 301, 302 and 303 turn it into a GET with no body, so set the webhook to the final URL.","ordering":"Not guaranteed. Use data timestamps or seq-like fields, and treat each event independently.","idempotency":"Use the payload id / X-Cito-Event-Id header as your idempotency key.","failure_pause":{"after_consecutive_failures":3,"pause_minutes":[1,5,15,30],"behaviour":"After 3 failed events in a row, Cito pauses sending to that webhook: 1, then 5, 15 and 30 minutes (30 is the cap). Events that occur during a pause are NOT queued for you. They are logged with status \"skipped_backoff\" and are not sent again unless you ask. Any success ends the pause.","after_recovery":"When the first delivery after a pause succeeds, Cito re-sends up to 50 missed match and result events from the last 24 hours, oldest first, with data.catch_up true and the same event id. POST /api/v1/webhooks/{id}/catch-up re-sends any still missing. POST /api/v1/webhooks/{id}/replay re-sends a specific event or match."},"auto_disable":{"behaviour":"A webhook is switched off (isActive false, reason in lastError) after 100 failures in a row, 20 in a row when the answer is permanent (401, 403, 404, 410, 530, DNS or certificate errors), or 50 in a row with no success for 7 days.","re_enable":"POST /api/v1/webhooks/{id}/reset, or PATCH with {\"isActive\":true}."},"log_note":"attempt in the delivery log is currently always 1, even when retries happened. X-Cito-Delivery-Attempt on the request is the real attempt number.","outbound_addresses":"Deliveries come from Cito servers and may change. Verify X-Cito-Signature instead of allow-listing addresses."},"filters":{"note":"Set on a webhook as {\"filters\":{\"league\":\"LEC\"}}. Each field takes one value or a list, compared case-insensitively. Fields per event are on each event.","fields":{"league":"data.league (for example LEC, Worlds, or cs2 for CS2 events).","matchId":"data.matchId.","gameId":"data.gameId.","side":"data.side.","tour":"Tennis: ATP, WTA and so on.","tournamentId":"Tennis tournament id.","playerId":"Tennis: matches either player."},"tennis_matchId":"For tennis events, matchId matches data.id."},"endpoints":{"catalog":"GET /api/v1/webhooks/events?game=&event=&examples=false&fields=false (public)","openapi":"GET /api/v1/webhooks/openapi.json (public)","list":"GET /api/v1/webhooks","get":"GET /api/v1/webhooks/{id}","create":"POST /api/v1/webhooks","update":"PATCH /api/v1/webhooks/{id}","delete":"DELETE /api/v1/webhooks/{id}","test":"POST /api/v1/webhooks/{id}/test","regenerate_secret":"POST /api/v1/webhooks/{id}/regenerate-secret","reset":"POST /api/v1/webhooks/{id}/reset","deliveries":"GET /api/v1/webhooks/{id}/deliveries","delivery":"GET /api/v1/webhooks/{id}/deliveries/{deliveryId}","replay":"POST /api/v1/webhooks/{id}/replay","catch_up":"POST /api/v1/webhooks/{id}/catch-up","inbox":"POST, GET /api/v1/webhook-inbox"},"auth":"Management routes take your API key (x-api-key header or Authorization: Bearer) or a dashboard session. A key only reaches its own account's webhooks.","measured_at":"2026-11-08T20:30:57.835Z","docs":"https://citoapi.com/docs/webhooks/","dashboard":"https://citoapi.com/dashboard/webhooks"}