{
  "openapi": "3.0.1",
  "info": {
    "title": "Audio & Video Transcription: MP3, MP4 & Podcast to Text",
    "description": "Transcribe audio and video files to text with AI: MP3, MP4, WAV, M4A and more, from direct links or podcast RSS feeds. Word timestamps, speaker labels, SRT/VTT subtitles, 90+ languages, up to 10 hours per file. No login or API key.",
    "version": "0.1",
    "x-build-id": "WkSBbwHW39AUTU0Va"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deapi~audio-video-to-text/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deapi-audio-video-to-text",
        "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/deapi~audio-video-to-text/runs": {
      "post": {
        "operationId": "runs-sync-deapi-audio-video-to-text",
        "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/deapi~audio-video-to-text/run-sync": {
      "post": {
        "operationId": "run-sync-deapi-audio-video-to-text",
        "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": {
          "fileUrls": {
            "title": "Audio or video file URLs",
            "type": "array",
            "description": "Direct links to audio or video files — the link must open the file itself, without a login. Works with **MP3, M4A, AAC, WAV, FLAC, OGG, Opus, WebM, MP4, MOV, MKV, AVI, WMV and MPEG**. Only the audio track is used, so a video costs exactly the same per minute as its audio. Up to **10 hours** and **1.5 GB** per file. For YouTube, TikTok, Twitch or Kick links use the dedicated deAPI transcript Actors. **Free plan: 3 files per run, 30 minutes and 200 MB maximum each, 60 transcribed minutes per calendar month (resets 00:00 UTC on the 1st), within a daily capacity shared by all free users. Paid plans remove the free-plan limits.**",
            "items": {
              "type": "string"
            }
          },
          "rssFeeds": {
            "title": "Podcast RSS feeds",
            "type": "array",
            "description": "Podcast RSS feed URLs. The newest episodes of each feed are transcribed, and every row carries the podcast name, episode title, publish date and GUID. Example: `https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast`.",
            "items": {
              "type": "string"
            }
          },
          "maxEpisodesPerFeed": {
            "title": "Episodes per feed",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the newest episodes to transcribe from each RSS feed.",
            "default": 3
          },
          "timestampLevel": {
            "title": "Timestamp level",
            "enum": [
              "none",
              "segment",
              "word"
            ],
            "type": "string",
            "description": "How finely the transcript is timed. **Segment** gives one timestamp per sentence — right for subtitles, reading, chapters and jumping to the moment something was said, and included in the base price. **Word** times every single word — right for clip cutting, word-by-word captions and search. **None** returns plain text only. Word moves the recording onto the precision rate ($0.01063 per file + $0.00181 a minute, against $0.0075 + $0.00113), and choosing speaker labels as well costs nothing extra on top.",
            "default": "segment"
          },
          "diarize": {
            "title": "Label speakers (diarization)",
            "type": "boolean",
            "description": "Detect who is speaking and tag every line with a speaker (SPEAKER_00, SPEAKER_01, …). Use it for podcasts, interviews, panels, webinars and any recording with more than one voice. Speaker labels need timing to attach to, so switching this on together with **None** still returns sentence-level timing. Moves the recording onto the precision rate ($0.01063 per file + $0.00181 a minute, against $0.0075 + $0.00113); if you already picked Word timestamps, adding speakers costs nothing extra.",
            "default": false
          },
          "language": {
            "title": "Spoken language",
            "enum": [
              "auto",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl",
              "pl",
              "uk",
              "ru",
              "tr",
              "ar",
              "he",
              "hi",
              "id",
              "ms",
              "vi",
              "th",
              "ja",
              "ko",
              "zh",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "ro",
              "el",
              "hu"
            ],
            "type": "string",
            "description": "Pick the language spoken in the recording whenever you know it. Auto-detect can misidentify the language, which lowers transcription accuracy. One language applies to every file in the run, so split mixed-language batches into separate runs, or keep auto-detect and check `languageConfidence` in the output. The dropdown lists the 29 most requested languages; anything else is transcribed on auto-detect.",
            "default": "auto"
          },
          "includeSubtitles": {
            "title": "Add SRT and VTT subtitles",
            "type": "boolean",
            "description": "Return ready-to-use subtitle files as `srt` and `vtt` fields — paste them straight into a video editor, a player or a CMS. Free of charge. Subtitles need timing to exist, so they are produced at every timestamp level except None, and also at None when speaker labels are switched on. On very long recordings the files are saved to the run's key-value store and linked as `srtUrl` and `vttUrl` instead of being inlined, so nothing is ever truncated.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Files in parallel",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many files are downloaded and transcribed at the same time. It has no effect on price.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}