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

# OpenAI Format - Transcriptions

> - Generic Transcriptions API reference for all OpenAI-compatible speech-to-text models
- Convert audio files to text
- Supported models: `whisper-1` (recommended), `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`
- Supports language hint, prompt for style guidance and multiple response formats
- Model-specific fields (timestamp granularities, streaming, diarization, etc.) are documented in the "Model-Specific Parameters" section below


## Model-Specific Parameters

The OpenAI transcription endpoint exposes different fields depending on the model. The request body above only documents fields **common to all models**. The following sections describe model-specific or model-restricted fields.

### Supported Models

| Model ID                            | Description                                                                                       |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- |
| `whisper-1`                         | Classic Whisper V2 model. Supports the broadest set of output formats and timestamp granularities |
| `gpt-4o-transcribe`                 | High-accuracy transcription. Only `json` output. Streamable                                       |
| `gpt-4o-mini-transcribe`            | Lightweight high-accuracy transcription. Only `json` output. Streamable                           |
| `gpt-4o-mini-transcribe-2025-12-15` | Versioned snapshot of `gpt-4o-mini-transcribe`                                                    |
| `gpt-4o-transcribe-diarize`         | Transcription with speaker diarization. Use `diarized_json` to receive per-segment speaker labels |

### `response_format` Compatibility Matrix

| Model                                                      | Supported formats                                                                      |
| ---------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `whisper-1`                                                | `json` / `text` / `srt` / `verbose_json` / `vtt`                                       |
| `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`(-2025-12-15) | `json` only                                                                            |
| `gpt-4o-transcribe-diarize`                                | `json` / `text` / `diarized_json` (use `diarized_json` to receive speaker annotations) |

### `whisper-1`-Only Features

* **`timestamp_granularities[]`** — array, allowed values: `word` / `segment`, default `[segment]`
  * Word / segment-level timestamp granularity
  * **Takes effect only when `response_format=verbose_json`**
  * Sent as repeated form field `timestamp_granularities[]`
  * gpt-4o-\* models cannot use this in practice (they only support `json`); `gpt-4o-transcribe-diarize` explicitly disallows it
* **Streaming not supported**: `stream=true` is silently ignored on `whisper-1`.

### gpt-4o-\* Series Parameters

Applies to `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`, `gpt-4o-mini-transcribe-2025-12-15`.

* **`include[]`** — array, allowed value: `logprobs`
  * Returns the log probabilities of each token, useful for assessing model confidence
  * **Only effective when `response_format=json`**
  * Not available on `whisper-1` or `gpt-4o-transcribe-diarize`

* **`stream`** — boolean, default `false`
  * Streams transcription results via SSE (Server-Sent Events)
  * Ignored on `whisper-1`

* **`chunking_strategy`** — `"auto"` string or `server_vad` object
  * Controls how the audio is split into chunks. If unset, the audio is transcribed as a single block
  * When `"auto"`: the server normalizes loudness and then uses VAD to choose chunk boundaries
  * When a `server_vad` object (manual VAD tuning):

    | Field                 | Type    | Default | Description                                                                                          |
    | --------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------- |
    | `type`                | string  | —       | **Required**, must be `"server_vad"`                                                                 |
    | `prefix_padding_ms`   | integer | `300`   | Audio (ms) included before VAD-detected speech                                                       |
    | `silence_duration_ms` | integer | `200`   | Silence (ms) used to detect end of speech. Shorter values respond faster but may cut on short pauses |

### `gpt-4o-transcribe-diarize`-Only Parameters

Applies only to `gpt-4o-transcribe-diarize` (speaker-diarization model).

* **`chunking_strategy`** — **Required** for inputs longer than 30 seconds (recommended: `"auto"`)

* **`known_speaker_names[]`** — array, max 4
  * Identifier list for known speakers (e.g. `customer`, `agent`)
  * Maps 1-to-1 with `known_speaker_references[]`

* **`known_speaker_references[]`** — array, max 4
  * Reference audio for each speaker, in [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) format
  * Each sample must be 2-10 seconds
  * Same audio formats as the `file` field

### Fields Not Supported by `gpt-4o-transcribe-diarize`

The following fields are **not available** on `gpt-4o-transcribe-diarize`:

| Field                       | Note                                                  |
| --------------------------- | ----------------------------------------------------- |
| `prompt`                    | Style/continuation prompt not supported               |
| `timestamp_granularities[]` | Word / segment timestamp granularity not configurable |
| `include[]`                 | Additional returns like `logprobs` not supported      |
| `stream`                    | Streaming output not supported                        |


## OpenAPI

````yaml openapi/en/openai-format-transcriptions.json POST /v1/audio/transcriptions
openapi: 3.1.0
info:
  title: OpenAI Format - Transcriptions
  version: '1.0'
servers:
  - url: https://api.aihubmax.com
security:
  - BearerAuth: []
paths:
  /v1/audio/transcriptions:
    post:
      tags:
        - Text Series > OpenAI Format
      summary: OpenAI Format - Transcriptions
      description: >
        - Generic Transcriptions API reference for all OpenAI-compatible
        speech-to-text models

        - Convert audio files to text

        - Supported models: `whisper-1` (recommended), `gpt-4o-transcribe`,
        `gpt-4o-mini-transcribe`

        - Supports language hint, prompt for style guidance and multiple
        response formats

        - Model-specific fields (timestamp granularities, streaming,
        diarization, etc.) are documented in the "Model-Specific Parameters"
        section below
      operationId: openai-format-transcriptions
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TranscriptionRequest'
      responses:
        '200':
          $ref: '#/components/responses/TranscriptionSuccess'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    TranscriptionRequest:
      type: object
      required:
        - file
        - model
      properties:
        file:
          type: string
          format: binary
          description: >
            Audio file to transcribe


            **Notes:**

            - Uploaded via multipart/form-data

            - Supported formats: flac / mp3 / mp4 / mpeg / mpga / m4a / ogg /
            wav / webm
        model:
          type: string
          description: >-
            Speech-to-text model ID. Allowed values: `whisper-1`,
            `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`
          example: whisper-1
        language:
          type: string
          description: >-
            ISO-639-1 language code of the input audio (e.g. `en`, `zh`, `ja`).
            Supplying this improves accuracy and latency.
          example: en
        prompt:
          type: string
          description: >-
            Optional text to guide the model's style or to continue from a
            previous audio segment. The prompt should match the audio language.
        response_format:
          type: string
          description: Format of the transcription output
          enum:
            - json
            - text
            - srt
            - verbose_json
            - vtt
          default: json
        temperature:
          type: number
          description: >-
            Sampling temperature between 0 and 1. Higher values produce more
            random output; 0 lets the model auto-tune.
          minimum: 0
          maximum: 1
          default: 0
    TranscriptionResponse:
      type: object
      required:
        - text
      properties:
        text:
          type: string
          description: Transcribed text
          example: The weather is nice today, let's go for a walk in the park.
    TranscriptionVerboseResponse:
      type: object
      required:
        - task
        - language
        - duration
        - text
      properties:
        task:
          type: string
          description: Task type
          enum:
            - transcribe
        language:
          type: string
          description: Detected language of the audio
          example: english
        duration:
          type: number
          description: Audio duration in seconds
          example: 5.32
        text:
          type: string
          description: Full transcription text
          example: The weather is nice today, let's go for a walk in the park.
        words:
          type: array
          description: >-
            Word-level timestamps (returned only with whisper-1 + verbose_json;
            see "Model-Specific Parameters" below)
          items:
            type: object
            properties:
              word:
                type: string
                description: Word content
                example: weather
              start:
                type: number
                description: Start time in seconds
                example: 0.42
              end:
                type: number
                description: End time in seconds
                example: 0.86
        segments:
          type: array
          description: >-
            Segment-level details (returned only with whisper-1 + verbose_json;
            see "Model-Specific Parameters" below)
          items:
            type: object
            properties:
              id:
                type: integer
                description: Segment index
                example: 0
              seek:
                type: integer
                description: Segment seek offset
                example: 0
              start:
                type: number
                description: Segment start time in seconds
                example: 0
              end:
                type: number
                description: Segment end time in seconds
                example: 5.32
              text:
                type: string
                description: Segment text
                example: The weather is nice today, let's go for a walk in the park.
              tokens:
                type: array
                description: Tokens of the segment
                items:
                  type: integer
              temperature:
                type: number
                description: Sampling temperature
                example: 0
              avg_logprob:
                type: number
                description: Average log probability
                example: -0.32
              compression_ratio:
                type: number
                description: Compression ratio
                example: 1.21
              no_speech_prob:
                type: number
                description: No-speech probability
                example: 0.02
    ErrorResponse400:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: Invalid request parameters
            type:
              type: string
              example: invalid_request_error
    ErrorResponse401:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: Invalid API key
            type:
              type: string
              example: authentication_error
    ErrorResponse403:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: Access denied
            type:
              type: string
              example: permission_error
    ErrorResponse429:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: Rate limit exceeded
            type:
              type: string
              example: rate_limit_error
    ErrorResponse500:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: Internal server error
            type:
              type: string
              example: server_error
  responses:
    TranscriptionSuccess:
      description: Transcription response
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/TranscriptionResponse'
              - $ref: '#/components/schemas/TranscriptionVerboseResponse'
          examples:
            default-json:
              summary: Default JSON response
              description: Returned when `response_format=json` (default)
              value:
                text: The weather is nice today, let's go for a walk in the park.
            verbose-json:
              summary: Verbose JSON response
              description: >-
                Returned by whisper-1 when `response_format=verbose_json` with
                word-level timestamp granularity enabled (see "Model-Specific
                Parameters" below)
              value:
                task: transcribe
                language: english
                duration: 5.32
                text: The weather is nice today, let's go for a walk in the park.
                words:
                  - word: weather
                    start: 0.42
                    end: 0.86
                  - word: nice
                    start: 1.12
                    end: 1.38
                segments:
                  - id: 0
                    seek: 0
                    start: 0
                    end: 5.32
                    text: >-
                      The weather is nice today, let's go for a walk in the
                      park.
                    tokens:
                      - 50364
                      - 1029
                      - 31935
                    temperature: 0
                    avg_logprob: -0.32
                    compression_ratio: 1.21
                    no_speech_prob: 0.02
        text/plain:
          schema:
            type: string
          examples:
            text:
              summary: Plain text response
              description: Returned when `response_format=text`
              value: The weather is nice today, let's go for a walk in the park.
            srt:
              summary: SRT subtitle response
              description: Returned when `response_format=srt`
              value: |
                1
                00:00:00,000 --> 00:00:05,320
                The weather is nice today, let's go for a walk in the park.
            vtt:
              summary: VTT subtitle response
              description: Returned when `response_format=vtt`
              value: |
                WEBVTT

                00:00:00.000 --> 00:00:05.320
                The weather is nice today, let's go for a walk in the park.
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse400'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse401'
    PaymentRequired:
      description: Insufficient balance
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse400'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse403'
    TooManyRequests:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse429'
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse500'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        ## All APIs require Bearer Token authentication ##

        Add to request header:

        `Authorization: Bearer YOUR_API_KEY`

````