{
  "openapi": "3.0.1",
  "info": {
    "title": "Podcast Transcriber: Podcast & Audio to Text, MP3, SRT, VTT",
    "description": "Podcast to text and audio to text with Whisper speech to text: podcast transcription from RSS feeds, Apple Podcasts links or MP3/audio/video URLs, full transcript with word timestamps as TXT, SRT, VTT and JSON. Only new episodes since the last run. Groq with your own key or local Whisper.",
    "version": "0.1",
    "x-build-id": "a1tXcgMHMxYtJzho2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/prime619~podcast-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-prime619-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/prime619~podcast-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-prime619-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/prime619~podcast-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-prime619-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": {
          "rssFeedUrls": {
            "title": "Podcast RSS feed URL(s)",
            "type": "array",
            "description": "Public podcast RSS feeds. Episodes are taken from the audio/video enclosures, newest first. You can also paste an Apple Podcasts show link (podcasts.apple.com/.../id123...): the Actor looks up the show's public RSS feed and downloads the audio from the publisher, never from Apple. Spotify page links are not supported.",
            "items": {
              "type": "string"
            }
          },
          "mediaUrls": {
            "title": "Direct audio/video file URL(s)",
            "type": "array",
            "description": "Direct, publicly accessible links to media files (mp3, m4a, wav, ogg, mp4, webm ...). An Apple Podcasts episode link (with ?i=...) also works: it is matched to the episode in the show's public RSS feed. YouTube, Spotify, TikTok, Instagram etc. are not supported. The prefilled link is a free 63 s public-domain demo (LibriVox, Gettysburg Address): it runs without a key, is never charged and is also used when you leave all sources empty.",
            "items": {
              "type": "string"
            }
          },
          "confirmRights": {
            "title": "I own this audio or am allowed to transcribe it",
            "type": "boolean",
            "description": "Required for your own sources. Only transcribe audio you own, have licensed or are otherwise allowed to transcribe. You are responsible for how you use the transcripts. Not needed for the built-in public-domain demo.",
            "default": false
          },
          "maxEpisodesPerFeed": {
            "title": "Max episodes per feed",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many episodes to transcribe per feed and run (newest first, after the filters below).",
            "default": 1
          },
          "onlyNewEpisodes": {
            "title": "Only new episodes since the last run",
            "type": "boolean",
            "description": "Remembers transcribed episodes (in a named key-value store in your account) and skips them next time. Ideal for a daily or weekly schedule. Failed episodes are retried.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name (for 'only new')",
            "type": "string",
            "description": "Use different names to keep separate 'already transcribed' lists, e.g. one per client or task. Leave empty for the default list."
          },
          "episodeTitleFilter": {
            "title": "Episode title contains (optional)",
            "type": "string",
            "description": "Only episodes whose title contains this text (case-insensitive)."
          },
          "publishedAfter": {
            "title": "Published on or after (optional)",
            "type": "string",
            "description": "Only episodes published on or after this date (YYYY-MM-DD). Episodes without a date are skipped when set."
          },
          "transcriptionProvider": {
            "title": "Transcription engine",
            "enum": [
              "auto",
              "managed",
              "groq",
              "local"
            ],
            "type": "string",
            "description": "Auto (default): Groq with your own key if you enter one, otherwise Groq Whisper large-v3-turbo with no key needed. No key needed: we run Whisper large-v3-turbo on Groq for you (audio is processed by Groq in the USA). It shares one rate limit with all users of this Actor; if that is used up, the rest of the audio is transcribed with local Whisper (billed as local minutes) and the run says so. Groq (your key): the same models with your own Groq API key, the lowest price per minute (Groq bills you directly, about $0.04 per audio hour at the time of writing). Local: open-source Whisper inside the Actor, no third party, but slower (about 0.75x real time at 1 GB memory, 4 GB is ~4x faster at the same price), less accurate, max. 120 minutes per episode and a higher per-minute price.",
            "default": "auto"
          },
          "groqApiKey": {
            "title": "Groq API key",
            "type": "string",
            "description": "Optional. Your own key from https://console.groq.com/keys gives the lowest price per minute and your own Groq limits. Stored encrypted by Apify and only sent to api.groq.com. Leave empty to use the no-key engine."
          },
          "language": {
            "title": "Spoken language (optional)",
            "type": "string",
            "description": "Two-letter ISO code like \"en\" or \"de\". Leave empty for automatic detection. Setting it improves accuracy."
          },
          "groqWhisperModel": {
            "title": "Groq Whisper model",
            "enum": [
              "whisper-large-v3-turbo",
              "whisper-large-v3"
            ],
            "type": "string",
            "description": "Only with your own Groq key. whisper-large-v3-turbo is cheaper and faster; whisper-large-v3 is a bit more accurate. The no-key engine always uses whisper-large-v3-turbo.",
            "default": "whisper-large-v3-turbo"
          },
          "localModel": {
            "title": "Local Whisper model",
            "enum": [
              "tiny",
              "base",
              "tiny.en",
              "base.en"
            ],
            "type": "string",
            "description": "For the local engine, and for the rest of an episode when the no-key engine's shared limit is used up. base (default) is more accurate, tiny about twice as fast. The .en models are English-only. Both run with 1 GB memory; 4 GB memory makes them about 4x faster at the same price per audio minute.",
            "default": "base"
          },
          "maxAudioMinutesPerEpisode": {
            "title": "Max audio minutes per episode",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Only the first N minutes of each episode are transcribed (cost cap). Billed minutes never exceed this.",
            "default": 180
          },
          "outputFormats": {
            "title": "Transcript files",
            "type": "array",
            "description": "Files saved per episode in the key-value store (links in every dataset item).",
            "items": {
              "type": "string",
              "enum": [
                "txt",
                "srt",
                "vtt",
                "json"
              ],
              "enumTitles": [
                "TXT (plain text)",
                "SRT subtitles",
                "WebVTT subtitles",
                "JSON (segments + word timestamps)"
              ]
            },
            "default": [
              "txt",
              "srt",
              "vtt",
              "json"
            ]
          },
          "includeWordTimestamps": {
            "title": "Word timestamps in the dataset",
            "type": "boolean",
            "description": "Adds start/end times for every word to the segments in the dataset. The JSON file always contains them.",
            "default": true
          },
          "maxWordsPerCue": {
            "title": "Max words per subtitle cue",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Length of SRT/VTT subtitle cues.",
            "default": 12
          },
          "maxFileSizeMb": {
            "title": "Max media file size (MB)",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Larger files are rejected before processing.",
            "default": 500
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}