#What this API solves
The youtube/channel module focuses on channel-level intelligence:
resolve channel IDs, pull core info & settings, list uploads/playlists with practical filters,
inspect statistics, and run a lightweight, production-ready audit (best upload day/hour, median signals).
Results help you schedule mixes, benchmark performance, and avoid embedding issues.
#Endpoints & when to use them
#POST /v1/youtube/channel/find-id — Find Channel ID
- Best for: Converting
@handle/ vanity to canonicalchannelId (UC…). - Output:
{ "channel_id": "UC…" }. - Tip: Cache this mapping; most other endpoints accept either value, but canonicalizing simplifies storage.
#POST /v1/youtube/channel/info — Channel Info
- Best for: Bio cards, topic categories, country routing.
- Output:
{ id, title, description, keywords, topicCats[], topicCatsRaw[], country }. - Tip: Use
topicCatsto cluster channels (“Science and technology”, “Programming”).
#POST /v1/youtube/channel/videos — Latest Videos
- Best for: Build “latest” or “top this month” rails; seed audits.
- Filters:
order(date | viewCount | …),period(today/week/month/year), or customafter/before(RFC-3339 or YYYY-MM-DD). - Output: Array of
{ id, title, … }items.
#POST /v1/youtube/channel/playlists — Playlists
- Best for: Curatorial analysis (“which series drive views?”).
- Output:
{ playlists: [{ id, title, description, video_count, published_at }] }. - Tip: Sort by
videosto find evergreen series; filter by dates to compare seasons.
#POST /v1/youtube/channel/statistics — Statistics
- Best for: High-level counters for badges and sanity checks.
- Output:
{ subscribers, views, videos, hiddenSubs }.
#POST /v1/youtube/channel/settings — Channel Settings
- Best for: Localization defaults (language/country) and side-rail curation (featured channels).
- Output:
{ defaultLang, country, showRelatedChannels, featuredChannels[] }.
#POST /v1/youtube/channel/region-restrictions — Region Restrictions
- Best for: Compliance/UX gating at the channel level (e.g., kids content).
- Output:
{ madeForKids: boolean }.
#POST /v1/youtube/channel/search — Search Channels
- Best for: Discovery workflows; onboarding new sources.
- Filters:
order,period, or customafter/before. - Output:
{ results: [{ id, title, …}] }.
#POST /v1/youtube/channel/audit — Channel Audit
- Best for: Quickly infer optimal upload windows, typical lengths, and top performers over a period.
- Output:
{ bestUploadDay, bestUploadHourUTC, avgVideoLengthSec, topVideos[], language, country, category, categoryRaw }. - Tip: Pass
after/beforeto focus on a season or rebrand window.
#POST /v1/youtube/channel/subscribe-link-generator — Subscribe Link
- Best for: One-click subscribe CTA in your UI.
- Output:
{ url: "…?sub_confirmation=1" }.
#POST /v1/youtube/channel/thumbnail — Channel Thumbnail
- Best for: Channel cards, “featured creators” strips.
- Output:
{ url }(high-res avatar).
#Quick start
# 1) Resolve channel ID from @handle
curl -X POST "https://api.yeb.to/v1/youtube/channel/find-id" \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-API-Key: <YOUR_API_KEY>" \
-d '{ "query": "@GoogleDevelopers" }'
# 2) Latest videos this month, sorted by views
curl -X POST "https://api.yeb.to/v1/youtube/channel/videos" \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-API-Key: <YOUR_API_KEY>" \
-d '{ "channel":"UC_x5XG1OV2P6uZZ5FSM9Ttw", "order":"viewCount", "period":"month", "limit":25 }'
# 3) Playlists after a given date
curl -X POST "https://api.yeb.to/v1/youtube/channel/playlists" \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-API-Key: <YOUR_API_KEY>" \
-d '{ "channel":"GoogleDevelopers", "order":"videos", "after":"2024-11-01", "limit":25 }'
# 4) Channel audit across a custom window
curl -X POST "https://api.yeb.to/v1/youtube/channel/audit" \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-API-Key: <YOUR_API_KEY>" \
-d '{ "channel":"GoogleDevelopers", "after":"2025-01-01", "before":"2025-06-30" }'
#Parameters that actually matter
| Param | Type | Required | Practical guidance |
|---|---|---|---|
api_key |
string | Yes | Use server-side or sign short-lived edge tokens. |
channel |
string | Yes* | UC… ID or vanity (@handle). Not required for find-id / search. |
limit |
int | No | 1–50 (default varies). Keep UI grids tidy: 12/24/48. |
order |
string | No | For videos and search. Typical: date or viewCount. |
period |
string | No | Shortcut time filter: today | week | month | year. |
after/before |
date | No | RFC-3339 or YYYY-MM-DD; we normalize. Use to bracket seasons or editorial windows. |
query |
string | Yes* | For find-id/search: keywords or @handle. |
#Reading & acting on responses
#Audit — interpretation
{
"bestUploadDay": "Wednesday",
"bestUploadHourUTC": "17",
"avgVideoLengthSec": 412,
"topVideos": [{ "id":"3fumBcKC6RE","title":"…","views":5200000,"len_s":372 }],
"language": "en",
"country": "US",
"category": "Science and technology"
}
- Schedule: Publish near
bestUploadHourUTCfor the target market; A/B test ±2h. - Format: Use
avgVideoLengthSecto pick default mix lengths per channel. - Editorial: Promote a
topVideos[0]rerun in your weekly hub.
#Info — interpretation
{
"id":"UC_x5XG1OV2P6uZZ5FSM9Ttw",
"title":"Google Developers",
"topicCats":["Science and technology","Computer programming"],
"country":"US"
}
- Drive category pages from
topicCats; geotarget copy bycountry.
#Videos — interpretation
[
{ "id":"dQw4w9WgXcQ", "title":"…" },
{ "id":"kJQP7kiw5Fk", "title":"Despacito" }
]
- Pipe IDs to your
youtube/video/*endpoints (engagement, restrictions, audit, etc.).
#Playlists — interpretation
{
"playlists":[
{ "id":"PL590…", "title":"Google I/O 2025 – full sessions", "video_count":27, "published_at":"2025-05-14T12:03:44Z" }
]
}
- Sort by
video_countto detect successful series; feature them prominently.
#Statistics — interpretation
{ "subscribers":2500000, "views":150000000, "videos":320, "hiddenSubs":false }
- Use for creator badges and sanity checks; don’t re-poll too often (cache daily).
#Practical recipes
- Weekly mix planning: Pull
videosfor the lastweek, rank by engagement (via video API), schedule nearbestUploadHourUTC. - Channel onboarding:
find-id→info/settings→statisticssnapshot → seed playlists. - Seasonal check: Run
auditwithafter/beforearound a rebrand to compare cadence/length shifts.
#YouTube identifiers you’ll use
| Field | What it is | How to use |
|---|---|---|
channelId |
Canonical channel ID (starts with UC) |
https://www.youtube.com/channel/{channelId} |
@handle |
Vanity username | Resolve with /channel/find-id once; then persist channelId. |
playlistId |
Channel playlist identifier | https://www.youtube.com/playlist?list={playlistId} |
videoId |
11-char video ID | Used across youtube/video/* endpoints. |
#Errors & troubleshooting
400 "Missing "action" parameter"— Internal routing error; ensure endpoint path sets an action.400 "Missing "channel" parameter"— Providechannelfor all exceptfind-id/search.404 "Unable to resolve channel ID"— Vanity not found; tryfind-idor passUC…directly.422 "Invalid "order""— Use documented values (e.g.,date,viewCount).422 "Invalid "after" or "before" date"— Use RFC-3339 orYYYY-MM-DD; ensureafter <= before.404 "Channel has no recent videos"— Foraudit, widen date range or increase activity window.
#API Changelog (youtube/channel)
after/before now accept RFC-3339 or YYYY-MM-DD across videos, playlists, search, and audit. Clear 422s on invalid or inverted ranges.
order (date, viewCount, …) and period shortcuts (today/week/month/year).
/channel/audit accepts after/before to focus on seasons; topVideos capped at 10 with length in seconds.
{ playlists: [...] }; added sorting by videos/title.
Use the Playgrounds attached to each endpoint block on this page to experiment with your own channel / @handle.