Awzor Media LLC Channels API

The channels API from Awzor Media LLC — 6 operation(s) for channels.

GitHub OpenAPI

Operations 6

GET /v1/channels/search Find channels by name or handle, free #
GET /v1/channels/{ref} A channel page: every recent upload scored, outliers, momentum #
GET /v1/channels/{ref}/outliers A channel's outliers, or outliers for a channel like it #
GET /v1/channels/{ref}/similar Channels like this one #
GET /v1/niches The niche explorer: every niche reported, with its numbers #
GET /v1/niches/{slug} A niche report counted from the shared index #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hookdetector-com:hookdetector-com-channels-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hookdetector-com-channels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hook Detector Channels API
  description: 'Find short-form hooks that already work.


    Sign up with a beta access code (ask at https://hookdetector.com/access): one POST to

    `/v1/accounts` with `access_code` gives an API key and free credits. The same operations are available as MCP tools at `/mcp`.


    Full guide, always current, at `/llms.txt`.'
  contact:
    name: Hook Detector
    url: https://hookdetector.com/
    email: contact@hookdetector.com
  version: 3.0.0
tags:
- name: Channels
paths:
  /v1/channels/search:
    get:
      tags:
      - Channels
      summary: Find channels by name or handle, free
      description: 'Channels by name or handle: the shared index first (with its usual views and how many

        of its videos are indexed), then YouTube''s own channel search when the index holds fewer

        than 5. Each result says its source. Free. MCP: search_channels.'
      operationId: search_channels_v1_channels_search_get
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
          minLength: 2
          maxLength: 100
          description: a channel's name or handle
          title: Q
        description: a channel's name or handle
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 50
          minimum: 1
          default: 20
          title: Limit
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelsOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: rate limited; see Retry-After
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/channels/{ref}:
    get:
      tags:
      - Channels
      summary: 'A channel page: every recent upload scored, outliers, momentum'
      description: 'A YouTube channel (its UC id, @handle or address): its subscribers and totals, every

        recent long upload scored against the channel itself (the multiple over the median of

        its other recent uploads, outliers at 2x and over), and its momentum (the newest 10

        uploads against the 10 before). Free. A channel read in the last day is served from the

        shared index. MCP: get_channel.'
      operationId: get_channel_v1_channels__ref__get
      parameters:
      - name: ref
        in: path
        required: true
        schema:
          type: string
          title: Ref
      - name: fresh
        in: query
        required: false
        schema:
          type: boolean
          description: read it now even if the index read it in the last day
          default: false
          title: Fresh
        description: read it now even if the index read it in the last day
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelPageOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: not found on this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: rate limited; see Retry-After
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '503':
          description: the language model is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/channels/{ref}/outliers:
    get:
      tags:
      - Channels
      summary: A channel's outliers, or outliers for a channel like it
      description: 'scope=own: the channel''s own uploads at 2x its median and over. scope=niche: outliers

        for my channel, the shared index''s videos from other channels closest to this channel''s

        titles (by meaning, else by shared words), at 3x and over by default. Free. MCP:

        channel_outliers.'
      operationId: channel_outliers_v1_channels__ref__outliers_get
      parameters:
      - name: ref
        in: path
        required: true
        schema:
          type: string
          title: Ref
      - name: scope
        in: query
        required: false
        schema:
          type: string
          description: own (this channel's) or niche (other channels like it)
          default: own
          title: Scope
        description: own (this channel's) or niche (other channels like it)
      - name: min_multiple
        in: query
        required: false
        schema:
          anyOf:
          - type: number
            maximum: 1000
            minimum: 0
          - type: 'null'
          title: Min Multiple
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 50
          minimum: 1
          default: 24
          title: Limit
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: not found on this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: rate limited; see Retry-After
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '503':
          description: the language model is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/channels/{ref}/similar:
    get:
      tags:
      - Channels
      summary: Channels like this one
      description: 'The channels in the shared index closest to this one: by the meaning of their titles

        (mean title vectors), else by shared title words, with a similarity 0 to 1. Never the

        channel itself. Free. MCP: similar_channels.'
      operationId: similar_channels_v1_channels__ref__similar_get
      parameters:
      - name: ref
        in: path
        required: true
        schema:
          type: string
          title: Ref
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 20
          minimum: 1
          default: 10
          title: Limit
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelsOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: not found on this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: rate limited; see Retry-After
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '503':
          description: the language model is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/niches:
    get:
      tags:
      - Channels
      summary: 'The niche explorer: every niche reported, with its numbers'
      description: 'Every niche a report was made for, biggest first, with its headline numbers (videos,

        channels, median views, the share at 10x and over, the 75th percentile multiple). Free.

        MCP: list_niches.'
      operationId: list_niches_v1_niches_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NichesOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/niches/{slug}:
    get:
      tags:
      - Channels
      summary: A niche report counted from the shared index
      description: 'A niche (lowercase words joined by hyphens, like personal-finance) counted from the

        shared index: videos and channels, median views, the share of measured videos at 10x their

        channel and over, the median and 75th percentile multiple, the top outliers, the channels

        with the most outliers, videos by month, each with its sample size. One report a month is

        kept. Under 20 videos it says the niche is thin. Free. MCP: niche_report.'
      operationId: niche_report_v1_niches__slug__get
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NicheOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: the key lacks the scope this call needs (insufficient_scope), or its credit_limit is spent (key_credit_limit_reached)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: not found on this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
components:
  schemas:
    ChannelsOut:
      properties:
        channels:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Channels
        credits:
          type: integer
          title: Credits
          default: 0
      additionalProperties: true
      type: object
      required:
      - channels
      title: ChannelsOut
      examples:
      - channels:
        - baseline_videos: 28
          channel_id: UCoOae5nYA7VqaXzerajD0lg
          channel_size: large
          checked_at: '2026-10-26T13:00:00+00:00'
          handle: aliabdaal
          median_views: 210000
          route: scrapecreators
          subscribers: 6700000
          title: Ali Abdaal
          videos_total: 1497
          views_total: 568960825
          watch_url: https://www.youtube.com/channel/UCoOae5nYA7VqaXzerajD0lg
        credits: 0
        measures: {}
    ResultsOut:
      properties:
        results:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Results
        measures:
          additionalProperties: true
          type: object
          title: Measures
        credits:
          type: integer
          title: Credits
          default: 0
      additionalProperties: true
      type: object
      required:
      - results
      - measures
      title: ResultsOut
      examples:
      - credits: 0
        measures: {}
        results:
        - age_days: 366.2
          band: 2x
          baseline_videos: 30
          channel: MrBeast
          channel_handle: MrBeast
          channel_id: UCX6OQ3DkcsbYNE6H8uQQuVA
          channel_median_views: 104000000
          comments: 64000
          content_type: long
          duration_s: 1056
          first_seen_at: '2026-10-07T10:00:00+00:00'
          language: en
          likes: 3692975
          matched_by: text
          multiple: 2.4
          observed_at: '2026-10-26T12:00:00+00:00'
          outlier_score: 71
          posted_at: '2025-10-25T16:00:01+00:00'
          read:
            title_device: challenge
          thumbnail_url: https://i.ytimg.com/vi/Oo9EbArcQ1c/mqdefault.jpg
          title: I Saved 1,000 Animals From Dying
          video_id: Oo9EbArcQ1c
          views: 251568830
          watch_url: https://www.youtube.com/watch?v=Oo9EbArcQ1c
        scope: own
    ErrorOut:
      properties:
        detail:
          type: string
          title: Detail
          description: one sentence a person can read
        code:
          type: string
          title: Code
          description: stable machine code; see the Errors section of /llms.txt
        errors:
          anyOf:
          - items:
              additionalProperties: true
              type: object
            type: array
          - type: 'null'
          title: Errors
          description: 'on a 422 only: the field level list'
      additionalProperties: true
      type: object
      required:
      - detail
      - code
      title: ErrorOut
      examples:
      - code: run_not_found
        detail: no such run for this account
    ChannelPageOut:
      properties:
        channel:
          additionalProperties: true
          type: object
          title: Channel
        uploads:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Uploads
          description: every recent long upload scored against the channel
        outliers:
          type: integer
          title: Outliers
        momentum:
          additionalProperties: true
          type: object
          title: Momentum
        source:
          type: string
          title: Source
          description: fresh (read now) or index (read in the last day)
        measures:
          additionalProperties: true
          type: object
          title: Measures
        credits:
          type: integer
          title: Credits
          default: 0
      additionalProperties: true
      type: object
      required:
      - channel
      - uploads
      - outliers
      - momentum
      - source
      - measures
      title: ChannelPageOut
      examples:
      - channel:
          baseline_videos: 28
          channel_id: UCoOae5nYA7VqaXzerajD0lg
          channel_size: large
          checked_at: '2026-10-26T13:00:00+00:00'
          handle: aliabdaal
          median_views: 210000
          route: scrapecreators
          subscribers: 6700000
          title: Ali Abdaal
          videos_total: 1497
          views_total: 568960825
          watch_url: https://www.youtube.com/channel/UCoOae5nYA7VqaXzerajD0lg
        credits: 0
        measures: {}
        momentum:
          last10_median: 250000
          prev10_median: 190000
          ratio: 1.32
        outliers: 3
        source: fresh
        uploads: []
    NicheOut:
      properties:
        slug:
          type: string
          title: Slug
        videos:
          type: integer
          title: Videos
        thin:
          type: boolean
          title: Thin
        credits:
          type: integer
          title: Credits
          default: 0
      additionalProperties: true
      type: object
      required:
      - slug
      - videos
      - thin
      title: NicheOut
      examples:
      - by_month:
          2026-10: 31
        channels: 160
        credits: 0
        generated_at: '2026-10-26T13:00:00+00:00'
        measures: {}
        median_multiple: 1.9
        median_views: 84000
        month: '2026-10-01'
        outlier_rate_10x: 0.07
        p75_multiple: 4.2
        phrase: personal finance
        sample:
          videos: 412
        slug: personal-finance
        thin: false
        top_channels: []
        top_outliers:
        - age_days: 366.2
          band: 2x
          baseline_videos: 30
          channel: MrBeast
          channel_handle: MrBeast
          channel_id: UCX6OQ3DkcsbYNE6H8uQQuVA
          channel_median_views: 104000000
          comments: 64000
          content_type: long
          duration_s: 1056
          first_seen_at: '2026-10-07T10:00:00+00:00'
          language: en
          likes: 3692975
          matched_by: text
          multiple: 2.4
          observed_at: '2026-10-26T12:00:00+00:00'
          outlier_score: 71
          posted_at: '2025-10-25T16:00:01+00:00'
          read:
            title_device: challenge
          thumbnail_url: https://i.ytimg.com/vi/Oo9EbArcQ1c/mqdefault.jpg
          title: I Saved 1,000 Animals From Dying
          video_id: Oo9EbArcQ1c
          views: 251568830
          watch_url: https://www.youtube.com/watch?v=Oo9EbArcQ1c
        videos: 412
    NichesOut:
      properties:
        niches:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Niches
        credits:
          type: integer
          title: Credits
          default: 0
      additionalProperties: true
      type: object
      required:
      - niches
      title: NichesOut
      examples:
      - credits: 0
        niches:
        - slug: personal-finance
          videos: 412