{
  "openapi": "3.0.1",
  "info": {
    "title": "Video AI Analyzer — Hook, Shot List, Script & Summary",
    "description": "Turn your video files into a structured AI breakdown: hook score, sections, shot-by-shot keyframes, on-screen text, CTA, pacing (cuts per minute), summary, chapters or the answer to your question, plus the transcript. MP4, Drive, Dropbox, OneDrive. Works with n8n, Make and AI agents.",
    "version": "1.0",
    "x-build-id": "bSL9V9okZUbk3XAV6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidydata~video-ai-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidydata-video-ai-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/tidydata~video-ai-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-tidydata-video-ai-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/tidydata~video-ai-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-tidydata-video-ai-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": {
          "videoUrls": {
            "title": "Video links",
            "type": "array",
            "description": "One link per line. Videos you own or have the right to analyze: direct files (.mp4, .mov, .webm, .mkv, .avi… up to 1 GB), Google Drive files or public folders, Dropbox, OneDrive/SharePoint share links, archive.org, Wikimedia Commons, Amazon S3 / Cloud Storage links, .m3u8 streams or a web page that contains a video file. YouTube, TikTok, Instagram, X, Vimeo and other platforms are not supported (their terms forbid downloading).",
            "items": {
              "type": "string"
            }
          },
          "analysis": {
            "title": "What do you need?",
            "enum": [
              "creative",
              "summary",
              "custom"
            ],
            "type": "string",
            "description": "Creative breakdown scores the opening hook and splits the video into labelled sections (Hook, Problem, Demo, CTA…). Summary gives key points and chapters with start times. Every mode includes the shot list with keyframes and on-screen text, the measured pacing and the transcript.",
            "default": "creative"
          },
          "question": {
            "title": "Your question or instructions (optional)",
            "type": "string",
            "description": "Anything you want to know, answered in the 'answer' field. Examples: 'List every product shown with the time it appears', 'Is the price mentioned? When?', 'Write 3 alternative hooks for this ad'. Required in 'Answer my question' mode."
          },
          "outputLanguage": {
            "title": "Output language",
            "enum": [
              "English",
              "Same as video",
              "Spanish",
              "Portuguese",
              "French",
              "German",
              "Italian",
              "Dutch",
              "Polish",
              "Turkish",
              "Russian",
              "Arabic",
              "Hindi",
              "Indonesian",
              "Vietnamese",
              "Thai",
              "Japanese",
              "Korean",
              "Chinese (Simplified)"
            ],
            "type": "string",
            "description": "Language of the analysis. Quotes of spoken words and on-screen text stay in their original language.",
            "default": "English"
          },
          "translateQuotes": {
            "title": "Also translate quotes",
            "type": "boolean",
            "description": "Add a translation in brackets after quotes of spoken words and on-screen text.",
            "default": false
          },
          "datasetId": {
            "title": "Or: dataset with video links (chain another Actor)",
            "type": "string",
            "description": "A dataset from another run that has links to video files (for example our Google Drive or bulk file tools). Only read access to this one dataset is requested."
          },
          "datasetUrlField": {
            "title": "Dataset field with the video link",
            "type": "string",
            "description": "Leave empty to detect it (videoUrl, mediaUrl, fileUrl, url… or any value ending in .mp4/.mov/.webm)."
          },
          "maxFrames": {
            "title": "Keyframes per video",
            "minimum": 0,
            "maximum": 24,
            "type": "integer",
            "description": "0 = automatic: one per shot, 6-16 for videos up to 5 minutes and 12-20 for longer ones. More keyframes = more detail in the shot list (same price).",
            "default": 0
          },
          "maxVideoMinutes": {
            "title": "Max minutes analyzed per video",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Longer videos are analyzed up to this point (and billed only for what is analyzed).",
            "default": 30
          },
          "includeTranscript": {
            "title": "Include the transcript",
            "type": "boolean",
            "description": "Adds 'transcript' and 'timestampedTranscript' (Whisper large-v3-turbo, 99 languages).",
            "default": true
          },
          "saveFrames": {
            "title": "Save keyframe images",
            "type": "boolean",
            "description": "Saves each keyframe as a JPEG and adds its link to shots[].frameUrl (handy for storyboards, Notion or Sheets).",
            "default": true
          },
          "spokenLanguage": {
            "title": "Spoken language (optional)",
            "type": "string",
            "description": "Two-letter code like en, es, pt, de. 'auto' detects it. Set it if the transcript comes out in the wrong language.",
            "default": "auto"
          },
          "maxVideos": {
            "title": "Max videos",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Safety limit for folders and datasets with many videos.",
            "default": 50
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}