Deep-dive YouTube channel analysis via a job-based async API — performance metrics, content strategy insights, audience demographics, and revenue data.
Base URL: https://prod.dashboard.nexlev.io — see Authentication.
How It Works
The Channel Analysis API uses a two-step workflow:
- Create Analysis Job - Submit a channel ID to start the analysis process
- Get Analysis Result - Retrieve the completed analysis using the job ID
This asynchronous approach allows for complex data processing without timeout issues.
Create Channel Analysis Job
GET /api/external/channels/analysis/job/createDescription: Create a new channel analysis job. The analysis will be processed asynchronously and you can retrieve the results using the returned job_id.
Query Parameters:
channel_id(required) - The YouTube channel ID to analyzecURL Example:
curl "https://prod.dashboard.nexlev.io/api/external/channels/analysis/job/create?channel_id=UCBJycsmduvYEL83R_U4JriQ" \ -H "Authorization: Bearer YOUR_API_KEY"Status Code:
200 OKResponse Body:
[ { "job_id": "5558e178-4210-40c6-a776-d4b45f546dd4", "channel_id": "UCBJycsmduvYEL83R_U4JriQ", "cached": false, "message": "Job created successfully" } ]Response Fields:
job_id- Unique identifier for the analysis jobchannel_id- The channel ID that was submitted for analysiscached- Whether the result was found in cache (if true, instant)message- Status message about the job creation
Get Channel Analysis Result
GET /api/external/channels/analysis/job/statusDescription: Retrieve the status and results of a channel analysis job. Returns the complete analysis when the job is finished processing.
Query Parameters:
job_id(required) - The job ID returned from the Create Job requestcURL Example:
curl "https://prod.dashboard.nexlev.io/api/external/channels/analysis/job/status?job_id=5558e178-4210-40c6-a776-d4b45f546dd4" \ -H "Authorization: Bearer YOUR_API_KEY"Status Code:
200 OKResponse Body:
The response contains comprehensive channel analysis data organized into multiple strategic sections:
{ "job_id": "5558e178-4210-40c6-a776-d4b45f546dd4", "channel_id": "UCBJycsmduvYEL83R_U4JriQ", "status": "completed", "progress": 100, "cached": true, "result": { "job_id": "5558e178-4210-40c6-a776-d4b45f546dd4", "channel_id": "UCBJycsmduvYEL83R_U4JriQ", "project": "extension_channel_analysis", "completed_at": "2025-12-01T13:53:04.584446", "channel_data": { "channel_info": { "channel_id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "avatar_url": "https://yt3.googleusercontent.com/...", "subscriberCount": 20600000, "videosCount": 1783, "country": "United States", "channel_type": "mixed", "viewCount": 5127779625 }, "metrics": { "average_video_length": 99.34, "average_monthly_views": 4189904.55, "average_monthly_uploads": 88.39, "average_views_per_video": 47399.8, "last_upload_date": "2009-12-04T00:00:00Z", "first_upload_date": "2008-03-29T01:03:44Z" } }, "strategic_insights": { "channel_overview": { "channel_id": "UCBJycsmduvYEL83R_U4JriQ", "channel_name": "Marques Brownlee", "subscriber_count": 20600000, "analysis_timestamp": 1764597169.7445457 }, "content_strategy": { "content_buckets": [ { "bucket_name": "Smartphone Reviews & Impressions", "bucket_description": "Reviews, impressions, and discussions about smartphones", "confidence_score": 0.95, "video_count": 40, "videos": [...], "median_views": 4264080, "total_views": 171452808 } ], "total_buckets": 6 }, "title_format_strategy": { "format_groups": [ { "format_name": "iPhone [VERSION] [TYPE] Impressions: [CLAIM]", "format_description": "Titles featuring iPhone model followed by commentary", "video_count": 10, "videos": [...], "median_views": 4381283.5, "total_views": 60130063 } ], "top_performing_format": "iPhone [VERSION] [TYPE] Impressions: [CLAIM]" }, "audience_insights": { "viewer_feedback": { "what_viewers_liked": [ { "point_id": 1, "feedback_category": "Entertainment", "feedback_point": "Humor and Personality", "description": "Viewers appreciated the humorous and engaging personality", "confidence_score": 0.9, "supporting_comments_count": 5 } ], "what_viewers_disliked": [...] }, "sentiment_summary": { "total_comments_analyzed": 100, "total_videos_covered": 20, "overall_sentiment": "positive", "engagement_level": "high" } }, "performance_analysis": { "metrics": { "average_video_length_minutes": 13.19, "average_title_length_characters": 37.9 }, "top_performing_videos": { "average_length_minutes": 11.2, "average_title_characters": 33.6, "most_common_hook_type": "Controversial Statement", "most_common_narrative_arc": "Setup–Conflict–Resolution", "video_count": 5 }, "comparison_insights": {...} }, "script_blueprint": { "based_on": "Top performing videos analysis", "recommended_stages": [ { "stage": "Hook", "purpose": "To grab the audience's attention and spark curiosity", "recommended_length_seconds": 30, "winning_formula": "Beginning with [SHOCKING_CLAIM] about [CONTROVERSIAL_TOPIC]", "successful_examples": [...] } ] }, "ai_strategic_analysis": { "strategic_recommendations": { "performance_patterns": "Detailed analysis of performance patterns...", "content_formula_discovery": "Winning content templates...", "audience_behavior_insights": "Sentiment analysis insights...", "strategic_opportunities": "Actionable recommendations..." } }, "suggested_topics": { "topics": [ { "title": "The Smart Glasses Dilemma", "description": "Exploring challenges and market viability of smart glasses" } ], "total_topics": 10 }, "niche_analysis": { "future_competition_score": 99, "niche_score": null } } } }Top-Level Response Fields:
job_id- Unique identifier for the analysis job (same value you passed asjob_id)channel_id- The channel ID that was analyzedstatus- Job processing status (e.g."completed","processing")progress- Completion percentage (0-100)cached- Whether this result was served from cacheresult.project- Internal analysis pipeline identifierresult.completed_at- ISO 8601 timestamp of when the analysis finishedresult.channel_data/result.strategic_insights- The full analysis payload — see the breakdown below
Response Structure Explained
The Channel Analysis response is organized into several key sections:
Section Description Use Case channel_dataBasic channel information and performance metrics Understanding channel size and output strategic_insights.content_strategyContent categorization with 6+ content buckets Identify successful content themes strategic_insights.title_format_strategyAnalysis of winning title patterns Optimize your video titles strategic_insights.audience_insightsViewer sentiment from 100+ comments Understand what resonates with audiences strategic_insights.performance_analysisTop vs bottom video comparisons Learn what makes videos succeed strategic_insights.script_blueprint5-stage video structure recommendations Create better-structured content strategic_insights.ai_strategic_analysisAI-powered growth recommendations Identify strategic opportunities strategic_insights.suggested_topics10 AI-generated video topic ideas Never run out of content ideas strategic_insights.niche_analysisCompetition scoring (0-100) Assess niche viability Key Metrics Explained
- Content Buckets: Videos grouped by theme with confidence scores (0-1)
- Format Groups: Title patterns with performance data and match scores
- Viewer Feedback: Categorized likes/dislikes with confidence scores
- Script Blueprint: Stage-by-stage content structure with timing recommendations
- Competition Score: 0-100 score indicating future competition level (higher = more competitive)
Error Responses
Status Code: 400 Bad Request
Description: The request was invalid or malformed.
{
"error": {
"code": 400,
"message": "Invalid channel ID format",
"details": "Channel ID must be a valid YouTube channel identifier"
}
}Status Code: 401 Unauthorized
Description: Authentication credentials are missing or invalid.
{
"error": {
"code": 401,
"message": "Unauthorized",
"details": "Invalid API key or credentials not provided"
}
}Status Code: 404 Not Found
Description: The job ID was not found or the analysis is still processing.
{
"error": {
"code": 404,
"message": "Job not found or still processing",
"details": "Please wait a moment and try again. Analysis jobs typically complete within 30-120 seconds."
}
}Status Code: 429 Too Many Requests
Description: You have exceeded your API rate limit.
{
"error": {
"code": 429,
"message": "Rate limit exceeded",
"details": "You have exceeded your API quota. Please try again later.",
"retryAfter": 3600
}
}Rate Limits
- Create Job: 100 requests per hour per API key
- Get Result: 500 requests per hour per API key
- Cached Results: Do not count against rate limits