Insights
1. Overview
The Firework Insights API provides read-only access to video, livestream, and playlist performance data.
Three endpoints are available today:
Get Livestream Insights (
GET /api/v1/insights/live_streams/{live_stream_id}) — confirms the caller can access a livestream and returns its encoded ID.Get Video Insights (
GET /api/v1/insights/videos/{video_id}) — confirms the caller can access a video and returns its encoded ID.Playlist Video Views (
GET /api/v1/stats/playlists/{playlist_id}/video_views) — returns the videos in a playlist, in the embed feed's order and pagination, each with active and replay view counts.
Base URL: https://api.firework.com
2. Authentication
The Firework Insights API uses OAuth 2.0 for authentication. Before using this API, you must obtain an access token.
Authentication Method:
Client Credentials: OAuth 2.0 Client Credentials flow for server-to-server authentication (machine-to-machine)
📖 Documentation:
Client Credentials OAuth - Server-to-server authentication for OAuth apps
3. Endpoint Summary
GET /api/v1/insights/live_streams/{live_stream_id}
insights:read
Confirm access to a livestream; returns its encoded ID
GET /api/v1/insights/videos/{video_id}
insights:read
Confirm access to a video; returns its encoded ID
GET /api/v1/stats/playlists/{playlist_id}/video_views
insights:read
Active and replay view counts for a playlist's videos
4. Get Livestream Insights
Confirms that the authenticated caller can access a livestream and returns its encoded identifier.
Endpoint: GET /api/v1/insights/live_streams/{live_stream_id} Authentication: Bearer token required (OAuth 2.0 Client Credentials) Required Scope: insights:read (for OAuth apps)
Note: The authenticated caller must have access to the business/channel that owns the livestream.
📝 Note: This endpoint returns only the acknowledgement below and accepts no query parameters.
4.1. Request Headers
Authorization
Bearer token: Bearer {ACCESS_TOKEN}
✅
4.2. Path Parameters
live_stream_id
string
✅
Encoded unique identifier of the livestream
4.3. Query Parameters
None. This endpoint takes no query parameters.
4.4. Get Livestream Insights Response
Success Response: 200 OK
status
string
❌
Always "success" on a 200 response
live_stream_id
string
❌
Encoded identifier of the resolved livestream
4.5. Get Livestream Insights Error Responses
401 Unauthorized
Missing, invalid, or expired OAuth token
403 Forbidden
Token lacks the insights:read scope, or no access to the business
404 Not Found
Livestream not found
Error Response Format:
4.6. Examples
Example: Get Livestream Insights
CURL Request
Success Response (200 OK)
5. Get Video Insights
Confirms that the authenticated caller can access a video and returns its encoded identifier.
Endpoint: GET /api/v1/insights/videos/{video_id} Authentication: Bearer token required (OAuth 2.0 Client Credentials) Required Scope: insights:read (for OAuth apps)
Note: The authenticated caller must have access to the business/channel that owns the video.
📝 Note: This endpoint returns only the acknowledgement below and accepts no query parameters.
5.1. Request Headers
Authorization
Bearer token: Bearer {ACCESS_TOKEN}
✅
5.2. Path Parameters
video_id
string
✅
Encoded unique identifier of the video
5.3. Query Parameters
None. This endpoint takes no query parameters.
5.4. Get Video Insights Response
Success Response: 200 OK
status
string
❌
Always "success" on a 200 response
video_id
string
❌
Encoded identifier of the resolved video
5.5. Get Video Insights Error Responses
401 Unauthorized
Missing, invalid, or expired OAuth token
403 Forbidden
Token lacks the insights:read scope, or no access to the business
404 Not Found
Video not found
Error Response Format:
5.6. Examples
Example: Get Video Insights
CURL Request
Success Response (200 OK)
6. Playlist Video Views
Returns the videos in a playlist in the same order and pagination as the embed playlist feed, each annotated with active and replay view counts. Non-livestream items and videos that have no reporting data return zero views and a null live_stream_id. A client pages this endpoint exactly as it pages the embed feed.
Endpoint: GET /api/v1/stats/playlists/{playlist_id}/video_views Authentication: Bearer token required (OAuth 2.0 Client Credentials) Required Scope: insights:read (for OAuth apps) Pagination: Yes (cursor-based, forward-only)
Note: The authenticated caller must have at least read access to the playlist's business. This endpoint is a temporary wrapper over reporting data and is expected to be deprecated once view metrics are available directly in the embed API.
6.1. Request Headers
Authorization
Bearer token: Bearer {ACCESS_TOKEN}
✅
6.2. Path Parameters
playlist_id
string
✅
Encoded unique identifier of the playlist
6.3. Query Parameters
page_size
integer
❌
6
Number of videos per page (range 1–100; values above the max are clamped)
after
string
❌
None
Opaque cursor for the next page — pass back the pagination.cursor / links.next from the prior response
first_video_id
string
❌
None
Encoded video ID to surface as the first item, mirroring the embed feed's first-video behavior
video_filter
string
❌
None
Feed filter passthrough; matches the embed playlist feed's filtering so this endpoint returns the same page
Note: The feed is forward-only. Only the
aftercursor is honored; there is no backwardbeforecursor and the response'slinksobject contains noprev. Supply a bracketed array (e.g.after[]=...) and the request is rejected with400.
6.4. Playlist Video Views Response
Success Response: 200 OK
video_views
object[]
❌
Videos in the embed feed's order, each with counts
links
object
❌
Pagination links (next)
pagination
object
❌
Pagination state (cursor, has_more)
Video Views Item Object
video_id
string
❌
Encoded video identifier
live_stream_id
string
✅
Encoded livestream identifier; null for a non-livestream item or one with no reporting data
active_views
integer
❌
View count during the live broadcast (0 for non-livestream items or no reporting data)
replay_views
integer
❌
View count from replay (0 when there is no replay or no reporting data)
Links Object
next
string
✅
Relative path to the next page; null on the last page
Pagination Object
cursor
string
✅
Opaque cursor for the next page; null when there is no next page
has_more
boolean
❌
true when another page is available
Note: A cursor (and
links.next) is emitted only when the page is full (page_sizeitems returned). A short final page therefore returnscursor: null,next: null, andhas_more: false.
6.5. Playlist Video Views Error Responses
400 Bad Request
Malformed pagination parameter (e.g. a bracketed after[]= array, not a string)
401 Unauthorized
Missing, invalid, or expired OAuth token
403 Forbidden
Token lacks the insights:read scope, or no access to the playlist's business
404 Not Found
Playlist not found
Error Response Format:
6.6. Examples
Example 1: First Page
CURL Request
Success Response (200 OK)
Example 2: Last Page (Short Page)
6.7. Error Responses
7. Data Freshness
Reporting-backed metrics (such as the Playlist Video Views counts) are computed by ETL pipelines and are typically available by next day.
Engagement
Daily (T+1)
Available by next morning after the event
Commerce
Daily (T+1)
Attribution recomputed daily
Note: Real-time or intra-day metrics are not supported in this version. Metrics reflect end-of-day aggregations.
Last updated
Was this helpful?