{
  "openapi": "3.0.1",
  "info": {
    "title": "Speech to Text API: Audio to Text & Video to Text, Whisper",
    "description": "Audio transcription and video transcription API: transcribe audio, video, MP3, MP4, podcasts to text with Whisper speech to text. Podcast transcription from RSS feeds, meeting and interview transcription, voice to text, SRT/VTT subtitles, RAG chunks. From $0.01 per audio minute; silence is free.",
    "version": "1.4",
    "x-build-id": "qp2dm65fDatoZCEU3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sauliusautomatesit~media-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sauliusautomatesit-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/sauliusautomatesit~media-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-sauliusautomatesit-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/sauliusautomatesit~media-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-sauliusautomatesit-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": {
          "mediaUrls": {
            "title": "Media URLs",
            "type": "array",
            "description": "Public recording URLs you have permission to process: direct audio/video files, podcast enclosures and supported websites. Site restrictions can block downloads. Add several files to share startup work; up to 1,000 URLs.",
            "items": {
              "type": "string"
            }
          },
          "rssFeedUrls": {
            "title": "Podcast RSS / Atom feeds",
            "type": "array",
            "description": "Optional podcast feeds. Extracts audio enclosure URLs and transcribes their speech. Use feeds, Media URLs, or both. Up to 10 public feeds.",
            "items": {
              "type": "string"
            }
          },
          "maxEpisodesPerFeed": {
            "title": "Newest matching episodes per feed",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Select this many newest matching episodes on each run. Seen episodes inside that window are skipped; the monitor does not backfill older episodes.",
            "default": 1
          },
          "publishedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "Optional ISO date such as 2026-09-01. Episodes without a publication date are excluded when this filter is set."
          },
          "episodeTitleContains": {
            "title": "Episode title contains",
            "type": "string",
            "description": "Optional case-insensitive title phrase."
          },
          "onlyNewEpisodes": {
            "title": "Skip previously delivered feed episodes",
            "type": "boolean",
            "description": "For repeat or scheduled runs. Requires a Monitor name. Successful episodes are checkpointed after delivery; failures remain eligible for retry. Run one monitor at a time per name.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Choose a stable label, e.g. my-podcast-library, for repeated runs. Different transcription/output settings create separate checkpoints. Stores the 5,000 most recently completed episode IDs in your Apify account. Saved Tasks created before this field was renamed keep working and resume the same checkpoint."
          },
          "model": {
            "title": "Processing tier / model",
            "pattern": "^(tiny|base|small|medium)$",
            "type": "string",
            "description": "Choose Basic (Base), Quality (Small) or Max (Medium, 4 GB minimum). All include the same output formats. Larger models are slower and not always more accurate. Basic $0.035, Quality $0.06, Max $0.12 per audio-minute before plan discounts. Older model inputs remain compatible; see README compatibility notes.",
            "default": "base"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code of the audio (e.g. `en`, `es`, `fr`, `de`, `hi`). Leave blank to auto-detect. Whisper supports 90+ languages."
          },
          "translate": {
            "title": "Translate to English",
            "type": "boolean",
            "description": "Translate the speech to English instead of transcribing in the original language.",
            "default": false
          },
          "outputFormats": {
            "title": "Output formats",
            "type": "array",
            "description": "One or more output formats. Markdown and RAG chunks reuse the delivered speech transcript; no external LLM calls or extra event fee.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "segments",
                "srt",
                "vtt",
                "markdown",
                "rag"
              ],
              "enumTitles": [
                "Plain text",
                "Timestamped segments",
                "SRT subtitles",
                "WebVTT subtitles",
                "Markdown transcript",
                "Timestamped RAG chunks"
              ]
            },
            "default": [
              "text",
              "segments"
            ]
          },
          "downloadFiles": {
            "title": "Create downloadable transcript files",
            "type": "boolean",
            "description": "Save selected formats in this run, with a DOWNLOADS manifest. Console and authenticated API access are the default; your account token is never placed in a file link.",
            "default": false
          },
          "shareDownloadLinks": {
            "title": "Create shareable file links (anyone with the link can read)",
            "type": "boolean",
            "description": "Optional, only with downloadable files. Creates signed links to individual transcript files without making the whole store public. Anyone with a link can read that file while it exists. Leave off for sensitive recordings.",
            "default": false
          },
          "paragraphs": {
            "title": "Add readable paragraphs",
            "type": "boolean",
            "description": "Adds paragraphText and paragraph breaks to TXT downloads. Only whitespace changes: no summarisation, fact correction or extra AI calls.",
            "default": false
          },
          "ragChunkWords": {
            "title": "Maximum words per RAG chunk",
            "minimum": 50,
            "maximum": 1000,
            "type": "integer",
            "description": "Only used for RAG output. Chunks carry source URLs and segment-level time bounds. Long segments can yield multiple chunks with the same bounds.",
            "default": 250
          },
          "ragStrategy": {
            "title": "RAG chunking strategy",
            "enum": [
              "segments",
              "sentences"
            ],
            "type": "string",
            "description": "Sentence-aware mode groups punctuation-delimited sentences when possible. Both modes keep segment-level timing; they do not invent exact sentence or token timestamps. Changing strategy changes chunk IDs and podcast checkpoints.",
            "default": "segments"
          },
          "ragOverlapWords": {
            "title": "Context overlap between RAG chunks (words)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only with sentence-aware grouping. Up to this many trailing words repeat in the next chunk, subject to the chunk-size limit. Must be smaller than Maximum words per RAG chunk.",
            "default": 0
          },
          "wordTimestamps": {
            "title": "Word-level timestamps",
            "type": "boolean",
            "description": "Add estimated per-word timing to segments. Can substantially increase processing time, especially with Max. Timing is approximate; quality warnings identify out-of-bounds corrections.",
            "default": false
          },
          "maxDurationMinutes": {
            "title": "Max duration per item (minutes)",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Skip media longer than this. The default 300 minutes covers 3 to 5 hour podcast episodes. Long recordings are processed in five-minute chunks to bound memory. The default 2 hour run timeout fits about 5 hours of audio on Basic; set a longer timeout for more audio, Quality or Max, or word timestamps.",
            "default": 300
          },
          "maxTotalMinutes": {
            "title": "Maximum billed audio minutes for this run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional run-wide cap, with each file rounded up separately. Stop before a complete item would exceed it. This supplements Apify's maximum charge setting; it is not a cap on your plan's platform costs."
          },
          "maxFailedItems": {
            "title": "Stop after this many failed items",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Stop the batch after this many errors, including no-speech files. Previously completed transcripts remain available. A separate failed-work/time guard can stop earlier; inspect SUMMARY before retrying.",
            "default": 3
          },
          "maxDownloadMegabytes": {
            "title": "Maximum download size per item (MiB)",
            "minimum": 1,
            "maximum": 4096,
            "type": "integer",
            "description": "Limit each media file's size. Large/unknown transfers and live streams can be rejected before recognition. Some transfer cost can occur before a source reports its size.",
            "default": 512
          },
          "beamSize": {
            "title": "Beam size",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "1 is the default greedy decoder. Larger values can help some recordings but are slower and do not guarantee better accuracy.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Applies to media downloads, not feed discovery. With the default Apify Proxy, each download is tried direct first (much faster for podcast MP3s) and falls back to the proxy if the direct download fails. Choose a proxy group such as Residential, or your own proxy URLs, to always use that proxy. Cannot guarantee access. Invalid proxy setup stops before any media download.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}