{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hookdetector-com/json-schema/hookdetector-com-keywords-out-schema.json",
  "title": "KeywordsOut",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hookdetector-com-openapi.json#/components/schemas/KeywordsOut",
  "properties": {
    "call_id": {
      "type": "string",
      "title": "Call Id",
      "description": "read it back with GET /v1/calls/{call_id}"
    },
    "charged": {
      "type": "integer",
      "title": "Charged",
      "description": "credits this call cost (2; 0 on a replay)"
    },
    "cached": {
      "type": "boolean",
      "title": "Cached",
      "description": "true when the same keyword, country and language was read in the last 6 hours and that read was reused"
    },
    "keyword": {
      "type": "string",
      "title": "Keyword"
    },
    "country": {
      "type": "string",
      "title": "Country"
    },
    "language": {
      "type": "string",
      "title": "Language"
    },
    "score": {
      "additionalProperties": true,
      "type": "object",
      "title": "Score",
      "description": "value 0 to 100 (60% the volume score, 40% the room competition leaves), band (very_low, low, medium, high, very_high: vidIQ's five brackets at 20, 40, 60, 80), band_label, basis"
    },
    "volume": {
      "additionalProperties": true,
      "type": "object",
      "title": "Volume",
      "description": "always estimated: estimated_monthly_searches, range [low, high], score 0 to 100 and band, level (meal prep = 1), source (trends, trends_floor or autocomplete_and_views) and basis"
    },
    "competition": {
      "additionalProperties": true,
      "type": "object",
      "title": "Competition",
      "description": "score 0 to 100 and band, counted in code from the top 10 long-form results: big_channels, recent, title_match, measured and beat_their_channel, and the basis naming each"
    },
    "related": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Related",
      "description": "related terms: term, source (autocomplete or titles), rank or count"
    },
    "questions": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Questions",
      "description": "questions people type, and titles that ask one"
    },
    "rising": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Rising",
      "description": "rising terms, each with why"
    },
    "top_results": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Top Results",
      "description": "the top results counted: video_id, title, channel, url, views, age_days, subscribers, channel_median, multiple, beat"
    },
    "signals": {
      "additionalProperties": true,
      "type": "object",
      "title": "Signals",
      "description": "what was read: trends (state ok, below_floor, refused, cooling_off or no_anchor), autocomplete, results, free_level"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "call_id",
    "charged",
    "cached",
    "keyword",
    "country",
    "language",
    "score",
    "volume",
    "competition",
    "related",
    "questions",
    "rising",
    "top_results",
    "signals"
  ]
}