{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube AI Video Summarizer — Gemini Brief, Q&A & Transcript",
    "description": "AI summaries of YouTube videos with Google Gemini: a timestamped brief (summary, key points, chapters, topics), answers to your own questions, JSON-schema extraction and an optional AI transcript. Video links, channels or a search. A brief is $0.02 per 10 minutes of video. No login.",
    "version": "0.1",
    "x-build-id": "jeE3zhirfvLJlaKfk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~youtube-ai-video-summarizer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-youtube-ai-video-summarizer",
        "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/yugenox~youtube-ai-video-summarizer/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-youtube-ai-video-summarizer",
        "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/yugenox~youtube-ai-video-summarizer/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-youtube-ai-video-summarizer",
        "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": "YouTube videos for the AI to read: watch links, youtu.be links, Shorts links or 11-character video ids. Only public videos can be read. A channel or search link pasted here is read as a channel or a search. One per line.",
            "items": {
              "type": "string"
            }
          },
          "channels": {
            "title": "📺 Channels",
            "type": "array",
            "description": "Channels whose latest (or most popular) videos to read: a channel link (https://www.youtube.com/@NASA), an @handle, a channel id (UC…) or a channel name. One per line.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "🔎 Search YouTube",
            "type": "array",
            "description": "Keywords to search YouTube videos for; the top results are read. One per line.",
            "items": {
              "type": "string"
            }
          },
          "maxVideos": {
            "title": "Videos per channel or search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many videos to read from each channel and each search (video links are always read in full). Videos longer than \"Max video length\" are passed over and do not count.",
            "default": 5
          },
          "maxVideoMinutes": {
            "title": "Max video length (minutes)",
            "minimum": 1,
            "maximum": 180,
            "type": "integer",
            "description": "Videos longer than this are not sent to the AI and are not charged (a video you gave by link still gets a row with YouTube's details). Up to 180 minutes.",
            "default": 60
          },
          "includeBrief": {
            "title": "📝 AI brief",
            "type": "boolean",
            "description": "A one-sentence TL;DR, a summary (at most 120 words), 3–8 key points with timestamps, chapters with timestamps (YouTube's own when the video has them) and topic tags. Every time comes with a youtu.be link that opens the video at that moment.",
            "default": true
          },
          "questions": {
            "title": "❓ Your questions",
            "type": "array",
            "description": "Up to 5 questions the AI answers from each video (at most 300 characters each), with the timestamp where the answer is. A question the video does not answer says so and is not charged. One per line.",
            "items": {
              "type": "string"
            }
          },
          "extractionSchema": {
            "title": "🧩 JSON schema (structured extraction)",
            "type": "object",
            "description": "Optional: a JSON schema such as {\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"verdict\":{\"type\":\"string\",\"enum\":[\"buy\",\"skip\"]}}}, or simply {\"field\": \"what to put in it\"}. The AI fills it from each video into \"extracted\". Supported: type, properties, items, required, enum, description (up to 40 fields, 4 levels deep). Text only, never code."
          },
          "includeTranscript": {
            "title": "🗣️ AI transcript",
            "type": "boolean",
            "description": "A timestamped transcript of everything said, written by the AI from the video's audio in the language spoken — also for videos without captions. Charged per started minute of video.",
            "default": false
          },
          "outputLanguage": {
            "title": "Language of the brief and answers",
            "enum": [
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl",
              "pl",
              "sv",
              "tr",
              "ru",
              "uk",
              "ar",
              "fa",
              "he",
              "hi",
              "bn",
              "ur",
              "id",
              "vi",
              "th",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "original"
            ],
            "type": "string",
            "description": "The language the brief, the answers and the extracted text are written in, whatever language the video is in. \"Same as the video\" keeps the language spoken in the video. The transcript always stays in the language spoken.",
            "default": "en"
          },
          "channelSortBy": {
            "title": "Channel videos",
            "enum": [
              "newest",
              "popular"
            ],
            "type": "string",
            "description": "Which videos of a channel to read: the latest uploads or the most popular ones.",
            "default": "newest"
          },
          "searchSortBy": {
            "title": "Search order",
            "enum": [
              "relevance",
              "date",
              "views"
            ],
            "type": "string",
            "description": "Order of search results: most relevant first (YouTube's default), newest first, or most viewed first.",
            "default": "relevance"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (US, GB, IN, BR, DE …). Searches run as YouTube does for people in that country.",
            "default": "US"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "YouTube's pages are read through Apify datacenter IPs first (cheapest); this proxy (residential by default) is used only for the kinds of request YouTube blocks on datacenter IPs. An account without residential proxies falls back to Apify datacenter IPs automatically. The AI reads the videos itself and never uses the proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}