{
  "openapi": "3.0.1",
  "info": {
    "title": "Video to Text: TikTok, Instagram Reels & MP4 Transcriber",
    "description": "Convert video to text: transcribe TikTok videos, Instagram Reels, X and Facebook videos and MP4, MOV, WEBM files (or Google Drive / Dropbox links) to a full transcript, timestamps and SRT/VTT subtitles in 99 languages, or translate to English. Open-source Whisper, no API key, pay per minute.",
    "version": "1.0",
    "x-build-id": "1hasK8z2wMjN5G9gJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fguiraud~video-to-text-transcriber/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fguiraud-video-to-text-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/fguiraud~video-to-text-transcriber/runs": {
      "post": {
        "operationId": "runs-sync-fguiraud-video-to-text-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/fguiraud~video-to-text-transcriber/run-sync": {
      "post": {
        "operationId": "run-sync-fguiraud-video-to-text-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": {
          "sources": {
            "title": "Video URLs",
            "type": "array",
            "description": "Links to your videos: TikTok, Instagram (Reels, posts), X (Twitter) and Facebook (videos, Reels, Watch) links, or direct links to media files (MP4, MOV, MKV, WEBM, MP3, M4A, WAV and more). Google Drive, Dropbox, OneDrive and GitHub share links work too (shared as 'Anyone with the link'). YouTube is not supported: use YouTube Transcript Scraper for YouTube videos.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "profiles": {
            "title": "TikTok accounts",
            "type": "array",
            "description": "TikTok accounts to transcribe, as '@username' or a profile link (https://www.tiktok.com/@username). The newest videos of each account are transcribed (see 'Videos per account'). Instagram profiles are not supported: paste the Reel links in 'Video URLs' instead.",
            "items": {
              "type": "string"
            }
          },
          "maxVideosPerProfile": {
            "title": "Videos per account",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many of the newest videos to transcribe from each TikTok account.",
            "default": 10
          },
          "onlyNewVideos": {
            "title": "Only new videos",
            "type": "boolean",
            "description": "Skip TikTok videos already transcribed by previous runs of this Actor in your account (remembered in a key-value store named 'transcriber-state-video'). Ideal for a weekly schedule: you only pay for new videos.",
            "default": true
          },
          "base64Files": {
            "title": "Files as base64 (optional)",
            "type": "array",
            "description": "Short media files without a URL, e.g. from an AI agent: [{\"fileName\": \"memo.m4a\", \"content\": \"<base64>\"}]. Keep the total input under ~9 MB; use URLs for longer recordings."
          },
          "model": {
            "title": "Model",
            "enum": [
              "base",
              "small",
              "tiny"
            ],
            "type": "string",
            "description": "'base': good accuracy, fast (recommended). 'small': best accuracy, especially for accents, noisy audio and non-English speech; slower and billed at a higher per-minute price. 'tiny': fastest draft quality.",
            "default": "base"
          },
          "language": {
            "title": "Spoken language",
            "type": "string",
            "description": "ISO code of the spoken language (en, es, de, fr, pt, it, ja, zh, ...) or 'auto' to detect it. Setting it avoids misdetection on short clips.",
            "default": "auto"
          },
          "task": {
            "title": "Task",
            "enum": [
              "transcribe",
              "translate"
            ],
            "type": "string",
            "description": "'transcribe': text in the spoken language. 'translate': translate the speech to English text.",
            "default": "transcribe"
          },
          "vocabulary": {
            "title": "Vocabulary (names, jargon)",
            "type": "array",
            "description": "Words the speech recognition should favour: people and company names, product names, technical terms (e.g. 'Kubernetes', 'Dr. Nguyen', 'Apify'). Improves spelling of rare words.",
            "items": {
              "type": "string"
            }
          },
          "outputs": {
            "title": "What to return",
            "type": "array",
            "description": "'text': full transcript split into paragraphs at pauses. 'segments': timestamped segments. 'srt' / 'vtt': ready-to-use subtitle files. 'chunks': ~chunkSize-character passages with start/end times and a token estimate, ready for vector databases. 'markdown': paragraphs prefixed with their start time, e.g. '**[00:01:23]** ...'.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "markdown",
                "segments",
                "srt",
                "vtt",
                "chunks"
              ],
              "enumTitles": [
                "Text",
                "Markdown with timestamps",
                "Timestamped segments",
                "SRT subtitles",
                "WebVTT subtitles",
                "RAG chunks with timestamps"
              ]
            },
            "default": [
              "text",
              "srt"
            ]
          },
          "subtitleMaxChars": {
            "title": "Subtitle line length (characters)",
            "minimum": 0,
            "maximum": 80,
            "type": "integer",
            "description": "Characters per subtitle line in SRT/VTT (42 is the broadcast and YouTube standard; 32-37 for vertical video). 0 keeps Whisper's long raw segments.",
            "default": 42
          },
          "subtitleMaxLines": {
            "title": "Lines per subtitle",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Maximum lines shown at once in each subtitle (when line length is set).",
            "default": 2
          },
          "subtitleMaxDuration": {
            "title": "Max seconds per subtitle",
            "minimum": 1,
            "maximum": 15,
            "type": "number",
            "description": "Longest time a single subtitle stays on screen (when line length is set).",
            "default": 6
          },
          "aiInsights": {
            "title": "AI summary, chapters and action items",
            "type": "boolean",
            "description": "Analyse each transcript with Claude: title, summary, key points, chapters with start times, action items and topics (in 'insights'). Requires your Anthropic API key; Claude usage is billed to your Anthropic account, plus one small 'AI insights' event per file.",
            "default": false
          },
          "anthropicApiKey": {
            "title": "Anthropic API key",
            "type": "string",
            "description": "Your key from console.anthropic.com. Stored as a secret input; used only to call Claude for this run."
          },
          "insightsModel": {
            "title": "Claude model",
            "enum": [
              "claude-opus-5",
              "claude-sonnet-5",
              "claude-haiku-4-5"
            ],
            "type": "string",
            "description": "'claude-opus-5': best quality (default). 'claude-sonnet-5': cheaper, great for meetings and podcasts. 'claude-haiku-4-5': cheapest (transcripts up to ~2 hours).",
            "default": "claude-opus-5"
          },
          "insightsInstructions": {
            "title": "Insights instructions",
            "type": "string",
            "description": "Optional, e.g. 'Summarise in Spanish', 'Focus on decisions and owners', 'Chapters every ~10 minutes'."
          },
          "saveFiles": {
            "title": "Also save downloadable files",
            "type": "boolean",
            "description": "Save the transcript (.txt) and subtitles (.srt / .vtt, if selected in outputs) as files in the run's key-value store; the result includes their download links.",
            "default": true
          },
          "wordTimestamps": {
            "title": "Word-level timestamps",
            "type": "boolean",
            "description": "Add start/end times for every word inside each segment (for karaoke-style captions or precise search). Slightly slower.",
            "default": false
          },
          "chunkSize": {
            "title": "Chunk size (characters)",
            "minimum": 200,
            "maximum": 20000,
            "type": "integer",
            "description": "Target size of 'RAG chunks'.",
            "default": 1000
          },
          "skipSilence": {
            "title": "Skip silence",
            "type": "boolean",
            "description": "Detect speech first and skip silent parts. Faster and reduces hallucinated text in long pauses.",
            "default": true
          },
          "maxDurationMinutes": {
            "title": "Max minutes per file",
            "minimum": 1,
            "maximum": 1440,
            "type": "integer",
            "description": "Only the first N minutes of each file are transcribed (and billed).",
            "default": 240
          },
          "maxFileSizeMb": {
            "title": "Max file size (MB)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Larger files are skipped (not billed).",
            "default": 1000
          },
          "failOnError": {
            "title": "Fail the run if any file fails",
            "type": "boolean",
            "description": "Mark the run as FAILED when a file cannot be transcribed. Useful for pipelines and monitoring.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}