{
  "openapi": "3.0.1",
  "info": {
    "title": "Audio & Video Transcriber (Whisper, your own files)",
    "description": "Transcribe audio and video files from direct URLs with open-source Whisper (faster-whisper, CPU). Text, timestamped segments, SRT or VTT. Silence and music are filtered before decoding, and each transcript carries quality flags. Memory stays flat for long files. Pay per audio minute.",
    "version": "0.2",
    "x-build-id": "SUOSMoWnVNFaIZ66p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mathtec~whisper-media-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mathtec-whisper-media-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/mathtec~whisper-media-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-mathtec-whisper-media-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/mathtec~whisper-media-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-mathtec-whisper-media-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",
        "required": [
          "mediaUrls"
        ],
        "properties": {
          "mediaUrls": {
            "title": "Media file URLs",
            "type": "array",
            "description": "Direct links to audio or video FILES (mp3, wav, m4a, mp4, mov, webm, ogg, flac, ...). Each URL must return the media file itself. A URL that returns a web page (for example a page with a player on it) fails with 'URL returned a web page, not an audio or video file'. One dataset item is produced per URL.",
            "items": {
              "type": "string"
            }
          },
          "model": {
            "title": "Whisper model",
            "enum": [
              "tiny",
              "base",
              "small"
            ],
            "type": "string",
            "description": "Larger = more accurate and slower. 'small' is built into the image (no download); tiny (78 MB) and base (148 MB) are downloaded in the run that uses them. Accuracy depends heavily on the audio: see the accuracy table in the README.",
            "default": "small"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "ISO 639-1 code such as 'en', 'de', 'es'. Leave empty to auto-detect. Auto-detect listens only to about the first 30 seconds of speech in each file, so a recording that opens with music, a jingle or a different language can be detected wrongly, and the whole transcript then comes out in the wrong language. If you know the language, set it.",
            "default": ""
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "text",
              "segments",
              "srt",
              "vtt"
            ],
            "type": "string",
            "description": "Every item has the plain 'text'. 'segments' adds a list of {start, end, text} with timestamps in seconds; 'srt' and 'vtt' add a subtitle file as a string.",
            "default": "segments"
          },
          "vocabulary_prompt": {
            "title": "Vocabulary prompt (optional)",
            "type": "string",
            "description": "Names, product names and technical terms that occur in the recording, written the way you want them spelled, for example: 'Speakers: Oleksandra Wyrzykowski, Tjark Ihlenfeld. Terms: Zephyrine, Kubernetes, QLoRA.' It is given to Whisper as its initial prompt for every decoding window. LIMIT: Whisper uses at most 224 tokens. If your prompt is longer, only the LAST 224 tokens are used and the beginning is dropped, so put the most important terms at the end. WARNING: a prompt that does not match the audio can bleed into the transcript: Whisper may write words from the prompt that were never spoken. Leave it empty unless you know what is in the recording.",
            "default": ""
          },
          "vadFilter": {
            "title": "Skip non-speech (voice activity detection)",
            "type": "boolean",
            "description": "On by default. Silero voice-activity detection (faster-whisper's vad_filter) removes silence, music and noise before Whisper decodes, because Whisper invents text such as 'Thank you.' or 'Thanks for watching.' on non-speech audio. Turn it off only if speech is being skipped (very quiet speech, or speech under loud music).",
            "default": true
          },
          "engine": {
            "title": "Engine",
            "enum": [
              "self_hosted"
            ],
            "type": "string",
            "description": "Which transcription engine runs. 'self_hosted' runs open-source Whisper inside this Actor; your audio is not sent to any other service. It is the only engine.",
            "default": "self_hosted"
          },
          "windowSeconds": {
            "title": "Decoding window (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Audio is decoded and transcribed this many seconds at a time, so memory stays flat however long the file is. Longer windows use a little more memory (raw audio is window x 64 KB, plus Whisper's features for it) and cut the audio less often. The segment that straddles a window edge is re-decoded with the next window, so no words are dropped. See the README for measurements.",
            "default": 600
          },
          "beamSize": {
            "title": "Beam size",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Whisper beam search width. 1 is greedy decoding (faster, slightly less accurate); 5 is the library default.",
            "default": 5
          },
          "carryContext": {
            "title": "Carry text context across windows",
            "type": "boolean",
            "description": "Pass the last ~200 characters of the previous window as the prompt for the next one (helps keep names/spelling consistent). Measured effect on accuracy is in the README. If a vocabulary prompt is also set, the two are joined and the last 224 tokens are used.",
            "default": true
          },
          "vadThreshold": {
            "title": "VAD: speech threshold",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Silero gives each 32 ms of audio a speech probability; above this value it counts as speech. Lower = keeps more (quiet speech, but also more noise); higher = removes more. Library default 0.5.",
            "default": 0.5
          },
          "vadNegThreshold": {
            "title": "VAD: end-of-speech threshold",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Probability below which speech is considered to have ended. Leave empty to let the library compute it (speech threshold minus 0.15, at least 0.01)."
          },
          "vadMinSpeechDurationMs": {
            "title": "VAD: minimum speech duration (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Speech chunks shorter than this are thrown away. Library default 0 (keep all).",
            "default": 0
          },
          "vadMaxSpeechDurationS": {
            "title": "VAD: maximum speech chunk (seconds)",
            "minimum": 1,
            "type": "number",
            "description": "Speech chunks longer than this are split at a short silence. Leave empty for no limit (the library default)."
          },
          "vadMinSilenceDurationMs": {
            "title": "VAD: minimum silence (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Non-speech must last at least this long before it is cut out. Library default 2000. Lower = cuts shorter pauses.",
            "default": 2000
          },
          "vadSpeechPadMs": {
            "title": "VAD: padding around speech (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Audio kept before and after each speech chunk so word beginnings and endings are not clipped. Library default 400.",
            "default": 400
          },
          "maxDownloadMb": {
            "title": "Maximum file size (MB)",
            "minimum": 1,
            "type": "integer",
            "description": "Files larger than this are not downloaded. The file is stored on the run's disk while it is transcribed (disk = 2 x the run's memory).",
            "default": 2000
          },
          "downloadTimeoutSecs": {
            "title": "Download timeout (seconds)",
            "minimum": 5,
            "type": "integer",
            "description": "Read timeout for each file download.",
            "default": 300
          },
          "cpuThreads": {
            "title": "CPU threads",
            "minimum": 0,
            "type": "integer",
            "description": "0 = use all CPUs the run was given (1 CPU per 4 GB of memory on Apify).",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}