HonestHook

Free API key (1,000/mo)Sign in

Home · Docs · Endpoints · youtube/channel/playlists

youtube/channel/playlists — the channel's playlists, and their sizes

The playlists a channel publishes, by channel id, each with the number of videos it holds. The index you read before spending a call on any one list.

The call

PathGET /api/v1/youtube/channel/playlists
Catalogue idyoutube/channel/playlists
Cost1 credit per call. A call that finds nothing costs nothing.
KeyRequired — Authorization: Bearer hk_live_...

Parameters (1)

NameInRequired
channel_idqueryyes

That list is the whole list, and anything else is ignored in silence. An undeclared parameter is not rejected — it produces no error, no warning and no filtering. Check a parameter against this table before assuming a narrower result came back.

What the parameter list does not tell you

THIS IS THE CHEAP STEP BEFORE THE EXPENSIVE ONE. It tells you which playlists exist and how big each is, for one credit, so you can pick before paging. A real call on 4 October 2026 returned 13 playlists for one channel. Then `youtube/playlist` with the `PL…` id reads whichever one you chose.

⚠️ `metrics` IS NOT EMPTY HERE, AND IT HOLDS A DIFFERENT KIND OF NUMBER. On that call one playlist came back with `metrics.videos: 3`. That is a COUNT OF CONTENTS, not an engagement counter — nobody liked a playlist three times. It sits in `metrics` because that is where per-item numbers live in this envelope, and reading it as likes or views would be wrong by category rather than by amount. Compare with the four routes whose `metrics` is `{}`: there the absence is of engagement data; here the presence is of something else entirely.

`channel_id`, not a handle, and not a playlist id. The three ids in this family are easy to mix up: `UC…` is a channel, `PL…` is a playlist, and the eleven-character string is a video. Each route names which one it takes, and a mismatched id spends the call.

Why there is no success body on this page

The 200 body for this endpoint is not transcribed here. Reading it needs a client key, and there is no client key on the machine these pages were built from — internal keys exist only as hashes, by design. An example we never received would look exactly like one we did, so instead of composing one, the response shape is documented field by field on the schema pages below. Those are generated from the contract and tested against it in both directions; an invented example would be tested by nothing.

Response shapes (3)

Error codes (8)

Every one of them carries the same body shape: ApiError. The error value is a stable string you can branch on — branch on that, never on the message text.

400 · 401 · 402 · 404 · 405 · 451 · 503 · 502

Machine-readable

This endpoint is in /openapi.json (OpenAPI 3.1), with its cost on the operation itself. If you are generating a client, use the spec rather than this page — and note that the spec is filtered by what is switched on right now, so it is the better answer to "can I call this today".

The other 18 endpoint pages

archive/trends · archive/movers · archive/coverage · profile/history · youtube/channel · pinterest/boards · bluesky/post · tiktok/post · tiktok/search_suggestions · tiktok/video_screen_text · tiktok/post_transcript · youtube/video · youtube/channel/videos · youtube/playlist · youtube/channel/shorts · youtube/channel/lives · youtube/video/comments · youtube/video/comment/replies

← All endpoint pages · Recipes · Schemas · Full docs