# Transcribe Podcast to Text — Show Notes, SRT & Timestamps (`sian.agency/transcribe-podcast-to-text`) Actor

Transcribe podcast episodes to text in bulk. Speaker labels for hosts and guests, word-level timestamps, SRT/VTT for show notes. 99+ languages.

- **URL**: https://apify.com/sian.agency/transcribe-podcast-to-text.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Automation, Other, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.15 / 1,000 audio second processeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Transcribe Podcast to Text — Show Notes, SRT & Timestamps

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-97cc64)](https://apify.com/sian.agency?fpr=sian)
[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)
[![Instagram AI Transcript Extractor](https://img.shields.io/badge/Platform-Instagram-E4405F)](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian)
[![Best TikTok AI Transcript Extractor](https://img.shields.io/badge/Platform-TikTok-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian)
[![YouTube Shorts AI Transcript Extractor](https://img.shields.io/badge/Platform-YouTube%20Shorts-FF0000)](https://apify.com/sian.agency/youtube-shorts-ai-transcript-and-metadata-extractor?fpr=sian)
[![Facebook AI Transcript Extractor](https://img.shields.io/badge/Platform-Facebook-1877F2)](https://apify.com/sian.agency/facebook-ai-transcript-extractor?fpr=sian)

> **Transcribe podcast episodes to text in bulk.** Drop direct episode URLs from your hosting provider (Spotify for Podcasters, Buzzsprout, Libsyn, Transistor, Acast, Megaphone, …) or upload local episode files. Speaker labels for host and guests, word-level timestamps for SEO-friendly show notes, ready-to-use SRT/VTT for video podcast exports. 99+ languages.

---

### How to transcribe a podcast in 4 steps

1. **Paste your episode URLs** — most podcast hosts expose the raw `.mp3` URL on the episode page or in the RSS feed. Drop them into the `Podcast Episode URLs` field one per line, or upload local files via `audioFiles`.
2. **Pick your options** — auto-detect language or pick from 99+, toggle speaker diarization to label host vs guests, optionally translate non-English shows to English.
3. **Run the actor** — episodes process 10 at a time in parallel on the paid tier; an entire season's backlog can be transcribed in one run.
4. **Download results** — every episode lands in the dataset with the transcript, segment + word-level timestamps, speaker labels, and ready-to-use SRT/VTT subtitle strings.

Supported formats: MP3, M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM. Max 1 GB per file on the paid tier.

---

### Example output — podcast transcript with speaker labels

```json
{
  "transcript": "Welcome back to the show. Today I'm joined by... Thanks for having me, this is awesome...",
  "detected_language": "en",
  "duration": 2647.34,
  "segments": [
    {
      "id": 0,
      "text": "Welcome back to the show.",
      "start": 0.32,
      "end": 1.96,
      "speaker": "SPEAKER_00",
      "language": "en",
      "words": [
        { "word": "Welcome", "start": 0.32, "end": 0.74, "speaker": "SPEAKER_00" },
        { "word": "back",    "start": 0.74, "end": 0.98, "speaker": "SPEAKER_00" }
      ]
    },
    {
      "id": 1,
      "text": "Thanks for having me, this is awesome.",
      "start": 4.18,
      "end": 6.92,
      "speaker": "SPEAKER_01",
      "language": "en",
      "words": []
    }
  ],
  "srt": "1\n00:00:00,320 --> 00:00:01,960\nWelcome back to the show.\n\n2\n00:00:04,180 --> 00:00:06,920\nThanks for having me, this is awesome.",
  "vtt": "WEBVTT\n\n00:00:00.320 --> 00:00:01.960\nWelcome back to the show.\n\n00:00:04.180 --> 00:00:06.920\nThanks for having me, this is awesome.",
  "speakers": ["SPEAKER_00", "SPEAKER_01"],
  "languages": ["en"],
  "fileSizeMB": 38.4,
  "success": true
}
````

Every result includes the full transcript, segment-level timestamps, word-level timestamps, language detection, episode duration in seconds, file size, ready-to-use `srt` and `vtt` subtitle strings, and (when speaker diarization is enabled) speaker labels per segment and per word.

***

### Built for podcasters

- 📝 **Show notes** — auto-generate timestamped show notes for every episode and ship them with publication
- ✍️ **Blog repurposing** — turn an interview episode into 2,000-word SEO content in minutes
- 🎬 **YouTube subtitles** — upload SRT files alongside your video podcast for instant captions
- 🦻 **Accessibility** — give listeners with hearing impairments a full text version of every show
- 🔍 **Episode SEO** — searchable transcripts mean your back catalog gets discovered via Google for every quote
- 📊 **Quote pulling** — find the exact 12-second clip with the soundbite, with word-level timestamps for precise editing

***

### Speaker diarization for hosts and guests

Toggle the **Speaker Diarization** input to automatically separate the host from each guest. Each segment and each word receives a `speaker` label (`SPEAKER_00`, `SPEAKER_01`, …) — perfect for interview-style shows where attribution matters. Powered by pyannote-audio. Charged per audio second; only billed when enabled.

***

### SRT / VTT export for YouTube uploads

Every transcription returns ready-to-use `srt` and `vtt` subtitle strings. Save the field value as a `.srt` or `.vtt` file and:

- Upload alongside your video podcast on YouTube for instant accurate captions
- Add HTML5 `<track>` accessibility captions to embedded episodes on your site
- Build a chapter-and-quote searchable archive of your back catalog

Set **Timestamp Granularities** to `word` for cue precision down to individual words.

***

### Why podcasters choose this transcriber

- ✅ **Episode-URL-first** — works directly with raw `.mp3` URLs from Spotify for Podcasters, Buzzsprout, Libsyn, Transistor, Acast, Megaphone, RSS feeds, and any other host
- 🎤 **Host vs guest separation** via pyannote-audio diarization — perfect for interview shows
- ⏱️ **Word-level timestamps** — pull the exact 12-second clip for soundbites without scrubbing audio
- 🎬 **SRT and VTT included** on every successful run — drop straight into YouTube uploads of your video podcast
- 📝 **Show-notes-ready output** — segments\[] gives you natural chapter boundaries and quotable lines
- 🌍 **99+ languages** — supports multilingual podcasts and international shows
- 🇪🇺 **EU-region processing** for GDPR-aligned workflows
- 💰 **Pay per audio second** — a 60-minute episode with diarization is ~$2.16, vs $30+ at typical podcast transcription services

***

### Use cases

- 🎙️ **Interview-show podcasters** — generate publication-ready transcripts of every guest episode for show notes and blog posts
- 📺 **Video podcast creators** — get SRT files ready to upload to YouTube alongside the episode video
- 📊 **Podcast network operators** — bulk-transcribe an entire show's back catalog overnight for SEO and discovery
- ✍️ **Solo content creators** — turn a 60-minute episode into a 2,000-word blog post in one workflow
- 🔍 **Researchers studying podcasts** — academic, journalistic, or market research projects requiring searchable text corpora
- 🦻 **Accessibility-conscious shows** — provide a full transcript on every episode page for hearing-impaired listeners
- 🌐 **Translators and localizers** — transcribe foreign-language podcasts and translate them to English in a single pass

***

### Pricing & tiers

Pay only for the audio seconds you actually transcribe. No subscriptions, no minimums.

| FREE tier | PAID tier |
|---|---|
| Perfect for testing and small jobs | Built for production volume |
| Up to 5 episodes per run | Unlimited episodes per run |
| 50 MB max per file | 1 GB max per file |
| 200 MB / 20 minutes monthly | Unlimited monthly volume |
| 3 concurrent files | 10 concurrent files (10× parallel) |
| No credit card required | $0.0005 per audio second |

**Optional add-ons** (only billed when enabled):

| Feature | Price |
|---|---|
| Speaker diarization | $0.0001 per audio second |
| Translate to English | $0.0003 per audio second |
| EU-region processing | $0.0007 per audio second (replaces base $0.0005) |

A 60-minute episode with diarization on the paid tier costs approximately **$2.16** ($1.80 transcription + $0.36 diarization). A whole 30-episode season with diarization: ~$65.

***

### Integration examples

#### JavaScript / Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('sian.agency/transcribe-podcast-to-text').call({
    audioUrls: ['https://traffic.libsyn.com/yourshow/episode-42.mp3'],
    speakerDiarization: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcript);
console.log(items[0].srt); // ready to upload to YouTube
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('sian.agency/transcribe-podcast-to-text').call(run_input={
    'audioUrls': ['https://traffic.libsyn.com/yourshow/episode-42.mp3'],
    'speakerDiarization': True,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[0]['transcript'])
print(items[0]['vtt'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~transcribe-podcast-to-text/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "audioUrls": ["https://traffic.libsyn.com/yourshow/episode-42.mp3"],
    "speakerDiarization": true
  }'
```

#### n8n / Zapier / Make

Wire this actor onto an "RSS feed updated" trigger or your podcast host's webhook. Pass the new episode URL into `audioUrls`, capture `transcript`, `segments[].words[]`, `srt`, and `vtt` from the dataset, then route to your CMS (publish show notes), YouTube (upload SRT), or your blog (auto-draft a repurposed post).

***

### FAQ

**How accurate is podcast transcription?**
Powered by an industrial speech-to-text pipeline tuned for natural conversation. Accuracy is typically 95–99% on professionally recorded podcasts, lower on remote-recorded shows with poor audio. Word-level timestamps are returned even when accuracy is imperfect, so you can verify and correct quote attributions quickly.

**What audio and video formats are supported?**
MP3 (most common podcast format), M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM. Max 50 MB per file on the free tier, 1 GB per file on the paid tier (long-form interview shows up to ~10 hours fit comfortably).

**Can I transcribe non-English podcasts?**
Yes — auto-detection across 99+ languages. Toggle **Translate to English** to receive an English transcript alongside the timestamps — perfect for translating foreign-language shows for English-speaking audiences.

**Is speaker diarization included?**
Yes, opt-in via the **Speaker Diarization** toggle. Each segment and word gets labeled `SPEAKER_00` (host), `SPEAKER_01` (first guest), etc. Powered by pyannote-audio. Billed at $0.0001 per audio second only when enabled.

**How does pricing work?**
Pay-per-audio-second. The free tier covers small jobs and testing without a credit card. The paid tier is $0.0005 per second of audio. A 60-minute episode with diarization is ~$2.16 — versus dedicated podcast transcription services typically charging $30+ for the same length.

**Can I integrate this with my podcast hosting workflow?**
Yes. The actor exposes a standard Apify run/dataset API. Trigger on an RSS feed update or your podcast host's webhook (Buzzsprout, Transistor, Acast, Megaphone), run the actor, route the dataset record into your CMS, blog, YouTube uploader, or social media scheduler.

**Does this work with Spotify for Podcasters, Apple Podcasts, etc.?**
The actor consumes the raw `.mp3` URL from your podcast host, not the Spotify or Apple Podcasts page. All major hosts (Spotify for Podcasters, Buzzsprout, Libsyn, Transistor, Acast, Megaphone, Captivate, RedCircle) expose direct `.mp3` URLs in their RSS feed or episode page.

**How long does a transcription take?**
A 60-minute episode takes 1–3 minutes on the paid tier. A 30-episode season can be transcribed in 30–60 minutes (parallelized).

***

### Legal disclaimer

Use this actor only on podcast episodes you have rights to transcribe — your own shows, content with creator consent, or properly licensed material. Many podcast feeds are publicly accessible, but transcript publishing rights vary by show and platform. The actor does not retain audio or transcripts beyond the run's lifetime. **EU-region processing** is available via the EU Processing toggle for GDPR-aligned workflows. SIÁN Agency provides this actor as-is.

***

### Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)
[![Email](https://img.shields.io/badge/Email-support%40sian--agency.online-EA4335)](mailto:support@sian-agency.online)
[![SIÁN Agency](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-97cc64)](https://apify.com/sian.agency?fpr=sian)

Join the Telegram support group, email **support@sian-agency.online**, or open an issue on the [SIÁN Agency Apify Store](https://apify.com/sian.agency?fpr=sian) page.

***

### More from SIÁN Agency

Platform-specific scrapers + transcribers:

- [Instagram AI Transcript Extractor](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian)
- [Best TikTok AI Transcript Extractor](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian)
- [YouTube Shorts AI Transcript Extractor](https://apify.com/sian.agency/youtube-shorts-ai-transcript-and-metadata-extractor?fpr=sian)
- [Facebook AI Transcript Extractor](https://apify.com/sian.agency/facebook-ai-transcript-extractor?fpr=sian)

Browse the full [SIÁN Agency Apify Store](https://apify.com/sian.agency?fpr=sian) for all available actors.

***

# Actor input Schema

## `audioUrls` (type: `array`):

Add direct podcast episode URLs (one per line). Most podcast hosting providers expose the raw `.mp3` URL on the episode page or in the RSS feed. Bulk-paste an entire backlog to transcribe a season at once.

🚫 **Social media links are rejected** — use the specialized actors linked in the description.

✅ **Valid:** `https://example.com/episode-42.mp3`, `https://traffic.libsyn.com/show/episode.mp3`

**Supported Formats:** MP3, M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM
**Max file size:** 1GB

## `audioFiles` (type: `array`):

Upload episode files directly (e.g. raw recording masters before publishing, or downloaded back-catalog files).

**Supported Formats:** MP3, M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM
**Max file size:** 1GB per file

Mix uploads with **Podcast Episode URLs** above — both lists are processed together.

## `language` (type: `string`):

Language spoken in the audio. Leave as 'Auto-detect' for automatic language detection.

## `translateToEnglish` (type: `boolean`):

Translate non-English audio into English. Additional charges apply for translation service.

## `useEuServers` (type: `boolean`):

Process data within the EU for GDPR compliance. Higher processing rates apply for EU servers.

## `speakerDiarization` (type: `boolean`):

Identify and label different speakers in the audio (e.g., SPEAKER\_00, SPEAKER\_01). Perfect for meetings, interviews, and multi-person conversations. Additional charges apply.

## Actor input object example

```json
{
  "audioUrls": [
    "https://raw.githubusercontent.com/rara-cyber/podcast-test-file/main/KchSfOdwCJE-56eb7ccd6dc030fa3cc280ab26925c4e234.opus"
  ],
  "language": "auto",
  "translateToEnglish": false,
  "useEuServers": false,
  "speakerDiarization": false
}
```

# Actor output Schema

## `audioTranscripts` (type: `string`):

Processed transcription data with timestamps, speaker diarization, detected languages, and file metadata

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed transcriptions with key metrics

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "audioUrls": [
        "https://raw.githubusercontent.com/rara-cyber/podcast-test-file/main/KchSfOdwCJE-56eb7ccd6dc030fa3cc280ab26925c4e234.opus"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/transcribe-podcast-to-text").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "audioUrls": ["https://raw.githubusercontent.com/rara-cyber/podcast-test-file/main/KchSfOdwCJE-56eb7ccd6dc030fa3cc280ab26925c4e234.opus"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/transcribe-podcast-to-text").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "audioUrls": [
    "https://raw.githubusercontent.com/rara-cyber/podcast-test-file/main/KchSfOdwCJE-56eb7ccd6dc030fa3cc280ab26925c4e234.opus"
  ]
}' |
apify call sian.agency/transcribe-podcast-to-text --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/transcribe-podcast-to-text",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Transcribe Podcast to Text — Show Notes, SRT & Timestamps",
        "description": "Transcribe podcast episodes to text in bulk. Speaker labels for hosts and guests, word-level timestamps, SRT/VTT for show notes. 99+ languages.",
        "version": "1.0",
        "x-build-id": "w1tKFJpgv0aoZN5iN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~transcribe-podcast-to-text/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-transcribe-podcast-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/sian.agency~transcribe-podcast-to-text/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-transcribe-podcast-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/sian.agency~transcribe-podcast-to-text/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-transcribe-podcast-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": {
                    "audioUrls": {
                        "title": "Podcast Episode URLs",
                        "type": "array",
                        "description": "Add direct podcast episode URLs (one per line). Most podcast hosting providers expose the raw `.mp3` URL on the episode page or in the RSS feed. Bulk-paste an entire backlog to transcribe a season at once.\n\n🚫 **Social media links are rejected** — use the specialized actors linked in the description.\n\n✅ **Valid:** `https://example.com/episode-42.mp3`, `https://traffic.libsyn.com/show/episode.mp3`\n\n**Supported Formats:** MP3, M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM\n**Max file size:** 1GB",
                        "items": {
                            "type": "string"
                        }
                    },
                    "audioFiles": {
                        "title": "Upload Podcast Episode Files",
                        "type": "array",
                        "description": "Upload episode files directly (e.g. raw recording masters before publishing, or downloaded back-catalog files).\n\n**Supported Formats:** MP3, M4A, WAV, FLAC, AAC, OPUS, OGG, MP4, MOV, WebM\n**Max file size:** 1GB per file\n\nMix uploads with **Podcast Episode URLs** above — both lists are processed together."
                    },
                    "language": {
                        "title": "Language (Optional)",
                        "enum": [
                            "auto",
                            "english",
                            "chinese",
                            "german",
                            "spanish",
                            "russian",
                            "korean",
                            "french",
                            "japanese",
                            "portuguese",
                            "turkish",
                            "polish",
                            "catalan",
                            "dutch",
                            "arabic",
                            "swedish",
                            "italian",
                            "indonesian",
                            "hindi",
                            "finnish",
                            "vietnamese",
                            "hebrew",
                            "ukrainian",
                            "greek",
                            "malay",
                            "czech",
                            "romanian",
                            "danish",
                            "hungarian",
                            "tamil",
                            "norwegian",
                            "thai",
                            "urdu",
                            "croatian",
                            "bulgarian",
                            "lithuanian",
                            "latin",
                            "maori",
                            "malayalam",
                            "welsh",
                            "slovak",
                            "telugu",
                            "persian",
                            "latvian",
                            "bengali",
                            "serbian",
                            "azerbaijani",
                            "slovenian",
                            "kannada",
                            "estonian",
                            "macedonian",
                            "breton",
                            "basque",
                            "icelandic",
                            "armenian",
                            "nepali",
                            "mongolian",
                            "bosnian",
                            "kazakh",
                            "albanian",
                            "swahili",
                            "galician",
                            "marathi",
                            "punjabi",
                            "sinhala",
                            "khmer",
                            "shona",
                            "yoruba",
                            "somali",
                            "afrikaans",
                            "occitan",
                            "georgian",
                            "belarusian",
                            "tajik",
                            "sindhi",
                            "gujarati",
                            "amharic",
                            "yiddish",
                            "lao",
                            "uzbek",
                            "faroese",
                            "haitian creole",
                            "pashto",
                            "turkmen",
                            "nynorsk",
                            "maltese",
                            "sanskrit",
                            "luxembourgish",
                            "myanmar",
                            "tibetan",
                            "tagalog",
                            "malagasy",
                            "assamese",
                            "tatar",
                            "hawaiian",
                            "lingala",
                            "hausa",
                            "bashkir",
                            "javanese",
                            "sundanese",
                            "cantonese"
                        ],
                        "type": "string",
                        "description": "Language spoken in the audio. Leave as 'Auto-detect' for automatic language detection.",
                        "default": "auto"
                    },
                    "translateToEnglish": {
                        "title": "🔄 Translate to English (PAID)",
                        "type": "boolean",
                        "description": "Translate non-English audio into English. Additional charges apply for translation service.",
                        "default": false
                    },
                    "useEuServers": {
                        "title": "🇪🇺 EU-Based Processing (PAID)",
                        "type": "boolean",
                        "description": "Process data within the EU for GDPR compliance. Higher processing rates apply for EU servers.",
                        "default": false
                    },
                    "speakerDiarization": {
                        "title": "🎤 Speaker Diarization (PAID)",
                        "type": "boolean",
                        "description": "Identify and label different speakers in the audio (e.g., SPEAKER_00, SPEAKER_01). Perfect for meetings, interviews, and multi-person conversations. Additional charges apply.",
                        "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
