Retrieve a session
curl --request GET \
--url https://api.hooper.gg/v1/sessions/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hooper.gg/v1/sessions/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hooper.gg/v1/sessions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "sess_18234",
"object": "session",
"created": 1756224000,
"status": "queued",
"group": "grp_412",
"source": {
"type": "upload",
"url": "<string>"
},
"metadata": {},
"run_version": 123,
"duration_seconds": 5412,
"cost_cents": 752,
"highlights": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "hl_9f2c…",
"object": "highlight",
"shot": "shot_a1b2…",
"shot_index": 123,
"length_seconds": 8.5,
"is_lowlight": true,
"is_manual": true,
"player": "plr_5",
"video": {
"default": "<string>",
"horizontal": "<string>",
"1080p": "<string>",
"720p": "<string>",
"480p": "<string>",
"360p": "<string>",
"240p": "<string>",
"144p": "<string>"
},
"preview": {
"default": "<string>",
"horizontal": "<string>"
},
"created": 123
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"shots": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "shot_a1b2…",
"object": "shot",
"index": 123,
"start_seconds": 123,
"end_seconds": 123,
"made": true,
"points": 123,
"type": "fieldgoal",
"is_three_point": true,
"is_free_throw": true,
"is_fouled": true,
"location": {
"shot_image_normed": [
123
],
"shot_world_normed": [
123
],
"hoop_image_normed": [
123
]
},
"excitement_score": 123,
"players": {
"scorer": "plr_5",
"assister": "<string>",
"rebounder": "<string>"
},
"highlight": "hl_9f2c…"
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"players": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "plr_5",
"object": "player",
"name": "<string>",
"jersey": "<string>",
"user_id": "<string>",
"team_id": 123,
"stats": {
"points": 123,
"fg_2pt_att": 123,
"fg_2pt_make": 123,
"fg_3pt_att": 123,
"fg_3pt_make": 123,
"ft_att": 123,
"ft_make": 123,
"assist": 123,
"rebound": 123
}
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"totals": {
"points": 123,
"fg_2pt_att": 123,
"fg_2pt_make": 123,
"fg_3pt_att": 123,
"fg_3pt_make": 123,
"ft_att": 123,
"ft_make": 123,
"assist": 123,
"rebound": 123
},
"video": {
"url": "<string>",
"preview_url": "<string>",
"1080p": "<string>",
"720p": "<string>",
"360p": "<string>",
"width": 123,
"height": 123,
"fps": 123
},
"artifacts": {
"actions": "<string>",
"balls": "<string>",
"hoops": "<string>",
"clusters": "<string>"
},
"error": {
"code": "no_shots",
"message": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "<string>",
"param": "source.url"
}
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "<string>",
"param": "source.url"
}
}Sessions
Retrieve a session
GET
/
v1
/
sessions
/
{id}
Retrieve a session
curl --request GET \
--url https://api.hooper.gg/v1/sessions/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hooper.gg/v1/sessions/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hooper.gg/v1/sessions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "sess_18234",
"object": "session",
"created": 1756224000,
"status": "queued",
"group": "grp_412",
"source": {
"type": "upload",
"url": "<string>"
},
"metadata": {},
"run_version": 123,
"duration_seconds": 5412,
"cost_cents": 752,
"highlights": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "hl_9f2c…",
"object": "highlight",
"shot": "shot_a1b2…",
"shot_index": 123,
"length_seconds": 8.5,
"is_lowlight": true,
"is_manual": true,
"player": "plr_5",
"video": {
"default": "<string>",
"horizontal": "<string>",
"1080p": "<string>",
"720p": "<string>",
"480p": "<string>",
"360p": "<string>",
"240p": "<string>",
"144p": "<string>"
},
"preview": {
"default": "<string>",
"horizontal": "<string>"
},
"created": 123
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"shots": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "shot_a1b2…",
"object": "shot",
"index": 123,
"start_seconds": 123,
"end_seconds": 123,
"made": true,
"points": 123,
"type": "fieldgoal",
"is_three_point": true,
"is_free_throw": true,
"is_fouled": true,
"location": {
"shot_image_normed": [
123
],
"shot_world_normed": [
123
],
"hoop_image_normed": [
123
]
},
"excitement_score": 123,
"players": {
"scorer": "plr_5",
"assister": "<string>",
"rebounder": "<string>"
},
"highlight": "hl_9f2c…"
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"players": {
"object": "list",
"has_more": true,
"total_count": 123,
"data": [
{
"id": "plr_5",
"object": "player",
"name": "<string>",
"jersey": "<string>",
"user_id": "<string>",
"team_id": 123,
"stats": {
"points": 123,
"fg_2pt_att": 123,
"fg_2pt_make": 123,
"fg_3pt_att": 123,
"fg_3pt_make": 123,
"ft_att": 123,
"ft_make": 123,
"assist": 123,
"rebound": 123
}
}
],
"url": "/v1/sessions/sess_18234/highlights"
},
"totals": {
"points": 123,
"fg_2pt_att": 123,
"fg_2pt_make": 123,
"fg_3pt_att": 123,
"fg_3pt_make": 123,
"ft_att": 123,
"ft_make": 123,
"assist": 123,
"rebound": 123
},
"video": {
"url": "<string>",
"preview_url": "<string>",
"1080p": "<string>",
"720p": "<string>",
"360p": "<string>",
"width": 123,
"height": 123,
"fps": 123
},
"artifacts": {
"actions": "<string>",
"balls": "<string>",
"hoops": "<string>",
"clusters": "<string>"
},
"error": {
"code": "no_shots",
"message": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "<string>",
"param": "source.url"
}
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "<string>",
"param": "source.url"
}
}Authorizations
API key issued by Hooper for your organization. Keys are environment-tagged: hk_prod_ keys work against production, hk_stg_ keys against staging.
Path Parameters
Example:
"sess_18234"
Response
OK
One submitted game. The same shape everywhere it appears — single read, list item, webhook payload. Highlights, shots and players are embedded (first 100 of each); their url pages the rest.
Example:
"sess_18234"
Allowed value:
"session"Example:
1756224000
Available options:
queued, processing, processed, failed Example:
"grp_412"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Example:
5412
Example:
752
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Raw model output (JSONL) behind the shots and highlights.
Show child attributes
Show child attributes
Set when status is failed.
Show child attributes
Show child attributes