{
  "openapi": "3.0.1",
  "info": {
    "title": "Audio, Video & Podcast Transcriber (Whisper)",
    "description": "Transcribe audio and video files and podcast RSS episodes with OpenAI Whisper (faster-whisper, CPU). Get full text, timestamped segments, language detection and SRT + VTT subtitles. Pay per audio minute, only for transcripts that were saved.",
    "version": "0.1",
    "x-build-id": "NPotRBhq4682nNoPS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/singgendarhan~audio-video-podcast-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-singgendarhan-audio-video-podcast-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/singgendarhan~audio-video-podcast-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-singgendarhan-audio-video-podcast-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/singgendarhan~audio-video-podcast-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-singgendarhan-audio-video-podcast-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": {
          "mediaUrls": {
            "title": "Media file URLs",
            "type": "array",
            "description": "Direct links to audio or video files, one per line: mp3, m4a, wav, ogg, opus, flac, aac, mp4, webm, mov, mkv and more. Links to records in an Apify key-value store work too. Pages on streaming or social platforms (YouTube, TikTok, Instagram, Facebook, X, Vimeo, Twitch, Spotify, SoundCloud, Apple Music, Netflix...) are refused at no charge. You must have the right to transcribe the media.",
            "items": {
              "type": "string"
            }
          },
          "rssFeedUrls": {
            "title": "Podcast RSS feeds",
            "type": "array",
            "description": "Podcast RSS (or Atom) feed URLs, one per line. The Actor reads each feed and transcribes the latest episodes from their enclosure (download) URLs. A podcast website that links to its feed works too. Apple Podcasts and Spotify pages do not: use the show's RSS feed URL (your podcast host shows it).",
            "items": {
              "type": "string"
            }
          },
          "maxEpisodesPerFeed": {
            "title": "Episodes per feed",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many of the latest episodes to transcribe from each feed (newest first).",
            "default": 3
          },
          "episodesSince": {
            "title": "Only episodes published since",
            "type": "string",
            "description": "Optional. Only transcribe episodes published on or after this date (YYYY-MM-DD). Combine with 'Episodes per feed' to cap the number. Useful for scheduled runs that pick up new episodes."
          },
          "quality": {
            "title": "Quality",
            "enum": [
              "fast",
              "balanced"
            ],
            "type": "string",
            "description": "Fast ($0.008/min) uses Whisper base: about 12x faster than real time on one CPU core, good for clear speech (podcasts, talks, interviews). Balanced ($0.016/min) uses Whisper small: more accurate on accents, noisy or old recordings and non-English speech, about 3x slower.",
            "default": "fast"
          },
          "language": {
            "title": "Language",
            "pattern": "^(auto|[a-z]{2,3})$",
            "type": "string",
            "description": "'auto' detects the spoken language from the first 30 seconds. Set a language code (en, es, de, fr, pt, it, nl, ja, zh, ru, pl, uk, tr, ar, hi, ko...) if you know it: it avoids misdetection on short or music-heavy intros. Whisper supports 99 languages.",
            "default": "auto"
          },
          "translateToEnglish": {
            "title": "Translate to English",
            "type": "boolean",
            "description": "Output an English translation instead of a transcript in the original language (Whisper's built-in speech translation). Works much better with quality 'Balanced'. Same price.",
            "default": false
          },
          "wordTimestamps": {
            "title": "Word-level timestamps",
            "type": "boolean",
            "description": "Add start/end times (and a confidence score) for every word to the segments in the dataset and in the JSON file. Subtitles are then cut exactly at word boundaries. Makes transcription about 20-40% slower; same price.",
            "default": false
          },
          "skipSilence": {
            "title": "Skip silence and music",
            "type": "boolean",
            "description": "Use voice activity detection to skip long silences and music before transcribing. Faster and reduces made-up text in silent parts. Turn off only if speech is being cut.",
            "default": true
          },
          "initialPrompt": {
            "title": "Vocabulary hint (optional)",
            "type": "string",
            "description": "Names, brands and jargon that appear in the audio, written as a short sentence (for example: 'Interview with Dr. Anika Okafor about CRISPR and mRNA vaccines.'). Helps Whisper spell them correctly. Max 600 characters."
          },
          "keyValueStoreId": {
            "title": "Key-value store with media files",
            "type": "string",
            "description": "Optional. ID or name of an Apify key-value store that holds audio/video files to transcribe (use together with 'Record keys'). Leave empty if you only use URLs or feeds."
          },
          "keyValueStoreKeys": {
            "title": "Record keys",
            "type": "array",
            "description": "Keys of the audio/video records in the key-value store above, one per line (for example interview-01.mp3).",
            "items": {
              "type": "string"
            }
          },
          "maxDurationMinutes": {
            "title": "Max duration per file",
            "minimum": 0.1,
            "maximum": 600,
            "type": "number",
            "description": "Files or episodes longer than this are not transcribed (and not charged); they get a DURATION_TOO_LONG error instead. Up to 600 minutes.",
            "default": 180
          },
          "maxFileSizeMb": {
            "title": "Max file size",
            "minimum": 0.1,
            "maximum": 4000,
            "type": "number",
            "description": "Downloads larger than this are stopped with a FILE_TOO_LARGE error (not charged). Video files are much larger than audio: 1 hour of 720p video is about 1 GB.",
            "default": 1000
          },
          "itemTimeoutMinutes": {
            "title": "Time limit per file",
            "minimum": 1,
            "maximum": 600,
            "type": "number",
            "description": "Maximum time for downloading one file, and separately for decoding and transcribing it. A file that takes longer fails with ITEM_TIMEOUT (not charged). With the default 4 GB memory (1 CPU core), 'Fast' needs about 5-6 minutes per hour of audio and 'Balanced' about 14-15.",
            "default": 120
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}