Home · Docs · Endpoints · youtube/channel
youtube/channel — a public channel, with the subscriber count
The YouTube route, and the one whose path breaks the convention every other platform follows.
The call
| Path | GET /api/v1/youtube/channel |
|---|---|
| Catalogue id | youtube/channel |
| Cost | 1 credit per call. A call that finds nothing costs nothing. |
| Key | Required — Authorization: Bearer hk_live_... |
Parameters (1)
| Name | In | Required |
|---|---|---|
handle | query | yes |
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
THE ENDPOINT IS `youtube/channel`, NOT `youtube/profile`, and the served path is `/channel`. Every other platform in this API answers profiles at `/{platform}/profile`; YouTube does not, because a channel is not a profile in YouTube's own model. An earlier generator built paths by convention and would have published `/api/v1/youtube/profile`, a path that does not exist. The catalogue now writes paths out rather than deducing them, for this reason.
`followers` IS NULL WHEN THE CHANNEL HIDES THE COUNT, and that null is load-bearing. YouTube's API ships `subscriberCount: "0"` for a channel with the count hidden, which a naive read turns into a published zero — a concrete claim that the channel has no subscribers. Null says we could not read it, which is the truth. The `Author` schema page carries the same note for the other ten platforms.
Google also rounds `subscriberCount` above a thousand, so the number you get is the number YouTube publishes, not an exact headcount. That rounding is upstream and there is no public surface with the precise figure — we do not have a better number to give you and do not pretend otherwise.
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)
Author— The normalised profile shape, identical across all platforms. All twelve fields are nullable, and that is the design: a field we cannot read comes back null, never 0, because a zero would be a claim about the account.ProfileEnvelope— The profile envelope carries the credit accounting that the posts envelope does not: what this call cost, what is left of the monthly allowance, and what you bought.ApiError— Every 4xx and 5xx from the API carries this object. The `error` value is a stable string you can branch on; the extra fields appear only for the errors that have something to report.
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 6 endpoint pages
archive/trends · archive/movers · archive/coverage · profile/history · pinterest/boards · bluesky/post