Appearance
Passes
The passes section in the markings response contains an object for every pass that we detect in the game.
Overview
We attempt to detect both completed and incomplete passes. Incomplete passes can be difficult to differentiate from other situations where a player loses the ball, but we use a combination of ball trajectory and player position to make a best guess.
We also try to include controlled tips or "touch passes", where a player intentionally deflects the ball to a teammate. This includes rebound tip outs to teammates. But once again, this is an area that can be difficult to accurately differentiate from uncontrolled tips.
We filter out passes that occur after a made basket before the ball is inbounded, for example when one teammate collects the ball after it goes through the net and tosses it to a teammate to inbound.
Sample Response
json
{
"markings": {
"passes": [
{
"ball_hit_ground_during_completed_pass": false,
"catch_distance_forward_in": 23.68,
"catch_distance_from_mid_chest_in": 35.37,
"catch_distance_left_right_in": 17.8,
"catch_height_above_mid_hip_in": 31.74,
"catch_height_above_standing_hip_in": 32.98,
"catch_height_in": 75.18,
"chance_id_ctg": "chance_e9d3153f5458a3aa36815fc17753fd89",
"game_id_nba": "0022500404",
"intended_receiver_id_ctg": 1629023,
"intended_receiver_id_nba": 1629023,
"is_jump_pass": false,
"is_one_handed_pass": true,
"nba_game_id": "0022500404",
"pass_handedness": "right",
"pass_id_ctg": "pass_0079826aceb4eba4ac64d619ed795067",
"pass_release_he_frame": 298364,
"pass_release_wall_clock": "2025-12-23T02:49:05.174+00:00",
"passer_id_ctg": 1630314,
"passer_id_nba": 1630314,
"receiver_jumped_for_touch": false,
"receiver_touch_start_he_frame": 298392,
"receiver_touch_start_wall_clock": "2025-12-23T02:49:05.641+00:00",
"receiver_touched_ball": true
}
]
}
}Fields
Identifiers
game_id_nba
Type: string
NBA game ID
nba_game_id deprecated
Type: string
NBA game ID
Deprecated
Use game_id_nba instead. This field will be removed in a future version.
pass_id_ctg
Type: string
CTG-generated unique pass ID.
chance_id_ctg
Type: string
CTG chance ID for the offensive opportunity this pass occurred in. null if no matching chance is found within 3 seconds of the pass (which may indicate a data error with a missing chance).
passer_id_nba
Type: integer
NBA player ID of the passer.
passer_id_ctg deprecated
Type: integer
NBA player ID of the passer
Deprecated
Use passer_id_nba instead. This field will be removed in a future version.
intended_receiver_id_nba
Type: integer
NBA player ID of the intended receiver. For a completed pass, this is the player who next touches the ball. For an incomplete pass, we use ball trajectory and player position data to make our best guess at who the pass was intended for.
intended_receiver_id_ctg deprecated
Type: integer
NBA player ID of the intended receiver
Deprecated
Use intended_receiver_id_nba instead. This field will be removed in a future version.
Pass Timing
pass_release_he_frame
Type: integer
Hawk-Eye frame when the pass left the passer's hands.
pass_release_wall_clock
Type: string
UTC timestamp corresponding to pass_release_he_frame.
receiver_touch_start_he_frame
Type: integer
Hawk-Eye frame when the intended receiver first touched the ball. null if the receiver never touched the ball (e.g. on an incomplete pass)
receiver_touch_start_wall_clock
Type: string
UTC timestamp corresponding to receiver_touch_start_he_frame. null if the receiver never touched the ball.
Pass Style
is_one_handed_pass
Type: boolean
true if the pass was thrown with only one hand on the ball for a meaningful portion of the throw. null if player pose data is unavailable for the passer at the time of the pass
pass_handedness
Type: string
Which hand primarily threw the pass:
rightleftbothnullif player pose data is unavailable for the passer at the time of the pass
NOTE
A pass that is not one-handed can still be primarily thrown with either the right or left hand if both hands are on the ball close to the release of the pass but one hand does the pushing.
is_jump_pass
Type: boolean
true if the passer was in the air when the ball was released. null if player pose data is unavailable for the passer at the time of the pass
Reception Data
receiver_touched_ball
Type: boolean
true if the intended receiver touched the ball at any point near the end of the pass (including incomplete passes).
receiver_jumped_for_touch
Type: boolean
true if the receiver's first touch occurred while they were in the air. null if the receiver never touched the ball (e.g. on an incomplete pass)
ball_hit_ground_during_completed_pass
Type: boolean
true if the ball hit the ground between release and the receiver's first touch. null if the receiver never touched the ball (e.g. on an incomplete pass)
NOTE
Usually the ball hitting the ground on a completed pass is intentional, like a bounce pass, but because we can't easily infer intention from the tracking data this field is intentionally named to describe what we're measuring: whether the ball hit the ground between release and the receiver's first touch, not whether it was a bounce pass.
Catch Location
These fields measure where the receiver caught the ball relative to their body.
catch_height_in
Type: float | Unit: inches
Ball height above the floor at the receiver's first touch. null if the receiver never touched the ball (e.g. on an incomplete pass)
catch_height_above_mid_hip_in
Type: float | Unit: inches
Ball height above the receiver's mid hip at first touch. null if the receiver never touched the ball (e.g. on an incomplete pass)
catch_height_above_standing_hip_in
Type: float | Unit: inches
Ball height above the receiver's estimated standing hip height at first touch. This helps adjust for receivers bending down to catch low passes. null if the receiver never touched the ball (e.g. on an incomplete pass)
catch_distance_from_mid_chest_in
Type: float | Unit: inches
Distance from the ball center to the receiver's mid-chest point at first touch. We compute the mid-chest as the midpoint between the mid hip and neck. null if the receiver never touched the ball (e.g. on an incomplete pass)
catch_distance_left_right_in
Type: float | Unit: inches
How many inches to the left/right the center of the ball is from the center of the player’s chest (based on which way the shoulders are facing). This is an absolute value, i.e. it does not indicate direction only the magnitude. A value close to 0 would indicate the ball is caught in the middle of the player’s body, while a high value would indicate it is way off to the side of the player (again, based on which way the player’s shoulders are facing when the ball is first touched). null if the receiver never touched the ball (e.g. on an incomplete pass)
catch_distance_forward_in
Type: float | Unit: inches
How many inches in front of the player the center of the ball is when it is first touched. A value close to 0 would indicate the ball is first touched very close to the player’s body, while a high value would indicate it is touched far out in front of a player’s body. null if the receiver never touched the ball (e.g. on an incomplete pass)
