curl -X GET "https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos" \
-H "Authorization: Bearer <access_token>"const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"categoryId": "67f1234567890abcdef1234",
"categoryName": "Strength & Power",
"videos": [
{
"_id": "67f1234567890abcdef1234",
"name": "Core Fundamentals",
"title": "Core Fundamentals",
"description": "Learn the basics of core training.",
"video": {
"lang": "en",
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"width": 1920,
"height": 1080,
"size": 104857600,
"platform": "s3"
},
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"platform": "s3",
"language": "en",
"category": "Strength",
"level": "Intermediate",
"isPublished": true,
"published": true,
"publishedAt": "2026-04-12T10:00:00.000Z",
"viewCount": 42,
"views": 42,
"availableLanguages": [
"en",
"nl"
],
"allTitles": [
{
"lang": "en",
"value": "Core Fundamentals"
}
],
"allDescriptions": [
{
"lang": "en",
"value": "Learn the basics of core training."
}
],
"allVideos": [
{
"lang": "en",
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"width": 1920,
"height": 1080,
"size": 104857600,
"platform": "s3"
}
],
"createdAt": "2026-04-12T10:00:00.000Z",
"updatedAt": "2026-04-12T10:00:00.000Z",
"categoryOrder": 0,
"addedToCategory": "2026-04-12T10:00:00.000Z"
}
],
"totalVideos": 15,
"pagination": {
"page": 1,
"limit": 10,
"totalItems": 15,
"totalPages": 2
}
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 400,
"key": "request.invalid",
"message": "The request is invalid."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 403,
"key": "scopes.insufficient",
"message": "The access token does not include the required scope.",
"details": {
"requiredScopes": [
"required:scope"
]
}
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 404,
"key": "resource.not_found",
"message": "The requested Public API resource was not found."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 500,
"key": "server.internal_error",
"message": "An unexpected Public API server error occurred."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}List videos in a video library category
Coach-only. Returns full VideoLibrary documents for every video in the category, ordered by their categoryOrder. Each item is augmented with categoryOrder and addedToCategory fields. An empty category returns an empty videos array without a 404.
Requires the workout_library:read scope. This operation maps to /app/v1/workout/video-category/:categoryId/videos and retains its Workout V2 permission, feature-flag, and resource-scope checks.
The clientId path parameter is resolved inside the company bound to the Public API token when present.
curl -X GET "https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos" \
-H "Authorization: Bearer <access_token>"const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.fitsociety.io/public/v1/workout/video-category/{categoryId}/videos"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"categoryId": "67f1234567890abcdef1234",
"categoryName": "Strength & Power",
"videos": [
{
"_id": "67f1234567890abcdef1234",
"name": "Core Fundamentals",
"title": "Core Fundamentals",
"description": "Learn the basics of core training.",
"video": {
"lang": "en",
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"width": 1920,
"height": 1080,
"size": 104857600,
"platform": "s3"
},
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"platform": "s3",
"language": "en",
"category": "Strength",
"level": "Intermediate",
"isPublished": true,
"published": true,
"publishedAt": "2026-04-12T10:00:00.000Z",
"viewCount": 42,
"views": 42,
"availableLanguages": [
"en",
"nl"
],
"allTitles": [
{
"lang": "en",
"value": "Core Fundamentals"
}
],
"allDescriptions": [
{
"lang": "en",
"value": "Learn the basics of core training."
}
],
"allVideos": [
{
"lang": "en",
"url": "https://cdn.example.com/video-library/company123/video-en.mp4",
"thumbnail": "https://cdn.example.com/video-library/company123/thumb-en.jpg",
"duration": 300,
"width": 1920,
"height": 1080,
"size": 104857600,
"platform": "s3"
}
],
"createdAt": "2026-04-12T10:00:00.000Z",
"updatedAt": "2026-04-12T10:00:00.000Z",
"categoryOrder": 0,
"addedToCategory": "2026-04-12T10:00:00.000Z"
}
],
"totalVideos": 15,
"pagination": {
"page": 1,
"limit": 10,
"totalItems": 15,
"totalPages": 2
}
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 400,
"key": "request.invalid",
"message": "The request is invalid."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 403,
"key": "scopes.insufficient",
"message": "The access token does not include the required scope.",
"details": {
"requiredScopes": [
"required:scope"
]
}
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 404,
"key": "resource.not_found",
"message": "The requested Public API resource was not found."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}{
"error": {
"code": 500,
"key": "server.internal_error",
"message": "An unexpected Public API server error occurred."
},
"meta": {
"requestId": "4f849d7d-f4f1-45cc-b4b7-3984a3d17f83",
"rateLimit": {
"limit": 10,
"remaining": 9,
"resetSeconds": 1
}
}
}Authorizations
Public API access token issued by /public/v1/oauth/token. Example: Authorization: Bearer fspt_.... Each resource request rechecks the token company's current provider access. Disabling access blocks existing tokens with 403 auth.provider_unavailable.
Path Parameters
Video library category id.
"67f1234567890abcdef1234"
Query Parameters
x >= 11
1 <= x <= 10010
Filter videos by title (case-insensitive).