---
title: "Create transcription job"
method: POST
path: "/voice/transcription"
tags: ["Voice"]
---

# Create transcription job

`POST /voice/transcription`

Creates an asynchronous transcription job for audio files. Supports two modes:

**Vault-based (recommended)**: Pass `vault_id` and `object_id` to transcribe audio from your vault. The transcript will automatically be saved back to the vault when complete.

**Direct URL (legacy)**: Pass `audio_url` for direct transcription without automatic storage.

## Request body

- object
  - `vault_id` string — Vault ID containing the audio file (use with object_id)
  - `object_id` string — Object ID of the audio file in the vault (use with vault_id)
  - `format` 'json' | 'text' — Output format for the transcript when using vault mode
  - `audio_url` string — URL of the audio file to transcribe (legacy mode, no auto-storage)
  - `language_code` string — Language code (e.g., 'en_us', 'es', 'fr'). If not specified, language will be auto-detected
  - `speaker_labels` boolean — Enable speaker identification and labeling
  - `speakers_expected` integer — Expected number of speakers (improves accuracy when known)
  - `auto_highlights` boolean — Automatically extract key phrases and topics
  - `content_safety` boolean — Enable content moderation and safety labeling
  - `language_detection` boolean — Enable automatic language detection
  - `speech_models` string[] — Priority-ordered speech models to use
  - `punctuate` boolean — Add punctuation to the transcript
  - `format_text` boolean — Format text with proper capitalization
  - `word_boost` string[] — Custom vocabulary words to boost (e.g., legal terms)
  - `boost_param` 'low' | 'default' | 'high' — How much to boost custom vocabulary

## Response `200`

Transcription job created successfully

- object
  - `id` string — Unique transcription job ID
  - `status` 'queued' | 'processing' | 'completed' | 'error' — Current status of the transcription job
  - `vault_id` string — Vault ID (only for vault-based transcription)
  - `source_object_id` string — Source audio object ID (only for vault-based transcription)

## Other responses

- `400` — Bad request - missing required fields or invalid parameters
- `401` — Unauthorized - invalid or missing API key
- `403` — Forbidden - API key lacks voice/transcription service permissions
- `404` — Vault or object not found
- `502` — Transcription provider temporarily unavailable (e.g., billing or out-of-funds error)

---

[API](https://skmtc.net/casemark/apis/case-dev-api.md) · [All operations](https://skmtc.net/casemark/apis/case-dev-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/casemark/case-dev-api/revisions/5b7e64e6d6f9/schema)
