Analysis Tools

Monetization checks, video analysis, and terminated-channel search.

llms.txt Full docs for LLMs

GET /api/channel-monetization/:channel_id

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
NameTypeRequiredDescription
channel_idstringRequiredYouTube channel id (UC…, 24 chars). Use /api/channels/resolve for handles/URLs.
Query Parameters
NameTypeRequiredDefaultDescription
skip_livebooleanOptionalfalseSkip the live classifier and return immediately (classified:false if not already known).
Example Request
curl "https://api.algrow.online/api/channel-monetization/UCX6OQ3DkcsbYNE6H8uQQuVA" \ -H "Authorization: Bearer YOUR_API_KEY"
200 Success 401 Auth failed
GET /api/channel-cms/:channel_id

Check whether a channel is run through a CMS / multi-channel network — is it managed, which network runs it, and what other channels that network operates. Backed by a database of 327,000+ pre-checked longform channels, so most lookups return instantly. A channel we haven't checked yet triggers a live check (10–60 seconds) and the verdict is saved for next time; pass ?refresh=1 to force a fresh live check on an already-checked channel. Pass ?full_network=1 to get the network's complete roster instead of the 5-channel sample.

Path Parameters
NameTypeRequiredDescription
channel_idstringRequiredYouTube channel id (UC…, 24 chars). Use /api/channels/resolve for handles/URLs.
Query Parameters
NameTypeRequiredDefaultDescription
refreshbooleanOptionalfalseRun a fresh live check even if the channel already has a stored verdict. Counts against the hourly live-check limit.
full_networkbooleanOptionalfalseReturn the complete network roster as network.members — every managed channel we know under this owner, no cap — instead of the 5-channel other_members_sample. Professional and Ultimate only; ignored on Starter.
Same owner = same network. Two channels are run by the same network if and only if their owner.oid values match. Use the oid, not the name, to group channels.
Plan limits: Professional and Ultimate get unlimited stored lookups; live checks are limited to 30 per hour. Starter gets 5 lookups per day, every one checked live (slower), and the response contains the verdict and owner only — no network object. Over the limit returns 429 with code upgrade_required (Starter daily cap) or rate_limited (hourly live-check cap).
Example Request
curl "https://api.algrow.online/api/channel-cms/UCX6OQ3DkcsbYNE6H8uQQuVA" \ -H "Authorization: Bearer YOUR_API_KEY"
Response 200 (managed) 200
{ "success": true, "channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA", "status": "managed", "checked_at": "2026-08-12T14:03:22Z", "checked_live": false, "owner": { "oid": "a1b2c3d4e5f6a7b8c9d0e1f2", "name": "Example Network" }, "network": { "member_count": 42, "other_members_sample": [ { "channel_id": "UCyyyyyyyyyyyyyyyyyyyyyy", "name": "History Uncovered", "subscribers": 215000, "avg_views": 480000 } ] } }
Response Fields
FieldTypeDescription
successbooleanWhether the request succeeded
channel_idstringYouTube channel ID that was checked
statusstringmanaged, not_managed, or unchecked. Unchecked responses include a hint explaining how to get a verdict (retry, or pass ?refresh=1).
checked_atstringWhen the verdict was recorded (ISO 8601)
checked_livebooleanWhether this request ran a live check (vs a stored verdict)
ownerobjectThe network running the channel: oid (stable owner id), name, and the owner's type / industry. name can be null for a network we've never seen before.
notestringOccasional plain-language line explaining a verdict that could otherwise look surprising.
networkobjectManaged channels only: member_count plus other_members_sample — the 5 biggest other channels the same network operates, each with channel_id, name, subscribers, avg_views. With ?full_network=1 the sample is replaced by members — the complete roster, same fields per channel. Not included on Starter.
200 Success 401 Auth failed 429 Limit reached
GET /api/cms-networks

Browse and search CMS / multi-channel networks directly — the network-centric counterpart to /api/channel-cms, which starts from a channel. By default you get a list of networks matching your filters; pass ?oid= to switch to detail mode and see one network with its top member channels (up to 100, biggest first). Counts include only channels verified as managed by that owner. Owner emails are never included.

Query Parameters
NameTypeRequiredDefaultDescription
qstringOptionalFilter networks by name (case-insensitive substring match).
oidstringOptionalSwitch to detail mode: return that one network plus its top member channels, up to 100, biggest first. Use the oid values from list responses or from /api/channel-cms.
min_channelsintegerOptional2List mode: only include networks with at least this many known channels.
sortstringOptionalchannelsList mode ordering: channels (most member channels first) or subscribers (largest combined subscriber count first).
limitintegerOptional25List mode: number of networks to return, max 100.
Plan limits: Professional and Ultimate only. On lower plans the endpoint returns 403 with code upgrade_required.
Example Request (list, name search)
curl "https://api.algrow.online/api/cms-networks?q=muse" \ -H "Authorization: Bearer YOUR_API_KEY"
Response 200 (list mode) 200
{ "success": true, "count": 1, "networks": [ { "oid": "a1b2c3d4e5f6a7b8c9d0e1f2", "name": "Example Network", "type": "CONTENT_OWNER_TYPE_COMPANY", "industry": "INDUSTRY_TYPE_WEB", "member_count": 42, "total_subscribers": 18400000 } ] }
Response Fields
FieldTypeDescription
successbooleanWhether the request succeeded
countintegerList mode: number of networks returned
networksarrayList mode: networks matching your filters, each with oid, name, type, industry, member_count, total_subscribers.
networkobjectDetail mode (?oid=): one network with the same fields as a list entry plus members — its member channels, up to 100, biggest first, each with channel_id, name, subscribers, avg_views, language, category.
200 Success 401 Auth failed 403 Plan required 404 Network not found
POST /api/analyze-video

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)
NameTypeRequiredDescription
video_urlstringRequiredYouTube video URL. Accepts watch links, youtu.be short links, and Shorts URLs.
promptstringRequiredPlain-English instruction describing what to analyze. Max 4,000 characters.
media_resolutionstringOptionalAnalysis 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." }'
Response 200 200
{ "success": true, "job_id": "f12d4a8b-2e1f-44e1-9aa1-2dfa20c5c7d3", "status": "pending", "duration_seconds": 187.4, "message": "Video analysis queued. Poll /api/job-status/{job_id} for progress." }
Completed Job Response (via /api/job-status/:job_id)
{ "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 Queued 400 Validation / unsupported video 401 Auth failed 429 Concurrency cap

esc
×

Buy More Credits

Boost
150
credits
$4.99
Good for:
  • ~12 min caption removal
Studio
1,000
credits
$31.49
Good for:
  • ~80 min caption removal