{
  "openapi": "3.0.1",
  "info": {
    "title": "Vimeo, Loom & Podcast Transcript Generator - Video URL to Text",
    "description": "Video transcription and podcast transcription from any media URL: Vimeo transcript, Loom transcript, podcast RSS, HLS video or direct file links to text. Transcribe video URLs via API, MCP, or schedule. Speech to text and video to text, one JSON row per item. Zero-setup STT or bring your own key.",
    "version": "0.0",
    "x-build-id": "riA0QnDRturvrhDEZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kaz_kakyo~media-url-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kaz_kakyo-media-url-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/kaz_kakyo~media-url-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-kaz_kakyo-media-url-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/kaz_kakyo~media-url-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-kaz_kakyo-media-url-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",
        "required": [
          "mediaUrls"
        ],
        "properties": {
          "mediaUrls": {
            "title": "Media URLs",
            "minItems": 1,
            "type": "array",
            "description": "Required. Accepted: direct audio/video file URLs (mp3, mp4, m4a, wav, flac, ogg, opus, aac, webm, mov, mkv), HLS .m3u8 VOD playlists, Vimeo video URLs, Loom share/embed URLs, podcast RSS/Atom feed URLs (expand to episodesPerFeed rows). One dataset row per media item. Max 100 URLs/run and 200 items after feed expansion. REJECTED (error rows, run still succeeds): YouTube → use kaz_kakyo/youtube-transcripts; TikTok/Instagram/Facebook/X page links; Spotify/SoundCloud/Apple Podcasts page links (pass the podcast RSS feed instead); Google Drive/Dropbox share pages; any URL that serves text/html. Bad URLs become type:error rows and the run still succeeds.",
            "items": {
              "type": "string"
            }
          },
          "episodesPerFeed": {
            "title": "Episodes per RSS feed",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Default: 1. Latest N episodes per podcast RSS/Atom feed URL (min 1, max 25). Feed items sorted by pubDate when parseable.",
            "default": 1
          },
          "preferCaptions": {
            "title": "Prefer Vimeo captions",
            "type": "boolean",
            "description": "Default: true. For Vimeo: reuse the published caption track ($0.005 flat caption-item) instead of STT. Set false to force STT.",
            "default": true
          },
          "captionLanguage": {
            "title": "Preferred caption language",
            "type": "string",
            "description": "Default: empty. Preferred Vimeo caption track language (BCP-47 prefix match). Fallback: en, then first available track.",
            "default": ""
          },
          "deepgramApiKey": {
            "title": "Bring-your-own API key (optional BYOK)",
            "type": "string",
            "description": "Optional. Leave empty for zero-setup STT at $0.012/min (paid Apify plans only; uses the actor's managed key when available). Bring your own speech-to-text API key to pay $0.005/min here plus your provider's wholesale ~$0.0043/min; this also works on the free Apify plan. Caption-path Vimeo items work without any key. Stored encrypted; sent only to the transcription provider."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Default: empty (English). Optional BCP-47 code (e.g. en, es, de). Or set detectLanguage.",
            "default": ""
          },
          "detectLanguage": {
            "title": "Detect language automatically",
            "type": "boolean",
            "description": "Default: false. When true, detect the dominant language per item and transcribe in it. Overrides language.",
            "default": false
          },
          "diarize": {
            "title": "Speaker diarization",
            "type": "boolean",
            "description": "Default: false. When true, labels speakers on segments/SRT. STT path only.",
            "default": false
          },
          "smartFormat": {
            "title": "Smart formatting",
            "type": "boolean",
            "description": "Default: true. Punctuation plus formatted dates, numbers, currency, phones, and emails in transcript. STT path only.",
            "default": true
          },
          "paragraphs": {
            "title": "Paragraph breaks",
            "type": "boolean",
            "description": "Default: true. Split transcript into readable paragraphs instead of one wall of text. STT path only.",
            "default": true
          },
          "summarize": {
            "title": "Summary",
            "type": "boolean",
            "description": "Default: false. When true, adds summary (short abstract) on STT items. English audio only — ignored for explicit non-English language. Caption-path items never have summaries.",
            "default": false
          },
          "includeSrt": {
            "title": "SRT subtitles",
            "type": "boolean",
            "description": "Default: true. When true, adds srt (ready-to-save .srt string built from segments).",
            "default": true
          },
          "includeVtt": {
            "title": "WebVTT subtitles",
            "type": "boolean",
            "description": "Default: false. When true, adds vtt. Caption path serves the cleaned native VTT; STT path builds VTT from utterances.",
            "default": false
          },
          "maxDurationMinutes": {
            "title": "Max duration (minutes)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Default: 180. Zero-setup runs check decoded audio duration before paid processing, including direct files; the full file must fit this limit, the run budget, and a 2 GiB decoded-audio cap. Select 4096 MiB run memory for complete input plus decoded audio; insufficient allocation returns an uncharged resource error. BYOK uses available Vimeo/RSS/HLS duration metadata; unknown-duration direct files have a 2048 MB size limit. Oversized items produce an error row without a partial transcript.",
            "default": 180
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}