Nexlev Logo

Docs

Search documentation

Search docs by page title or heading

Channel Analysis API

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:

  1. Create Analysis Job - Submit a channel ID to start the analysis process
  2. Get Analysis Result - Retrieve the completed analysis using the job ID

This asynchronous approach allows for complex data processing without timeout issues.

1

Create Channel Analysis Job

GET /api/external/channels/analysis/job/create

Description: 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 analyze

cURL Example:

curl "https://prod.dashboard.nexlev.io/api/external/channels/analysis/job/create?channel_id=UCBJycsmduvYEL83R_U4JriQ" \
  -H "Authorization: Bearer YOUR_API_KEY"

🥞 Quota Cost: 20 quota per request — see Rate Limits & Quota.

Status Code: 200 OK

Response 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 job
  • channel_id - The channel ID that was submitted for analysis
  • cached - Whether the result was found in cache (if true, instant)
  • message - Status message about the job creation
2

Get Channel Analysis Result

GET /api/external/channels/analysis/job/status

Description: 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 request

cURL 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"

🥞 Quota Cost: 1 quota per request — see Rate Limits & Quota.

Status Code: 200 OK

Response 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 as job_id)
  • channel_id - The channel ID that was analyzed
  • status - Job processing status (e.g. "completed", "processing")
  • progress - Completion percentage (0-100)
  • cached - Whether this result was served from cache
  • result.project - Internal analysis pipeline identifier
  • result.completed_at - ISO 8601 timestamp of when the analysis finished
  • result.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:

SectionDescriptionUse Case
channel_dataBasic channel information and performance metricsUnderstanding channel size and output
strategic_insights.content_strategyContent categorization with 6+ content bucketsIdentify successful content themes
strategic_insights.title_format_strategyAnalysis of winning title patternsOptimize your video titles
strategic_insights.audience_insightsViewer sentiment from 100+ commentsUnderstand what resonates with audiences
strategic_insights.performance_analysisTop vs bottom video comparisonsLearn what makes videos succeed
strategic_insights.script_blueprint5-stage video structure recommendationsCreate better-structured content
strategic_insights.ai_strategic_analysisAI-powered growth recommendationsIdentify strategic opportunities
strategic_insights.suggested_topics10 AI-generated video topic ideasNever 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"
  }
}

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