---
title: "Create Model Transcription"
method: POST
path: "/v3/models/audio/transcriptions"
tags: ["Audio"]
---

# Create Model Transcription

`POST /v3/models/audio/transcriptions`

## Request

- Base URL: `https://api.heygen.com`
- URL: `https://api.heygen.com/v3/models/audio/transcriptions`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Transcribe audio with heygen-asr-1. Accepts WAV or MP3 as inline base64 up to 16 MiB or an accessible uploaded audio asset ID up to 32 MiB. Raw URL inputs are rejected. Asset access and contents are checked on each retry; changed audio with the same Idempotency-Key returns 409. Requires a non-trial API key with assets:write. Audio must decode to at most 30 minutes. Requires Idempotency-Key: identical retries return the stored result; a different request with the same key or a pending request returns 409. Charges API credits for decoded audio duration, rounded up to the wallet's smallest unit; failed calls are refunded. Returns the transcript and charged usage synchronously.

## Request body

- CreateModelTranscriptionRequest
  - `model` 'heygen-asr-1', required: Transcription model to run.
  - `audio` union, required: WAV or MP3 audio: inline base64 up to 16 MiB, or an accessible uploaded audio asset ID up to 32 MiB.
    - AssetBase64: Asset input via base64-encoded content.
      - `type` 'base64', required: Input type discriminator
      - `media_type` string, required: MIME type of the encoded content (e.g. "image/png")
      - `data` string, required: Base64-encoded file content
    - AssetId: Asset input via HeyGen asset ID from the asset upload endpoint.
      - `type` 'asset_id', required: Input type discriminator
      - `asset_id` string, required: HeyGen asset ID from the asset upload endpoint
  - `language` string, nullable: Supported ISO 639-1 or ISO 639-3 language code; detected when omitted.
  - `diarize` boolean: Include recording-level speaker labels.

## Response `200`

Successful response

- object
  - `data` ModelTranscriptionResponse
    - `request_id` string, required
    - `model` 'heygen-asr-1', required
    - `text` string, required
    - `language_code` string, required
    - `language_probability` number, required
    - `num_speakers` integer, nullable: Absent when diarization was disabled.
    - `words` TranscriptionEntry[], required
      - `text` string, required
      - `start` number, required
      - `end` number, required
      - `type` 'word' | 'spacing' | 'audio_event', required
      - `speaker_id` string, nullable
      - `logprob` number, required
    - `usage` TranscriptionUsage, required
      - `duration_seconds` number, required: Decoded audio duration used for billing.
      - `api_credits` number, nullable: API credits charged, rounded up to the wallet's smallest unit; omitted when the HyperFrames plan paid.
      - `usd_per_audio_hour` string, required: USD rate per decoded audio hour, before API-credit conversion and rounding.
      - `pricing_version` string, required

## Other responses

- `400`: Invalid request parameters
- `401`: Authentication failed
- `429`: Rate limit exceeded

## Changes

- **2026-11-03** `7dfa5e59b4f5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/heygen/apis/heygen-external-api/changes/v3/models/audio/transcriptions/post.md)

---

[API](https://skmtc.dev/heygen/apis/heygen-external-api.md) - [All operations](https://skmtc.dev/heygen/apis/heygen-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/heygen/apis/heygen-external-api/revisions/7dfa5e59b4f5?raw)
