API: Videos
Read a website's synced videos with filters, search, and pagination — e.g. to render them on a custom site — and curate them via the REST API.
Videos are synced from YouTube per channel. The API gives you the same data your yabby site renders — thumbnails, durations, view counts, publish dates — which makes it the easy way to show your videos on a custom website while yabby handles the syncing. See API: Getting started for authentication.
List videos of a website
GET /api/v1/websites/{websiteId}/videosQuery parameters:
| Parameter | Type | Default | Notes |
|---|---|---|---|
limit | number | 50 | Page size, max 100 |
offset | number | 0 | Pagination offset |
query | string | — | Search in title and description |
channelId | uuid | — | Only videos of one channel |
featured | boolean | — | Only featured (true) or non-featured (false) videos |
includeHidden | boolean | false | Also return hidden videos |
sort | enum | new_to_old | new_to_old | old_to_new | most_viewed | least_viewed |
curl "https://www.yabby.page/api/v1/websites/{websiteId}/videos?limit=12&sort=most_viewed" \
-H "Authorization: Bearer yabby_your_api_key"{
"data": [
{
"id": "…",
"channelId": "…",
"youtubeVideoId": "dQw4w9WgXcQ",
"title": "My best video",
"description": "…",
"thumbnail": "https://i.ytimg.com/…",
"thumbnailHd": "https://i.ytimg.com/…",
"duration": "PT12M34S",
"isShort": false,
"viewCount": 123456,
"publishedAt": "2026-05-01T12:00:00.000Z",
"isHidden": false,
"isFeatured": true,
"featuredAt": "2026-06-01T09:00:00.000Z"
}
],
"pagination": { "limit": 12, "offset": 0, "count": 12, "total": 240 }
}duration is the ISO 8601 duration string from YouTube (e.g. PT12M34S). isShort is true when YouTube lists the video as a Short.
Get a video
GET /api/v1/videos/{videoId}Returns a single video including its channel context (channel.websiteId, channel.youtubeChannelName).
Curate a video
PATCH /api/v1/videos/{videoId}| Field | Type | Notes |
|---|---|---|
isHidden | boolean | Hide/unhide the video on the site (survives syncs) |
isFeatured | boolean | Feature it on the homepage — max 3 per website |
At least one field is required. Featuring a fourth video fails with 400 bad_request.
curl -X PATCH https://www.yabby.page/api/v1/videos/{videoId} \
-H "Authorization: Bearer yabby_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "isFeatured": true }'Get a video transcription
GET /api/v1/videos/{videoId}/transcriptionReturns the video's transcription. On first access it is fetched from YouTube (which can take a few seconds) and cached; subsequent requests are instant. Great raw material for show notes, summaries, or blog posts.
{
"data": {
"videoId": "…",
"youtubeVideoId": "dQw4w9WgXcQ",
"transcription": "…full transcript text…"
}
}