{
  "openapi": "3.0.1",
  "info": {
    "title": "Audio & Video Transcriber (Whisper) with Podcast RSS",
    "description": "Transcribe audio, video and podcast RSS episodes with Whisper on Groq or OpenAI using your own API key. Get text, SRT and VTT subtitles and timestamped JSON segments.",
    "version": "0.1",
    "x-build-id": "E8HSSUsLufZuBY0FY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rod_analytics~media-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rod_analytics-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/rod_analytics~media-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-rod_analytics-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/rod_analytics~media-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-rod_analytics-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",
        "properties": {
          "audioUrls": {
            "title": "Audio or video URLs",
            "type": "array",
            "description": "Direct links to media files: MP3, M4A, WAV, FLAC, OGG, OPUS, AAC, MP4, MOV, MKV, WEBM and more. Google Drive and Dropbox share links are converted to direct downloads. YouTube, TikTok, Instagram, Facebook and Vimeo page links are rejected because their terms forbid downloading.",
            "items": {
              "type": "string"
            }
          },
          "rssFeedUrl": {
            "title": "Podcast RSS feed URL",
            "type": "string",
            "description": "A podcast RSS or Atom feed. The Actor takes the audio enclosures of the latest episodes and adds the episode title and publish date to the output."
          },
          "maxEpisodes": {
            "title": "Latest episodes from the feed",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many of the newest feed episodes to transcribe.",
            "default": 3
          },
          "uploadedFile": {
            "title": "Upload a file",
            "type": "string",
            "description": "Upload one audio or video file from your computer. Apify stores it in a key-value store and passes its URL to the Actor."
          },
          "keyValueStoreRecords": {
            "title": "Key-value store records",
            "type": "array",
            "description": "Keys of media records in this run's default key-value store, for example when another Actor calls this one. Use `storeId/key` for other stores. For your own stores the record URL with its signature in Audio or video URLs is more reliable.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "provider": {
            "title": "Provider",
            "enum": [
              "groq",
              "openai"
            ],
            "type": "string",
            "description": "Speech to text provider for your own API key. Groq runs Whisper large v3 turbo very fast and cheap. OpenAI offers gpt-4o-mini-transcribe and whisper-1.",
            "default": "groq"
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your Groq key (console.groq.com/keys) or OpenAI key (platform.openai.com/api-keys). It is stored encrypted and used only to call the provider from your run. The provider bills transcription to your account. Tip: create a separate key for this Actor with a spending limit, and revoke it when you are done."
          },
          "model": {
            "title": "Model",
            "enum": [
              "auto",
              "whisper-large-v3-turbo",
              "whisper-large-v3",
              "gpt-4o-mini-transcribe",
              "gpt-4o-transcribe",
              "whisper-1"
            ],
            "type": "string",
            "description": "`auto` picks whisper-large-v3-turbo on Groq. On OpenAI it picks whisper-1 when you ask for SRT, VTT or JSON timestamps, otherwise gpt-4o-mini-transcribe. Translation uses whisper-large-v3 on Groq and whisper-1 on OpenAI. gpt-4o models return no timestamps, so their subtitle times are estimated.",
            "default": "auto"
          },
          "language": {
            "title": "Language hint",
            "type": "string",
            "description": "ISO 639-1 code of the spoken language, for example `en`, `de`, `es`, `lt`. Leave empty to detect it automatically. A hint improves accuracy and speed."
          },
          "translateToEnglish": {
            "title": "Translate to English",
            "type": "boolean",
            "description": "Return an English translation instead of the original language transcript.",
            "default": false
          },
          "outputFormats": {
            "title": "Output formats",
            "type": "array",
            "description": "Files saved to the key-value store for each transcript. The dataset always has plain text and timestamped segments.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "srt",
                "vtt",
                "json"
              ],
              "enumTitles": [
                "Plain text (.txt)",
                "SRT subtitles (.srt)",
                "WebVTT subtitles (.vtt)",
                "JSON segments with timestamps (.json)"
              ]
            },
            "default": [
              "text",
              "srt",
              "vtt",
              "json"
            ]
          },
          "prompt": {
            "title": "Vocabulary prompt",
            "type": "string",
            "description": "Optional context for the model: names, brands, jargon or spelling style. Whisper uses about the first 224 tokens."
          },
          "maxDurationMinutes": {
            "title": "Max duration per file (minutes)",
            "minimum": 1,
            "maximum": 1440,
            "type": "integer",
            "description": "Transcribe at most this many minutes of each file. Longer files are cut and a warning is added. Protects you from surprise costs.",
            "default": 180
          },
          "dryRun": {
            "title": "Dry run (no transcription)",
            "type": "boolean",
            "description": "Download, convert and split the audio into chunks, then stop. No API key needed, no provider calls, no per minute charge. Use it to check that your files and feed work.",
            "default": false
          },
          "chunkMinutes": {
            "title": "Chunk length (minutes)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Long audio is split into chunks of this length with a 5 second overlap. Chunks are mono 16 kHz and stay under 20 MB, below the 25 MB provider limit.",
            "default": 10
          },
          "concurrency": {
            "title": "Parallel API requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many chunks are sent to the provider at the same time. Lower it if your key hits rate limits. 429 responses are retried with backoff.",
            "default": 3
          },
          "maxFileSizeMb": {
            "title": "Max download size (MB)",
            "minimum": 1,
            "maximum": 4000,
            "type": "integer",
            "description": "Skip source files larger than this. Video files can be large; only the audio track is used.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}