Full monetization profile for one channel — what it sells, each method with its own evidence + source link, products, and store URLs. If the channel isn't classified yet it runs the classifier live (≤60s) and persists the result; pass ?skip_live=true to skip that and get an immediate unclassified response.
Path Parameters
Name
Type
Required
Description
channel_id
string
Required
YouTube channel id (UC…, 24 chars). Use /api/channels/resolve for handles/URLs.
Query Parameters
Name
Type
Required
Default
Description
skip_live
boolean
Optional
false
Skip the live classifier and return immediately (classified:false if not already known).
Analyze a YouTube video with AI vision — hooks, pacing, visual storytelling, on-screen text, B-roll usage, content strategy, and any other prompt-driven breakdown. Returns structured analysis text. Currently free during preview — no credit cost, no plan requirement — only an API key and the per-user concurrency cap apply. Repeat prompts on the same video within 2 hours reuse a cached upload automatically (faster on the backend, returns cached: true).
Request Body (JSON)
Name
Type
Required
Description
video_url
string
Required
YouTube video URL. Accepts watch links, youtu.be short links, and Shorts URLs.
prompt
string
Required
Plain-English instruction describing what to analyze. Max 4,000 characters.
media_resolution
string
Optional
Analysis fidelity: low (default, recommended for hook / pacing / strategy prompts) or default (higher visual detail at greater backend cost — useful when fine on-screen text or subtle visual cues matter).
Limits: Maximum video length is 3 hours. Live streams, private, deleted, and age-restricted videos are rejected with clear error messages. Concurrency cap applies (5 / 10 / 20 active jobs by tier).
Example Request (Hook breakdown)
curl -X POST "https://api.algrow.online/api/analyze-video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"prompt": "Break down the hook in the first 3 seconds. What grabs attention?",
"media_resolution": "low"
}'
Example Request (Pacing analysis on a Short)
curl -X POST "https://api.algrow.online/api/analyze-video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://youtube.com/shorts/abc123XYZ",
"prompt": "Identify the pacing, energy shifts, on-screen text timing, and where attention is most likely to drop."
}'
{
"success": true,
"job_id": "f12d4a8b-2e1f-44e1-9aa1-2dfa20c5c7d3",
"job_type": "video_analysis",
"status": "completed",
"analysis_text": "The opening 3 seconds use a hard cut from black to a wide shot of...",
"duration_seconds": 187.4,
"video_id": "dQw4w9WgXcQ",
"cached": false,
"completed_at": 1774203012.45
}
Processing time: Typically 5–25 seconds for Shorts, 30–90 seconds for 5-minute videos, several minutes for hour-long content. The first analysis on a video is slower than follow-up prompts on the same video (which hit the cache and skip download + upload). Poll /api/job-status/:job_id every 5 seconds for updates.
Caching: When you run multiple prompts on the same video_url within 2 hours, the source video is reused from cache — the response includes cached: true. Cache is keyed per (user, video) so each user pays the cold-path cost once per video per 2 hours.
200 Queued400 Validation / unsupported video401 Auth failed429 Concurrency cap
GET/api/terminated-channels/search
Search terminated/deleted YouTube channels. Returns channel metadata, growth metrics at time of termination, and up to 3 top videos per channel. Supports keyword matching and advanced filters. Available on all plans.
Query Parameters
Name
Type
Required
Default
Description
q
string
Required
—
Search query. Matches against channel titles and video titles. Comma-separated for multiple keywords.
languages
string
Optional
—
Filter by language. Comma-separated (e.g. English,Spanish)
sort
string
Optional
date_desc
Sort field and direction. Format: {field}_{asc|desc}. Fields: subs, views, videos, age, views_24h, subs_24h, views_48h, date, similarity (when using q)
page
integer
Optional
1
Page number (1-indexed, max 20)
per_page
integer
Optional
20
Results per page (max 50)
min_subs
integer
Optional
—
Minimum subscriber count
max_subs
integer
Optional
—
Maximum subscriber count
min_views
integer
Optional
—
Minimum total view count
max_views
integer
Optional
—
Maximum total view count
min_avg_views
integer
Optional
—
Minimum average views per video
max_avg_views
integer
Optional
—
Maximum average views per video
min_age
integer
Optional
—
Minimum channel age in days
max_age
integer
Optional
—
Maximum channel age in days
min_uploads
integer
Optional
—
Minimum number of videos
max_uploads
integer
Optional
—
Maximum number of videos
monetized
string
Optional
—
Filter by monetization status: yes or no
min_views_24h
integer
Optional
—
Minimum views gained in last 24h before termination
max_views_24h
integer
Optional
—
Maximum views gained in last 24h before termination
min_views_48h
integer
Optional
—
Minimum views gained in last 48h before termination
max_views_48h
integer
Optional
—
Maximum views gained in last 48h before termination