> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateAudioTranscriptionsMultipartRequestBody

## Example Usage

```typescript theme={null}
import { CreateAudioTranscriptionsMultipartRequestBody } from "@openrouter/sdk/models/operations";

// No examples available for this model
```

## Fields

| Field | Type | Required | Description |
| - | - | - | - |
| `diarize` | *boolean* | :heavy\_minus\_sign: | Label each word with the speaker who said it (words\[].speaker, words\[].speaker\_label). Requires response\_format "verbose\_json" (400 otherwise); word timestamps are included even when timestamp\_granularities\[] omits "word". Only supported by some providers; 400 when the selected model cannot diarize. |
| `file` | [File](https://developer.mozilla.org/en-US/docs/Web/API/File) \| [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) \| [operations.CreateAudioTranscriptionsMultipartFile](../../models/operations/createaudiotranscriptionsmultipartfile.mdx) | :heavy\_minus\_sign: | The audio file to transcribe. The format is derived from the filename extension or the file part content type. Max 25 MB; send larger files as base64 JSON via input\_audio, or by URL via source\_url. Exactly one of file or source\_url is required. |
| `keyterms` | *string*\[] | :heavy\_minus\_sign: | Domain terms, names, or phrases to bias recognition toward; repeat the part once per term (keyterms=... is also accepted). Only supported by some providers; 400 when the selected model cannot use keyterms. |
| `language` | *string* | :heavy\_minus\_sign: | The language of the input audio (ISO-639-1). |
| `model` | *string* | :heavy\_check\_mark: | The model to use for transcription. |
| `provider` | *string* | :heavy\_minus\_sign: | JSON-encoded provider preferences object, the same shape as the JSON body field: \{ "options": \{ "\<provider-slug>": \{ ... } } }. Only options for the matched provider are forwarded. Must decode to a JSON object. |
| `responseFormat` | [operations.ResponseFormat](../../models/operations/responseformat.mdx) | :heavy\_minus\_sign: | The response format. "json" (default) returns \{ text, usage }; "verbose\_json" additionally returns task, language, duration, and segment-level timestamps (OpenAI-compatible providers only). |
| `sessionId` | *string* | :heavy\_minus\_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). Used for observability grouping in Broadcast and private logging; never sent to the provider. If provided in both the request body and the x-session-id header, the body value takes precedence. |
| `sourceUrl` | *string* | :heavy\_minus\_sign: | Publicly reachable http(s) URL of the audio file, downloaded by the provider directly (no size limit on our side). The format is derived from the URL path extension. Only supported by some providers; exactly one of file or source\_url is required. |
| `temperature` | *number* | :heavy\_minus\_sign: | The sampling temperature. |
| `timestampGranularities` | [operations.TimestampGranularities](../../models/operations/timestampgranularities.mdx)\[] | :heavy\_minus\_sign: | Timestamp detail levels to include when response\_format is "verbose\_json". "word" additionally returns word-level timestamps in the words array. |
| `trace` | *string* | :heavy\_minus\_sign: | JSON-encoded trace metadata object (trace\_id, trace\_name, span\_name, generation\_name, parent\_span\_id and custom keys) attached to the Broadcast trace. Must decode to a JSON object. |
| `user` | *string* | :heavy\_minus\_sign: | A unique identifier representing your end-user. Forwarded to Broadcast and private logging as the end-user id; never sent to the provider. |
