# Transcribe Zoom Meeting to Text — Bulk Meeting Transcription (`sian.agency/transcribe-zoom-meeting-to-text`) Actor

Transcribe Zoom recordings to text in bulk. Speaker labels for host and participants, word-level timestamps, SRT/VTT export. 99+ languages. Try free.

- **URL**: https://apify.com/sian.agency/transcribe-zoom-meeting-to-text.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Automation, Integrations, Other
- **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 Zoom Meeting to Text — Bulk Meeting Transcription

[![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 Zoom recordings to text in bulk.** Plug into n8n, Zapier, or Make to auto-transcribe every cloud recording the moment it lands — no Otter subscription, no manual upload. Speaker labels for host and participants, word-level timestamps, SRT/VTT subtitles, 99+ languages.

---

### How to transcribe a Zoom recording in 4 steps

1. **Drop in Zoom recording URLs** — pull URLs from the Zoom Cloud Recording API (`/v2/users/{userId}/recordings`) and feed them straight into the `audioUrls` field. Or upload local `.mp4`/`.m4a` exports via `audioFiles`.
2. **Pick your options** — auto-detect language, toggle speaker diarization to separate host from participants, optionally translate non-English meetings to English.
3. **Run the actor** — recordings process 10 at a time in parallel on the paid tier; an entire team's weekly recordings can be transcribed in minutes.
4. **Download results** — every recording lands in the dataset with the transcript, segment + word-level timestamps, speaker labels, and ready-to-use SRT/VTT subtitle strings.

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

---

### Example output — Zoom meeting transcript with speaker labels

```json
{
  "transcript": "Thanks for joining everyone — let's start with the launch checklist. So Sarah, where are we on the email sequence?...",
  "detected_language": "en",
  "duration": 1842.5,
  "segments": [
    {
      "id": 0,
      "text": "Thanks for joining everyone — let's start with the launch checklist.",
      "start": 0.18,
      "end": 4.92,
      "speaker": "SPEAKER_00",
      "language": "en",
      "words": [
        { "word": "Thanks", "start": 0.18, "end": 0.62, "speaker": "SPEAKER_00" }
      ]
    },
    {
      "id": 1,
      "text": "So Sarah, where are we on the email sequence?",
      "start": 5.40,
      "end": 8.12,
      "speaker": "SPEAKER_00",
      "language": "en",
      "words": []
    }
  ],
  "srt": "1\n00:00:00,180 --> 00:00:04,920\nThanks for joining everyone — let's start with the launch checklist.\n\n2\n00:00:05,400 --> 00:00:08,120\nSo Sarah, where are we on the email sequence?",
  "vtt": "WEBVTT\n\n00:00:00.180 --> 00:00:04.920\nThanks for joining everyone — let's start with the launch checklist.\n\n00:00:05.400 --> 00:00:08.120\nSo Sarah, where are we on the email sequence?",
  "speakers": ["SPEAKER_00", "SPEAKER_01", "SPEAKER_02"],
  "languages": ["en"],
  "fileSizeMB": 84.3,
  "success": true
}
````

Every result includes the full transcript, segment-level timestamps, word-level timestamps, language detection, recording 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 sales, support, and ops teams

- 📞 **Sales call coaching** — review every demo, identify objection-handling gaps, share quote-level highlights
- 🎧 **Customer support QA** — sample escalations, score CSAT-affecting moments, train new agents
- 🗂️ **Meeting archives** — searchable transcripts of every quarterly review, planning meeting, and stakeholder sync
- ⚖️ **Compliance review** — tamper-evident transcripts of regulated conversations
- 🤝 **Sales hand-off notes** — auto-generate transcripts from discovery calls so AEs and CSMs share the same source of truth

The killer combo: **n8n / Zapier trigger on Zoom Cloud Recording → this actor → your Notion/Slack/CRM.** Zero manual steps.

***

### Speaker diarization for host and participants

Toggle the **Speaker Diarization** input to separate every speaker in the meeting. Each segment and each word receives a `speaker` label (`SPEAKER_00`, `SPEAKER_01`, …), so you can build clean transcripts where the host's questions and each participant's answers are clearly distinguished. Powered by pyannote-audio. Charged per audio second; only billed when enabled.

***

### SRT / VTT export for internal video archives

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

- Caption an internal video library (Notion, Confluence, SharePoint, Drive)
- Build a searchable training-material archive for new hire onboarding
- Add HTML5 `<track>` accessibility captions to embedded recordings

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

***

### Why teams choose this Zoom transcriber

- ✅ **API-first integration** — built to plug into n8n, Zapier, Make, or your own webhook on the Zoom Cloud Recording event
- 🎤 **Host vs participant separation** via pyannote-audio diarization — clean attributed transcripts for sales coaching and QA
- ⏱️ **Word-level timestamps** for every word — find any quote in a 90-minute call in seconds
- 🎬 **SRT and VTT included** on every successful run — caption internal training videos with no extra step
- 🌍 **99+ languages** — global teams, multilingual customers, EU offices all supported
- 🇪🇺 **EU-region processing** for GDPR-aligned workflows
- 💰 **Pay per audio second** — no Otter subscription, no minimums; only pay for the recordings you actually transcribe
- 🚀 **10× parallel** on the paid tier — an entire team's weekly recordings done in minutes, not hours

***

### Use cases

- 📞 **Sales teams** auto-transcribing every demo and discovery call for coaching, deal review, and CRM enrichment
- 🎧 **Customer support leaders** sampling escalation calls for QA scoring and agent training
- 🗂️ **Operations teams** archiving every all-hands, planning meeting, and quarterly review as a searchable text record
- ⚖️ **Compliance officers** maintaining tamper-evident transcripts of regulated conversations (finance, healthcare, legal)
- 🤝 **Account managers** generating clean handoff notes between SDR → AE → CSM stages
- 🌐 **Localization teams** translating multilingual customer calls to English for internal review
- 🧪 **Product researchers** transcribing user interviews and usability sessions for thematic coding

***

### 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 recordings per run | Unlimited recordings 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 meeting with diarization on the paid tier costs approximately **$2.16** ($1.80 transcription + $0.36 diarization). Compare to per-seat meeting-transcription SaaS pricing.

***

### 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-zoom-meeting-to-text').call({
    audioUrls: ['https://your-org.zoom.us/recording/share/...'],
    speakerDiarization: true,
});

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

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('sian.agency/transcribe-zoom-meeting-to-text').call(run_input={
    'audioUrls': ['https://your-org.zoom.us/recording/share/...'],
    '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-zoom-meeting-to-text/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "audioUrls": ["https://your-org.zoom.us/recording/share/..."],
    "speakerDiarization": true
  }'
```

#### n8n / Zapier / Make

Wire this actor onto the **Zoom Cloud Recording Completed** webhook. Pass the recording URL into `audioUrls`, capture `transcript`, `segments[].words[]`, `srt`, and `vtt` from the dataset, then route to Notion (meeting notes), Slack (digest), Salesforce/HubSpot (call attached to deal), or Google Sheets (compliance log) — no transformation step needed.

***

### FAQ

**How accurate is Zoom meeting transcription?**
Powered by an industrial speech-to-text pipeline tuned for natural conversation. Accuracy is typically 95–99% on Zoom audio with clean microphones, lower on speakerphone or noisy environments. 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?**
MP4, MOV, M4A, MP3, WAV, FLAC, AAC, OPUS, OGG, WebM. Zoom Cloud Recordings export as MP4 or M4A, both work directly. Max 50 MB per file on the free tier, 1 GB on the paid tier.

**Can I transcribe non-English meetings?**
Yes — auto-detection across 99+ languages including Spanish, French, German, Mandarin, Japanese, Portuguese, Arabic, Hindi, and many more. Toggle **Translate to English** to receive an English transcript alongside the timestamps.

**Is speaker diarization included?**
Yes, opt-in via the **Speaker Diarization** toggle. Each segment and word gets labeled `SPEAKER_00`, `SPEAKER_01`, 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, plus optional add-ons for diarization, translation, and EU processing. No subscriptions, no per-seat fees.

**Can I integrate this with n8n, Zapier, or Make?**
Yes — that's the primary use case. The actor exposes a standard Apify run/dataset API. Trigger on the Zoom Cloud Recording Completed event, run the actor, route the dataset record into your downstream tools.

**Does this work with Zoom cloud recordings or only local files?**
Both. Pass cloud recording URLs from the Zoom API directly, or upload local MP4/M4A exports. The actor downloads and transcribes either source.

**What about Microsoft Teams, Google Meet, or Webex recordings?**
Yes. Despite the niche name, this actor accepts any meeting recording URL or file from any platform. Zoom is just the most common source.

***

### Legal disclaimer

Use this actor only on meeting recordings you have rights to transcribe — your own meetings, recordings with all participants' consent, or properly licensed content. Some jurisdictions require all-party consent for recording calls; you are responsible for compliance. 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 Zoom cloud recording URLs or direct MP4/M4A links (one per line). Pull URLs from Zoom's `/v2/users/{userId}/recordings` API and feed them straight in via n8n/Zapier/Make.

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

✅ **Valid:** direct MP4/MP3/M4A URLs from Zoom cloud recordings, your S3, or any CDN.

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

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

Upload Zoom recording files directly (e.g. exported `.mp4` or `.m4a` audio-only versions). Useful when you've already downloaded the meeting recording locally.

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

Mix uploads with **Zoom Recording 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-zoom-meeting-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-zoom-meeting-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-zoom-meeting-to-text --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Transcribe Zoom Meeting to Text — Bulk Meeting Transcription",
        "description": "Transcribe Zoom recordings to text in bulk. Speaker labels for host and participants, word-level timestamps, SRT/VTT export. 99+ languages. Try free.",
        "version": "1.0",
        "x-build-id": "ajnaz5FIHnzrRIcBO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~transcribe-zoom-meeting-to-text/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-transcribe-zoom-meeting-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-zoom-meeting-to-text/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-transcribe-zoom-meeting-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-zoom-meeting-to-text/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-transcribe-zoom-meeting-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": "Zoom Recording URLs",
                        "type": "array",
                        "description": "Add Zoom cloud recording URLs or direct MP4/M4A links (one per line). Pull URLs from Zoom's `/v2/users/{userId}/recordings` API and feed them straight in via n8n/Zapier/Make.\n\n🚫 **Social media links are rejected** — use the specialized actors linked in the description.\n\n✅ **Valid:** direct MP4/MP3/M4A URLs from Zoom cloud recordings, your S3, or any CDN.\n\n**Supported Formats:** MP3, WAV, FLAC, AAC, OPUS, OGG, M4A, MP4, MPEG, MOV, WebM\n**Max file size:** 1GB",
                        "items": {
                            "type": "string"
                        }
                    },
                    "audioFiles": {
                        "title": "Upload Meeting Recording Files",
                        "type": "array",
                        "description": "Upload Zoom recording files directly (e.g. exported `.mp4` or `.m4a` audio-only versions). Useful when you've already downloaded the meeting recording locally.\n\n**Supported Formats:** MP4, MOV, M4A, MP3, WAV, FLAC, AAC, OPUS, OGG, WebM\n**Max file size:** 1GB per file\n\nMix uploads with **Zoom Recording 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
