The Videos API returns the media catalogue โ on-demand video content organised into libraries. CDN URLs, filenames, and streaming keys are not included for security. For customer-scoped video purchases, see Customers โ Videos & Media.
All endpoints require the media:read scope.
List videos
GET /videos
Returns all videos for the company. Deleted videos are excluded.
No pagination โ videos are a catalogue.
Example response
{
"data": [
{
"id": "video_42",
"type": "video",
"library": {
"id": "lib_1",
"type": "media_library",
"name": "Yoga Videos"
},
"name": "Morning Flow",
"description": "A gentle morning yoga flow",
"base100_price": 999,
"credits": 1,
"has_expiry": true,
"expiry_days": 30,
"ready": true,
"updated_at": "2025-06-15T10:00:00"
}
]
}
Get a single video
GET /video/{id}
Retrieve a single video by ID. Returns the video even if deleted (when requested by ID explicitly).
Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Video ID (e.g. video_42) |
Example response
{
"data": {
"id": "video_42",
"type": "video",
"library": {
"id": "lib_1",
"type": "media_library",
"name": "Yoga Videos"
},
"name": "Morning Flow",
"description": "A gentle morning yoga flow",
"base100_price": 999,
"credits": 1,
"has_expiry": true,
"expiry_days": 30,
"ready": true,
"updated_at": "2025-06-15T10:00:00"
}
}
Error responses
| Status | Condition |
|---|---|
| 403 | Missing media:read scope |
| 404 | Video ID does not exist for this company |
Field reference
| Field | Type | Description |
|---|---|---|
id | string | Prefixed video ID (e.g. video_42) |
type | string | Always "video" |
library | object or null | The media library this video belongs to |
library.id | string | Prefixed library ID (e.g. lib_1) |
library.type | string | Always "media_library" |
library.name | string | Library name |
name | string | Video name |
description | string | Video description |
base100_price | number | Price in smallest currency unit (e.g. 999 = 9.99) |
credits | number | Number of pass credits required to access this video |
has_expiry | boolean | Whether purchased access expires |
expiry_days | number | Number of days until purchased access expires (0 if no expiry) |
ready | boolean | Whether the video has been processed and is available for playback |
updated_at | string | ISO 8601 datetime |
Caching
Both endpoints are cached for 5 minutes. See Scopes, Rate Limits, Caching & Errors for details.
