Youtube channels

Use when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/youtube-channels.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit ZeroPointRepo/youtube-skills/skills/youtube-channels#main ~/.claude/skills/youtube-channels

For one project only, change the path to .claude/skills/youtube-channels.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Youtube channels

Show the full text311 lines
namedescriptionversionuser-invocablecompatibilityrequired_environment_variablesmetadata
youtube-channelsUse when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID. Also use when the user names a creator and wants to explore their content or monitor their uploads. Not for creating channels or account management.1.6.3trueRequires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed. - name: TRANSCRIPT_API_KEY prompt: Your TranscriptAPI key (starts with sk_) help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you. required_for: all API requests{"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","channels","video","uploads","creator","browsing"],"category":"media"}}

YouTube Channels

YouTube channel tools via TranscriptAPI.com.

Setup

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Required Headers

Every request needs two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • User-Agent: your agent's name and version if known (e.g. HermesAgent/0.11.0, ClaudeCode/1.0). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.

API Reference

Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.

All channel endpoints accept flexible input — @handle, channel URL, or UC... channel ID. No need to resolve first.

GET /api/v2/youtube/channel/resolve — FREE

Convert @handle, URL, or UC... ID to canonical channel ID.

GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
input yes 1-200 chars — @handle, URL, or UC... ID

Response:

{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }

If input is already UC[a-zA-Z0-9_-]{22}, returns immediately.

GET /api/v2/youtube/channel/latest — FREE

Latest 15 videos via RSS with exact stats.

GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID

Response:

{
  "channel": {
    "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
    "title": "TED",
    "author": "TED",
    "url": "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q",
    "published": "2006-04-17T00:00:00Z"
  },
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Latest Video Title",
      "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
      "author": "TED",
      "published": "2026-01-30T16:00:00Z",
      "updated": "2026-01-31T02:00:00Z",
      "link": "https://www.youtube.com/watch?v=abc123xyz00",
      "description": "Full video description...",
      "thumbnail": { "url": "https://i1.ytimg.com/vi/.../hqdefault.jpg" },
      "viewCount": "2287630",
      "starRating": {
        "average": "4.92",
        "count": "15000",
        "min": "1",
        "max": "5"
      }
    }
  ],
  "result_count": 15
}

Great for monitoring channels — free and gives exact view counts + ISO timestamps.

GET /api/v2/youtube/channel/videos — 1 credit/page

Paginated list of a channel's feed (~100 per page). Use tab to pick uploads (default), Shorts, or live streams, and the optional sort to order the Videos tab by latest, popular, or oldest.

# First page
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Most-viewed first (channel Videos tab, ~30 per page)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Next pages (repeat the same tab AND sort)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
tab no videos (default), shorts, or streams
sort no latest, popular, or oldest (omit for the uploads feed)
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. When paginating, pass the same tab and sort on every page.

Sorting. Add sort=latest, popular, or oldest to channel/videos to get a channel's videos in the order you want, for example its most-popular uploads first. A sorted page returns about 30 videos (an unsorted page returns about 100), and every page costs the same 1 credit.

When paging, send the same sort on each request.

Per-item fields by feed:

Field uploads (no sort) tab=videos + sort tab=streams tab=shorts
lengthText populated populated populated (LIVE while live) null
publishedTimeText populated populated populated (Streamed 2 years ago) null
viewCountText populated populated populated (null while live) populated
channelId / channelTitle / channelHandle / index populated null null null
members_only always false true on membership videos true on membership streams always false

members_only is true only when YouTube badges the item "Members only". Such items carry no viewCountText, because YouTube does not publish view counts for membership content.

Response:

{
  "results": [{
    "videoId": "abc123xyz00",
    "title": "Video Title",
    "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
    "channelTitle": "TED",
    "channelHandle": "@TED",
    "lengthText": "15:22",
    "viewCountText": "3.2M views",
    "publishedTimeText": "2 years ago",
    "thumbnails": [...],
    "index": "0",
    "members_only": false
  }],
  "playlist_info": {"title": "Uploads from TED", "numVideos": "5000", "ownerName": "TED"},
  "continuation_token": "4qmFsgKlARIYVVV1...",
  "has_more": true
}

Keep calling with continuation until has_more: false.

GET /api/v2/youtube/channel/search — 1 credit

Search within a specific channel.

GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID
q yes 1-200 chars
limit no 1-50 (default 30)

GET /api/v2/youtube/channel/info — 1 credit

A channel's profile: title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and the tabs it exposes.

GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID

Response:

{
  "channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
  "title": "TED",
  "handle": "@TED",
  "verified": true,
  "subscriberCountText": "23.8M subscribers",
  "videoCountText": "4,300 videos",
  "description": "The TED Talks channel features ...",
  "tags": ["TED", "TED Talks"],
  "thumbnails": [...],
  "banners": [...],
  "availableTabs": ["videos", "shorts", "playlists", "community"]
}

Counts are display strings and null when YouTube hides them — never 0. Check availableTabs before calling channel/sections or channel/videos with a tab.

GET /api/v2/youtube/channel/playlists — 1 credit/page

List the playlists shown on a channel — useful for finding a playlist ID to feed into playlist/videos.

GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. Returns results (playlistId, title, url, videoCountText, thumbnails), continuation_token, has_more.

GET /api/v2/youtube/channel/posts — 1 credit/page

List a channel's community (Posts tab) content — text, publish time, like counts, and any attachment (image, video, playlist, or poll).

GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. Channels with no community tab return an empty results list (not an error).

GET /api/v2/youtube/channel/sections — 1 credit

The curated shelves on a channel's Home page (or its podcasts/releases pages) — each shelf holds videos, playlists, shorts, or featured channels, in the channel's own order. Not paginated.

GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Default Validation
channel yes — @handle, channel URL, or UC... ID
tab no featured featured (Home), podcasts, releases

podcasts and releases only exist on channels that have them (empty results otherwise — check availableTabs from channel/info first).

Typical workflow

# 1. Check latest uploads (free — pass @handle directly)
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# 2. Get transcript of recent video
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Errors

Code Meaning Action
400 Invalid param combination Both or neither channel/continuation
402 No credits transcriptapi.com/billing
403/1010 Cloudflare block Add or fix User-Agent header
404 Channel not found Check handle or URL
408 Timeout Retry once
422 Invalid channel identifier Check param format

Free tier: 100 credits, 300 req/min. Free endpoints (resolve, latest) require auth but don't consume credits.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md

1---
2name: youtube-channels
3description: "Use when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID. Also use when the user names a creator and wants to explore their content or monitor their uploads. Not for creating channels or account management."
4version: "1.6.3"
5user-invocable: true
6compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
7required_environment_variables:
8 - name: TRANSCRIPT_API_KEY
9 prompt: Your TranscriptAPI key (starts with sk_)
10 help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.
11 required_for: all API requests
12metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","channels","video","uploads","creator","browsing"],"category":"media"}}
13---
14 
15# YouTube Channels
16 
17YouTube channel tools via [TranscriptAPI.com](https://transcriptapi.com).
18 
19## Setup
20 
21If `$TRANSCRIPT_API_KEY` is not set, read [references/auth-setup.md](references/auth-setup.md) and follow the instructions there to get and store the key.
22 
23## Required Headers
24 
25Every request needs two headers:
26 
27- **Authorization:** `Bearer $TRANSCRIPT_API_KEY`
28- **User-Agent:** your agent's name and version if known (e.g. `HermesAgent/0.11.0`, `ClaudeCode/1.0`). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.
29 
30## API Reference
31 
32Full OpenAPI spec: [transcriptapi.com/openapi.json](https://transcriptapi.com/openapi.json) — consult this for the latest parameters and schemas.
33 
34All channel endpoints accept flexible input — `@handle`, channel URL, or `UC...` channel ID. No need to resolve first.
35 
36## GET /api/v2/youtube/channel/resolve — FREE
37 
38Convert @handle, URL, or UC... ID to canonical channel ID.
39 
40```http
41GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
42Authorization: Bearer $TRANSCRIPT_API_KEY
43User-Agent: YourAgent/1.0
44```
45 
46| Param | Required | Validation |
47| ------- | -------- | --------------------------------------- |
48| `input` | yes | 1-200 chars — @handle, URL, or UC... ID |
49 
50**Response:**
51 
52```json
53{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }
54```
55 
56If input is already `UC[a-zA-Z0-9_-]{22}`, returns immediately.
57 
58## GET /api/v2/youtube/channel/latest — FREE
59 
60Latest 15 videos via RSS with exact stats.
61 
62```http
63GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
64Authorization: Bearer $TRANSCRIPT_API_KEY
65User-Agent: YourAgent/1.0
66```
67 
68| Param | Required | Validation |
69| --------- | -------- | ----------------------------------------- |
70| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
71 
72**Response:**
73 
74```json
75{
76 "channel": {
77 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
78 "title": "TED",
79 "author": "TED",
80 "url": "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q",
81 "published": "2006-04-17T00:00:00Z"
82 },
83 "results": [
84 {
85 "videoId": "abc123xyz00",
86 "title": "Latest Video Title",
87 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
88 "author": "TED",
89 "published": "2026-01-30T16:00:00Z",
90 "updated": "2026-01-31T02:00:00Z",
91 "link": "https://www.youtube.com/watch?v=abc123xyz00",
92 "description": "Full video description...",
93 "thumbnail": { "url": "https://i1.ytimg.com/vi/.../hqdefault.jpg" },
94 "viewCount": "2287630",
95 "starRating": {
96 "average": "4.92",
97 "count": "15000",
98 "min": "1",
99 "max": "5"
100 }
101 }
102 ],
103 "result_count": 15
104}
105```
106 
107Great for monitoring channels — free and gives exact view counts + ISO timestamps.
108 
109## GET /api/v2/youtube/channel/videos — 1 credit/page
110 
111Paginated list of a channel's feed (~100 per page). Use `tab` to pick uploads (default), Shorts, or live streams, and the optional `sort` to order the Videos tab by latest, popular, or oldest.
112 
113```http
114# First page
115GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos
116Authorization: Bearer $TRANSCRIPT_API_KEY
117User-Agent: YourAgent/1.0
118 
119# Most-viewed first (channel Videos tab, ~30 per page)
120GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
121Authorization: Bearer $TRANSCRIPT_API_KEY
122User-Agent: YourAgent/1.0
123 
124# Next pages (repeat the same tab AND sort)
125GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
126Authorization: Bearer $TRANSCRIPT_API_KEY
127User-Agent: YourAgent/1.0
128```
129 
130| Param | Required | Validation |
131| -------------- | ----------- | --------------------------------------------- |
132| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
133| `tab` | no | `videos` (default), `shorts`, or `streams` |
134| `sort` | no | `latest`, `popular`, or `oldest` (omit for the uploads feed) |
135| `continuation` | conditional | non-empty (next pages) |
136 
137Provide exactly one of `channel` or `continuation`, not both. When paginating, pass the same `tab` **and** `sort` on every page.
138 
139**Sorting.** Add sort=latest, popular, or oldest to channel/videos to get a channel's videos in the order you want, for example its most-popular uploads first. A sorted page returns about 30 videos (an unsorted page returns about 100), and every page costs the same 1 credit.
140 
141When paging, send the same sort on each request.
142 
143**Per-item fields by feed:**
144 
145| Field | uploads (no `sort`) | `tab=videos` + `sort` | `tab=streams` | `tab=shorts` |
146| --- | --- | --- | --- | --- |
147| `lengthText` | populated | populated | populated (`LIVE` while live) | `null` |
148| `publishedTimeText` | populated | populated | populated (`Streamed 2 years ago`) | `null` |
149| `viewCountText` | populated | populated | populated (`null` while live) | populated |
150| `channelId` / `channelTitle` / `channelHandle` / `index` | populated | `null` | `null` | `null` |
151| `members_only` | always `false` | `true` on membership videos | `true` on membership streams | always `false` |
152 
153`members_only` is `true` only when YouTube badges the item "Members only". Such items carry **no `viewCountText`**, because YouTube does not publish view counts for membership content.
154 
155**Response:**
156 
157```json
158{
159 "results": [{
160 "videoId": "abc123xyz00",
161 "title": "Video Title",
162 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
163 "channelTitle": "TED",
164 "channelHandle": "@TED",
165 "lengthText": "15:22",
166 "viewCountText": "3.2M views",
167 "publishedTimeText": "2 years ago",
168 "thumbnails": [...],
169 "index": "0",
170 "members_only": false
171 }],
172 "playlist_info": {"title": "Uploads from TED", "numVideos": "5000", "ownerName": "TED"},
173 "continuation_token": "4qmFsgKlARIYVVV1...",
174 "has_more": true
175}
176```
177 
178Keep calling with `continuation` until `has_more: false`.
179 
180## GET /api/v2/youtube/channel/search — 1 credit
181 
182Search within a specific channel.
183 
184```http
185GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
186Authorization: Bearer $TRANSCRIPT_API_KEY
187User-Agent: YourAgent/1.0
188```
189 
190| Param | Required | Validation |
191| --------- | -------- | ----------------------------------------- |
192| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
193| `q` | yes | 1-200 chars |
194| `limit` | no | 1-50 (default 30) |
195 
196## GET /api/v2/youtube/channel/info — 1 credit
197 
198A channel's profile: title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and the tabs it exposes.
199 
200```http
201GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
202Authorization: Bearer $TRANSCRIPT_API_KEY
203User-Agent: YourAgent/1.0
204```
205 
206| Param | Required | Validation |
207| --------- | -------- | -------------------------------------- |
208| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
209 
210**Response:**
211 
212```json
213{
214 "channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
215 "title": "TED",
216 "handle": "@TED",
217 "verified": true,
218 "subscriberCountText": "23.8M subscribers",
219 "videoCountText": "4,300 videos",
220 "description": "The TED Talks channel features ...",
221 "tags": ["TED", "TED Talks"],
222 "thumbnails": [...],
223 "banners": [...],
224 "availableTabs": ["videos", "shorts", "playlists", "community"]
225}
226```
227 
228Counts are display strings and `null` when YouTube hides them — never `0`. Check `availableTabs` before calling `channel/sections` or `channel/videos` with a `tab`.
229 
230## GET /api/v2/youtube/channel/playlists — 1 credit/page
231 
232List the playlists shown on a channel — useful for finding a playlist ID to feed into `playlist/videos`.
233 
234```http
235GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
236Authorization: Bearer $TRANSCRIPT_API_KEY
237User-Agent: YourAgent/1.0
238```
239 
240| Param | Required | Validation |
241| -------------- | ----------- | --------------------------------------- |
242| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
243| `continuation` | conditional | non-empty (next pages) |
244 
245Provide exactly one of `channel` or `continuation`, not both. Returns `results` (`playlistId`, `title`, `url`, `videoCountText`, `thumbnails`), `continuation_token`, `has_more`.
246 
247## GET /api/v2/youtube/channel/posts — 1 credit/page
248 
249List a channel's community (Posts tab) content — text, publish time, like counts, and any attachment (image, video, playlist, or poll).
250 
251```http
252GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
253Authorization: Bearer $TRANSCRIPT_API_KEY
254User-Agent: YourAgent/1.0
255```
256 
257| Param | Required | Validation |
258| -------------- | ----------- | --------------------------------------- |
259| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
260| `continuation` | conditional | non-empty (next pages) |
261 
262Provide exactly one of `channel` or `continuation`, not both. Channels with no community tab return an empty `results` list (not an error).
263 
264## GET /api/v2/youtube/channel/sections — 1 credit
265 
266The curated shelves on a channel's Home page (or its `podcasts`/`releases` pages) — each shelf holds videos, playlists, shorts, or featured channels, in the channel's own order. Not paginated.
267 
268```http
269GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
270Authorization: Bearer $TRANSCRIPT_API_KEY
271User-Agent: YourAgent/1.0
272```
273 
274| Param | Required | Default | Validation |
275| --------- | -------- | ------------ | ---------------------------------------- |
276| `channel` | yes | — | `@handle`, channel URL, or `UC...` ID |
277| `tab` | no | `featured` | `featured` (Home), `podcasts`, `releases` |
278 
279`podcasts` and `releases` only exist on channels that have them (empty `results` otherwise — check `availableTabs` from `channel/info` first).
280 
281## Typical workflow
282 
283```http
284# 1. Check latest uploads (free — pass @handle directly)
285GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
286Authorization: Bearer $TRANSCRIPT_API_KEY
287User-Agent: YourAgent/1.0
288 
289# 2. Get transcript of recent video
290GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
291Authorization: Bearer $TRANSCRIPT_API_KEY
292User-Agent: YourAgent/1.0
293```
294 
295## Errors
296 
297| Code | Meaning | Action |
298| -------- | ------------------------------------------------------ | ------------------------------------ |
299| 400 | Invalid param combination | Both or neither channel/continuation |
300| 402 | No credits | transcriptapi.com/billing |
301| 403/1010 | Cloudflare block | Add or fix User-Agent header |
302| 404 | Channel not found | Check handle or URL |
303| 408 | Timeout | Retry once |
304| 422 | Invalid channel identifier | Check param format |
305 
306Free tier: 100 credits, 300 req/min. Free endpoints (resolve, latest) require auth but don't consume credits.
307 
308## Copy-paste examples
309 
310Every request in this file as a ready-to-run one-liner: [references/curl-examples.md](references/curl-examples.md)
311 

Discussion

Alternatives

Also in Channel growthSee all 320 in Content creator →
YouTube Channel OptimizerAudit and rewrite a YouTube channel end-to-end for 2026: name and @handle, banner (2560x1440 with the 1235x338 mobile/TV safe area), profile picture, About plus searchable keywords, trailer for non-subscribers vs featured video for subscribers, sections and playlist layout, watermark, links. Triggers on "optimize my YouTube channel", "rewrite my channel about", "fix my banner", "channel audit", "set my trailer". Converts a viewer into a subscriber. Not for writing a video title (use yt-title-optimizer).Creator · MITYouTube Description WriterWrite a full YouTube video description under 5,000 characters with a first-150-character hook (the only part visible before Show more, and what shows in search and suggested), timestamped chapters, naturally placed keywords, links, and a clear call to action. Covers long-form and YouTube Shorts. Becomes the create-post content that publishes with the video. Use to write or rework a description. Not for the title (use yt-title-optimizer) or the spoken opening (use yt-hook-scripter).Creator · MITYouTube Title OptimizerWrite high-CTR YouTube and YouTube Shorts titles under 100 characters using 2026 packaging formulas (curiosity-gap, number, how-I outcome, mistake/loss, transformation, versus). Balances curiosity with a real keyword, front-loads the click-deciding words for the 60-char mobile cutoff, and returns 3 to 5 A/B variants tagged by goal for Test and Compare. Use to title or rework a video. Not for the description (use yt-description-writer) or the thumbnail overlay (use yt-thumbnail-brief).Creator · MITTurn a pile of notes into an articleHand over your messy notes, transcripts and half-thoughts on a topic, and get back a finished article that flows from one point to the next.Content & docs · Business & ops · MIT