yabby logo

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}/videos

Query parameters:

ParameterTypeDefaultNotes
limitnumber50Page size, max 100
offsetnumber0Pagination offset
querystring—Search in title and description
channelIduuid—Only videos of one channel
featuredboolean—Only featured (true) or non-featured (false) videos
includeHiddenbooleanfalseAlso return hidden videos
sortenumnew_to_oldnew_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}
FieldTypeNotes
isHiddenbooleanHide/unhide the video on the site (survives syncs)
isFeaturedbooleanFeature 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}/transcription

Returns 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…"
  }
}

On this page