GuidesRelease Log
Coverage MatrixDocumentationChange LogLog InContact Us
Release Log

NHL API – Coach's Challenge Support

We've added support for coach challenges in the NHL API.

Beginning this season, a challenge_info object is present when a challenge is initiated. It appears in the Game Play-by-Play endpoint on events with event_type="challenge". This object includes:

  • reason_description – Text description of the reason for a challenge (ex. Interference on goalie)
  • outcome_description – Text description of the outcome of a challenge (ex. Goal overturned)
  • outcome – Outcome of a challenge (ex. call_overturned)
  • decision – Resulting decision of a challenge (ex. no_goal)
  • name & id of the team initiating the challenge and receiving the challenge (under initiated_by and against_team respectively)
📌

All challenge_info fields are string values, not enumerated types. There is no fixed set of valid values, so avoid hardcoding logic against specific strings — even fields that look machine-readable (such as outcome and decision) are free-text and may change. Display them as provided rather than matching them against an expected list.


Benefit

Surface coach's challenges in your play-by-play, including who challenged, the reason, and how the original call was resolved.


📋 Recommended Actions

  • Parse the challenge_info object from the challenge event type in your Game Play-by-Play (and Push) integration.
  • Treat all challenge_info fields as free-text strings — display them as provided rather than matching against a fixed set of expected values.
  • Use initiated_by and against_team to show which team challenged and which was challenged.
  • Handle the object's absence on events that do not involve a challenge.

☑️ Sample Requests:

Game Play-by-Play

curl --request GET \
     --url https://api.sportradar.com/nhl/trial/v7/en/games/81fb1a0f-a8f8-427c-8bcb-35c9ef4874b9/pbp.json \
     --header 'accept: application/json' \
     --header 'x-api-key: YOUR_API_KEY'

🔢 Products

SportProductVersion(s)
Ice HockeyNHL APIv7

🔁 Endpoints Affected


⚙️ Return Samples

<event id="9791736d-1dd3-4e4c-8c3a-a2c38eab3e5b" clock="3:22" official="true" updated="2026-07-22T17:14:58+00:00" wall_clock="2025-12-19T01:32:17+00:00" clock_decimal="3:22" sequence="1766107937895" home_points="1" away_points="1" event_type="challenge">
<description>Blackhawks challenge (Offside), call reversed</description>
<attribution id="4416272f-0f24-11e2-8525-18a905767e44" name="Blackhawks" market="Chicago" team_goal="right" sr_id="sr:team:3681" reference="16"/>
<challenge_info reason_description="Offside" outcome_description="Goal overturned" outcome="call_overturned" decision="no_goal">
    <initiated_by id="4416272f-0f24-11e2-8525-18a905767e44" name="Blackhawks"/>
    <against_team id="441713b7-0f24-11e2-8525-18a905767e44" name="Canadiens"/>
</challenge_info>
...
{
    "id": "9b43afd6-5a17-44c9-8afe-4abf91a7dc45",
    "clock": "15:53",
    "official": true,
    "updated": "2026-07-22T17:14:18+00:00",
    "wall_clock": "2025-12-19T00:12:32+00:00",
    "description": "Canadiens challenge (Interference on goalie), call reversed",
    "clock_decimal": "15:53",
    "sequence": 1766103152703,
    "home_points": 0,
    "away_points": 0,
    "event_type": "challenge",
    "attribution": {
        "id": "441713b7-0f24-11e2-8525-18a905767e44",
        "name": "Canadiens",
        "market": "Montreal",
        "team_goal": "right",
        "sr_id": "sr:team:3690",
        "reference": "8"
    },
    "challenge_info": {
        "reason_description": "Interference on goalie",
        "outcome_description": "Goal overturned",
        "outcome": "call_overturned",
        "decision": "no_goal",
        "initiated_by": {
            "id": "441713b7-0f24-11e2-8525-18a905767e44",
            "name": "Canadiens"
        },
        "against_team": {
            "id": "4416272f-0f24-11e2-8525-18a905767e44",
            "name": "Blackhawks"
        }
    },
    ...