curl -X GET "https://api.fitsociety.io/public/v1/workout/video-library" \
-H "Authorization: Bearer <access_token>"const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fitsociety.io/public/v1/workout/video-library', 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-library"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"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,
"createdAt": "2026-04-12T10:00:00.000Z",
"updatedAt": "2026-04-12T10:00:00.000Z",
"availableLanguages": [
"en",
"nl"
],
"allTitles": [
{
"lang": "en",
"value": "Core Fundamentals"
},
{
"lang": "nl",
"value": "Kern Fundamenten"
}
],
"allDescriptions": [
{
"lang": "en",
"value": "Core Fundamentals"
},
{
"lang": "nl",
"value": "Kern Fundamenten"
}
],
"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"
}
]
}
],
"pagination": {
"page": 1,
"limit": 10,
"totalItems": 25,
"totalPages": 3
},
"filters": {
"language": "en",
"category": null,
"isPublished": null,
"includeAllLanguages": false
}
},
"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": 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 video library entries
Coach-only. Returns a paginated, filtered list of video library entries for the active company. When includeAllLanguages=true, each item includes availableLanguages, allTitles, allDescriptions, and allVideos. The localized title, description, and video fields are resolved against language (or the caller’s profile language).
Requires the workout_library:read scope. This operation maps to /app/v1/workout/video-library 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-library" \
-H "Authorization: Bearer <access_token>"const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fitsociety.io/public/v1/workout/video-library', 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-library"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"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,
"createdAt": "2026-04-12T10:00:00.000Z",
"updatedAt": "2026-04-12T10:00:00.000Z",
"availableLanguages": [
"en",
"nl"
],
"allTitles": [
{
"lang": "en",
"value": "Core Fundamentals"
},
{
"lang": "nl",
"value": "Kern Fundamenten"
}
],
"allDescriptions": [
{
"lang": "en",
"value": "Core Fundamentals"
},
{
"lang": "nl",
"value": "Kern Fundamenten"
}
],
"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"
}
]
}
],
"pagination": {
"page": 1,
"limit": 10,
"totalItems": 25,
"totalPages": 3
},
"filters": {
"language": "en",
"category": null,
"isPublished": null,
"includeAllLanguages": false
}
},
"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": 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.
Query Parameters
x >= 11
1 <= x <= 10010
Full-text filter against title.value and description.value (case-insensitive).
Filter by category.
"Strength"
Filter by publish status.
true
Return only entries that have content in this language, and resolve localized fields against it.
"en"
When true, include availableLanguages, allTitles, allDescriptions, and allVideos in each item.
false