{
  "openapi": "3.0.1",
  "info": {
    "title": "Audio & Video Transcriber: OpenAI and Gemini Speech to Text",
    "description": "Transcribe audio and video from any link: files, media pages, podcast feeds, Google Drive and Dropbox. Gemini 3.5 Transcribe is built in, so no API key is needed; OpenAI GPT Transcribe and Whisper run with your own key. Speaker labels, timestamps, SRT and VTT subtitles and translation.",
    "version": "2.0",
    "x-build-id": "Wo2tSAe61eVZlmB10"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stanvanrooy6~audio-video-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stanvanrooy6-audio-video-transcriber",
        "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/stanvanrooy6~audio-video-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-stanvanrooy6-audio-video-transcriber",
        "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/stanvanrooy6~audio-video-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-stanvanrooy6-audio-video-transcriber",
        "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": {
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "One link per line. Works with direct audio and video files (MP3, M4A, WAV, MP4, MOV, WEBM, OGG and more), media pages (Vimeo, TikTok, X, Instagram, Facebook, SoundCloud, Loom, Twitch, and YouTube when YouTube allows it), podcast RSS feeds (latest episodes), and Google Drive or Dropbox share links. Each file becomes one result row.",
            "items": {
              "type": "string"
            }
          },
          "provider": {
            "title": "Provider",
            "enum": [
              "openai",
              "gemini"
            ],
            "type": "string",
            "description": "Leave empty to choose automatically: Gemini, which works without any API key, or the provider of the API key you enter. OpenAI needs your own OpenAI API key."
          },
          "model": {
            "title": "Model",
            "enum": [
              "gemini-3.5-transcribe",
              "gemini-3.5-flash-lite",
              "gemini-3.8-flash",
              "gemini-3.1-pro-preview",
              "gpt-transcribe",
              "gpt-4o-mini-transcribe",
              "gpt-4o-transcribe",
              "gpt-4o-transcribe-diarize",
              "whisper-1"
            ],
            "type": "string",
            "description": "Gemini models work without any API key and are charged per audio minute (or use your own Gemini key). OpenAI models (GPT Transcribe, GPT-4o, Whisper) need your own OpenAI API key. Empty: Gemini 3.5 Transcribe, or GPT Transcribe when you only enter an OpenAI key."
          },
          "openaiApiKey": {
            "title": "OpenAI API key",
            "type": "string",
            "description": "Needed only for OpenAI models (GPT Transcribe, GPT-4o Transcribe, Whisper). You pay OpenAI directly and this actor only charges its small per-result fee. Not needed for Gemini models. Stored encrypted."
          },
          "geminiApiKey": {
            "title": "Gemini API key",
            "type": "string",
            "description": "Optional. Leave it empty and Gemini models run on the built-in access, charged per audio minute. With your own Google AI Studio (Gemini API) key you pay Google directly and this actor only charges its small per-result fee. Stored encrypted."
          },
          "language": {
            "title": "Audio language",
            "type": "string",
            "description": "Optional. The spoken language as a code like en, de or pt-BR (several separated by commas). Leave empty for automatic detection. Setting it improves accuracy and speed."
          },
          "prompt": {
            "title": "Context prompt",
            "type": "string",
            "description": "Optional. A sentence of context, for example 'A podcast about Kubernetes with guests from Acme'. Not used by GPT-4o Transcribe Diarize and Gemini 3.5 Transcribe."
          },
          "keywords": {
            "title": "Keywords and names",
            "type": "array",
            "description": "Optional. Names, brands and terms that should be spelled exactly like this, for example product names or people's names.",
            "items": {
              "type": "string"
            }
          },
          "smartFormatting": {
            "title": "Smart formatting (Gemini 3.5 Transcribe)",
            "type": "boolean",
            "description": "Removes filler words and false starts and formats numbers, dates and lists for reading. Only with Gemini 3.5 Transcribe, without speaker labels or timestamps.",
            "default": false
          },
          "diarize": {
            "title": "Speaker labels",
            "type": "boolean",
            "description": "Label who speaks when. Switches to GPT-4o Transcribe Diarize (OpenAI) or Gemini 3.5 Transcribe (Gemini).",
            "default": false
          },
          "knownSpeakerNames": {
            "title": "Speaker names",
            "type": "array",
            "description": "Optional, with speaker labels. Names to use instead of Speaker 1, Speaker 2. Without reference clips the names are assigned in the order people first speak.",
            "items": {
              "type": "string"
            }
          },
          "knownSpeakerReferences": {
            "title": "Speaker reference clips (OpenAI)",
            "type": "array",
            "description": "Optional, OpenAI only. One link per speaker name, in the same order: a 2 to 10 second audio clip of that person speaking. Up to 4 speakers.",
            "items": {
              "type": "string"
            }
          },
          "timestamps": {
            "title": "Timestamps",
            "enum": [
              "none",
              "segment",
              "word"
            ],
            "type": "string",
            "description": "Segment timestamps give start and end times per sentence (needed for SRT and VTT subtitles). Word timestamps also time every word. The actor switches to a model that supports them (Whisper or Gemini 3.5 Transcribe) and says so in the log.",
            "default": "none"
          },
          "translateTo": {
            "title": "Translate to",
            "type": "string",
            "description": "Optional. Also translate the transcript, for example en, de or Spanish. English on OpenAI uses Whisper; other languages use Gemini."
          },
          "outputFormats": {
            "title": "Files",
            "uniqueItems": true,
            "type": "array",
            "description": "Files to save for each transcript in the key-value store, linked from each row. SRT and VTT subtitles turn on segment timestamps.",
            "items": {
              "type": "string",
              "enum": [
                "txt",
                "srt",
                "vtt",
                "json"
              ],
              "enumTitles": [
                "Text (TXT)",
                "Subtitles (SRT)",
                "Web subtitles (VTT)",
                "Full result (JSON)"
              ]
            },
            "default": [
              "txt"
            ]
          },
          "maxEpisodesPerFeed": {
            "title": "Episodes per podcast feed",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "For podcast RSS feeds: how many of the latest episodes to transcribe.",
            "default": 1
          },
          "maxMinutesPerRun": {
            "title": "Max audio minutes per run (no key)",
            "minimum": 1,
            "type": "integer",
            "description": "Only without your own API key (Gemini built-in access): the most audio minutes one run may transcribe. Files that would go over the limit are skipped. Files longer than 4 hours need your own key. Apify Free accounts using built-in access are capped at 5 minutes total per run, even if this setting is higher.",
            "default": 600
          },
          "maxConcurrency": {
            "title": "Files in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many files are processed at the same time. Long files are also split into parts that are transcribed in parallel.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How often a failed download or transcription request is retried when the problem looks temporary.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}