{
  "openapi": "3.0.1",
  "info": {
    "title": "Youtube Highlights Hooks Analyzer",
    "description": "Advanced YouTube analytics that extracts chapters, intro pacing, and hook suggestions for editors and creators. Analyze Shorts and long videos to find viral moments, engagement patterns, and optimal clip timestamps with an API-first design for blazing-fast performance.",
    "version": "1.0",
    "x-build-id": "ZoEPmzQdxporaf8Th"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~youtube-highlights-hooks-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-youtube-highlights-hooks-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/coregent~youtube-highlights-hooks-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-coregent-youtube-highlights-hooks-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/coregent~youtube-highlights-hooks-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-youtube-highlights-hooks-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Video/Channel/Search URLs",
            "type": "array",
            "description": "YouTube video URLs, channel URLs (@handle or /channel/ID), or search result URLs. Mix multiple types for comprehensive analysis.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Search YouTube for videos by keywords (e.g., 'viral marketing tips', 'coding tutorial'). Leave empty if using startUrls only."
          },
          "maxVideos": {
            "title": "Max Videos to Analyze",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of videos to analyze across all sources.",
            "default": 50
          },
          "since": {
            "title": "Published After",
            "type": "string",
            "description": "Only analyze videos published after this date"
          },
          "until": {
            "title": "Published Before",
            "type": "string",
            "description": "Only analyze videos published before this date"
          },
          "minViews": {
            "title": "Minimum Views",
            "minimum": 0,
            "type": "integer",
            "description": "Only analyze videos with at least this many views (0 = no minimum)",
            "default": 0
          },
          "maxViews": {
            "title": "Maximum Views (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only analyze videos with at most this many views (leave empty for no maximum)"
          },
          "durationFilter": {
            "title": "Video Duration",
            "enum": [
              "any",
              "shorts",
              "under_4m",
              "4_to_20m",
              "over_20m"
            ],
            "type": "string",
            "description": "Filter videos by length. Shorts are under 60 seconds.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "relevance",
              "date",
              "viewCount",
              "rating"
            ],
            "type": "string",
            "description": "Sort search results by relevance, date, views, or rating",
            "default": "relevance"
          },
          "maxHooksPerVideo": {
            "title": "Max Hooks Per Video",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of hook suggestions to generate per video (recommended: 5-15)",
            "default": 10
          },
          "hookLengthSec": {
            "title": "Hook Clip Length (seconds)",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Suggested length for hook clips in seconds (3-15s recommended for Shorts/TikTok)",
            "default": 7
          },
          "fetchTranscript": {
            "title": "Extract Transcripts",
            "type": "boolean",
            "description": "Fetch video transcripts/captions for hook generation and intro pacing analysis. Adds ~1-2s per video.",
            "default": true
          },
          "computeIntroPacing": {
            "title": "Analyze Intro Pacing",
            "type": "boolean",
            "description": "Compute first 15-second metrics (dialogue density, CTA timing, retention benchmarks). Requires transcript extraction.",
            "default": true
          },
          "dryRun": {
            "title": "Dry Run (Metadata Only)",
            "type": "boolean",
            "description": "Only fetch basic metadata without deep analysis. Useful for testing discovery/filtering logic.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}