# Audio Transcription API – Speech to Text (`sfoln/audio-transcription`)

Transcribe audio and video files (MP3, WAV, M4A, MP4…) to text by URL with Mistral Voxtral: language detection, optional segment timestamps and speaker labels. $10.50 per 1,000 audio minutes, billed per started minute; failed files are free.

- Family: Documents & media
- Categories: AI, Developer tools, Automation
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: Audio Transcription API – Speech to Text (sfoln/audio-transcription)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/audio-transcription.json
- MCP: https://mcp.apify.com?tools=sfoln/audio-transcription
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~audio-transcription/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~audio-transcription/runs

Audio Transcription API – Speech to Text transcribes podcasts, interviews, meetings, voice notes, webinars and videos to text in bulk. Give the Actor direct URLs of audio or video files and get one transcript per file with detected language, duration and word count — plus optional segment timestamps and speaker labels. Transcription is performed by Mistral Voxtral Mini Transcribe 2, a speech model with strong accuracy across major languages and files of up to about 3 hours.

## Price per delivered record

| Event | Price | Per 1,000 | Charged for |
| --- | --- | --- | --- |
| Transcribed audio minute (`transcription-minute`) | $0.0105 | $10.5 / 1,000 | Charged per started minute of audio transcribed (a 3 min 20 s file = 4 events). |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 5 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~audio-transcription/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"audioUrls":["https://docs.mistral.ai/audio/obama.mp3"]}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/audio-transcription"
    }
  }
}
```

Example prompt: Transcribe https://docs.mistral.ai/audio/obama.mp3 with segment timestamps and give me a short summary of what is said.

## Input

List publicly reachable audio or video file URLs. Each file produces one dataset record with the transcript.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `audioUrls` (required) | array | — | Audio / video URLs: Direct, public URLs of audio or video files (MP3, WAV, M4A, FLAC, OGG, MP4, MOV, WEBM…), one per line. Up to about 3 hours per file. Page URLs (e.g. YouTube watch pages) are not supported. Accounts on the Apify free plan can process up to 5 files per run. |
| `language` | string | — | Language: Optional ISO 639-1 language code of the speech (e.g. en, de, fr, es). Improves accuracy; leave empty for automatic detection. |
| `timestamps` | boolean | `false` | Segment timestamps: Return the transcript split into segments with start/end times in seconds. |
| `diarize` | boolean | `false` | Speaker labels: Label segments by speaker (speaker_1, speaker_2, …). Implies segment timestamps. |
| `maxFileSizeMb` | integer | `100` | Max file size (MB): Files larger than this are skipped without charge. |
| `maxFiles` | integer | `100` | Max files: Safety cap on the number of files processed in this run. |
| `concurrency` | integer | `3` | Concurrency: Files transcribed in parallel. |
| `includeRaw` | boolean | `false` | Include raw upstream response: Attach the unmodified transcription response to each record. |

Example input:

```json
{
  "audioUrls": [
    "https://docs.mistral.ai/audio/obama.mp3"
  ]
}
```

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| Field | Type | Meaning |
| --- | --- | --- |
| `input` | string | Input: URL as submitted. |
| `url` | string | URL |
| `language` | string | null | Language: Detected (or requested) language code. |
| `text` | string | Transcript |
| `durationSecs` | number | Duration (s) |
| `billedMinutes` | integer | Billed minutes: Started minutes charged as transcription-minute events. |
| `wordCount` | integer | Words |
| `segmentCount` | integer | Segments |
| `segments` | array | Segments: [{ start, end, text, speaker }] — only with timestamps or diarize. |
| `model` | string | Model |
| `fileSizeBytes` | integer | File size (bytes): Size the server reported for the file; on skipped_invalid records with error code file_too_large. |
| `estimatedMinutes` | integer | Estimated minutes: Estimated length in started minutes (from the file size); on records refused because of the free-plan length limit or the remaining budget. |
| `warnings` | array | Warnings |
| `status` | string | Status: ok \| not_found \| error \| skipped_invalid \| skipped_budget \| skipped_free_plan |
| `charged` | boolean | Charged |
| `source` | string | Source |
| `fetchedAt` | string | Fetched at |

Example record:

```json
{
  "input": "https://docs.mistral.ai/audio/obama.mp3",
  "url": "https://docs.mistral.ai/audio/obama.mp3",
  "language": "en",
  "text": "This week, I traveled to Chicago to deliver my final farewell address to the nation, ...",
  "durationSecs": 203,
  "billedMinutes": 4,
  "wordCount": 525,
  "segmentCount": 33,
  "segments": [
    {
      "start": 0.8,
      "end": 8.1,
      "text": "This week, I traveled to Chicago to deliver my final farewell address to the nation, following in the tradition of presidents before me.",
      "speaker": null
    }
  ],
  "model": "voxtral-mini-latest",
  "status": "ok",
  "charged": true,
  "chargedEvent": "transcription-minute",
  "source": "mistral-voxtral",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}
```

## Related

- [YouTube Video Summarizer – AI + Transcript](https://www.sfoln.com/actors/youtube-transcript-summary.md) (`sfoln/youtube-transcript-summary`)
- [Podcast Scraper – Episodes & Transcripts](https://www.sfoln.com/actors/podcast-scraper.md) (`sfoln/podcast-scraper`)
- [PDF OCR to Markdown Converter](https://www.sfoln.com/actors/pdf-ocr-markdown.md) (`sfoln/pdf-ocr-markdown`)
- [Document Parser – AI PDF & Image to JSON](https://www.sfoln.com/actors/document-to-json.md) (`sfoln/document-to-json`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
