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

# Gemini 3.5 Transcribe

> [Core Function] Gemini 3.5 Transcribe is Google's speech-to-text model for complete pre-recorded audio. [Strengths] Accurate multilingual recognition across 85+ languages with optional language hints, custom vocabulary for brand names, speaker labels (up to 8 speakers), word-level timestamps, and Smart formatting that cleans punctuation and numbers. [Best For] Meeting notes, captions and subtitles, multilingual recordings, call logs, and speaker-attributed transcripts. [Limitations] Do NOT use this if the audio is not a public HTTPS URL, longer than 15 minutes, or larger than 300 MB. Do NOT use file upload. Do NOT combine mode=smart with word timestamps or speaker labels. This endpoint does not support live or streaming transcription. [Routing] Choose this model for Google Gemini file transcription with speaker labels or Smart formatting. For Microsoft recognition use MAI-Transcribe; for OpenAI formats such as SRT or VTT use Whisper.



## OpenAPI

````yaml /media-model-api/google/google-s2t.json post /google/gemini-3.5-transcribe
openapi: 3.1.0
info:
  title: Google Speech-to-Text Models API
  description: >-
    Google Gemini 3.5 Transcribe speech-to-text. Submit a public HTTPS audio URL
    as an async task; poll GET /api/v1/tasks/{task_id} for the transcription
    result.
  version: 1.0.0
  contact:
    name: Modellix Support
    email: support@modellix.ai
servers:
  - url: https://api.modellix.ai/api/v1
    description: Google Gemini speech-to-text models API
security:
  - bearerAuth: []
paths:
  /google/gemini-3.5-transcribe:
    post:
      summary: Gemini 3.5 Transcribe
      description: >-
        [Core Function] Gemini 3.5 Transcribe is Google's speech-to-text model
        for complete pre-recorded audio. [Strengths] Accurate multilingual
        recognition across 85+ languages with optional language hints, custom
        vocabulary for brand names, speaker labels (up to 8 speakers),
        word-level timestamps, and Smart formatting that cleans punctuation and
        numbers. [Best For] Meeting notes, captions and subtitles, multilingual
        recordings, call logs, and speaker-attributed transcripts. [Limitations]
        Do NOT use this if the audio is not a public HTTPS URL, longer than 15
        minutes, or larger than 300 MB. Do NOT use file upload. Do NOT combine
        mode=smart with word timestamps or speaker labels. This endpoint does
        not support live or streaming transcription. [Routing] Choose this model
        for Google Gemini file transcription with speaker labels or Smart
        formatting. For Microsoft recognition use MAI-Transcribe; for OpenAI
        formats such as SRT or VTT use Whisper.
      operationId: gemini35Transcribe
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Gemini35TranscribeRequest'
            examples:
              basic:
                summary: Minimal request
                value:
                  audio: https://cdn.example.com/meeting.wav
              verbatim_full:
                summary: Language hints, vocabulary, diarization, and word timestamps
                value:
                  audio: https://cdn.example.com/meeting.wav
                  language_codes:
                    - en-US
                  custom_vocabulary:
                    - oatmilk
                    - Modellix
                  diarization: true
                  word_timestamp: true
              smart:
                summary: Smart formatting without timestamps
                value:
                  audio: https://cdn.example.com/meeting.wav
                  mode: smart
      responses:
        '200':
          description: >-
            Task submitted successfully. Poll GET /api/v1/tasks/{task_id} until
            the task completes; the transcription appears in result.resources.
            See Common API: Query Task Result and STT Result Schema.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTaskResponse'
              example:
                code: 0
                message: success
                data:
                  status: pending
                  task_id: task-gemini-transcribe-001
                  model_id: google/gemini-3.5-transcribe
                  get_result:
                    method: GET
                    url: >-
                      https://api.modellix.ai/api/v1/tasks/task-gemini-transcribe-001
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    Gemini35TranscribeRequest:
      type: object
      required:
        - audio
      additionalProperties: false
      properties:
        audio:
          type: string
          minLength: 1
          pattern: ^https://
          description: >-
            Public HTTPS URL of the audio file. Maximum duration 15 minutes;
            maximum size 300 MB. Common formats include WAV, MP3, and FLAC.
        language_codes:
          type: array
          items:
            type: string
            enum:
              - af-ZA
              - am-ET
              - ar-EG
              - hy-AM
              - as-IN
              - az-AZ
              - be-BY
              - bn-BD
              - bn-IN
              - bs-BA
              - bg-BG
              - rup-BG
              - my-MM
              - yue-Hant-HK
              - ca-ES
              - ceb
              - km-KH
              - hr-HR
              - cs-CZ
              - da-DK
              - nl-NL
              - en-AU
              - en-GB
              - en-IN
              - en-US
              - et-EE
              - fa-IR
              - fil-PH
              - fi-FI
              - fr-FR
              - fr-CA
              - gl-ES
              - ka-GE
              - de-DE
              - el-GR
              - gu-IN
              - ha-NG
              - he-IL
              - hi-IN
              - hu-HU
              - is-IS
              - id-ID
              - it-IT
              - ja-JP
              - jv-ID
              - kea-CV
              - kn-IN
              - kk-KZ
              - ko-KR
              - ky-KG
              - lv-LV
              - ln-CD
              - lt-LT
              - mk-MK
              - ms-MY
              - ml-IN
              - mt-MT
              - cmn-Hans-CN
              - mr-IN
              - mn-MN
              - ne-NP
              - nb-NO
              - or-IN
              - pl-PL
              - pt-BR
              - pt-PT
              - pa-IN
              - pa-Guru-IN
              - ro-RO
              - ru-RU
              - sr-RS
              - sd-Arab-IN
              - sk-SK
              - sl-SI
              - es-419
              - es-ES
              - es-US
              - sw-KE
              - sv-SE
              - tg-TJ
              - te-IN
              - th-TH
              - tr-TR
              - uk-UA
              - uz-UZ
              - vi-VN
          description: >-
            Optional language hints. Omit for automatic detection. Simplified
            Chinese is cmn-Hans-CN.
        custom_vocabulary:
          type: array
          maxItems: 1000
          items:
            type: string
            minLength: 1
          description: >-
            Optional terms that bias recognition, such as brand names and proper
            nouns. Up to 1000 items. Works best when language_codes is also set.
        diarization:
          type: boolean
          description: >-
            When true, label speakers (up to 8). Cannot be combined with
            mode=smart. Attribution for three or more speakers is experimental.
        word_timestamp:
          type: boolean
          description: >-
            When true, include word-level timestamps. Cannot be combined with
            mode=smart.
        mode:
          type: string
          enum:
            - verbatim
            - smart
          default: verbatim
          description: >-
            verbatim keeps speech as spoken, including filler words. smart
            applies dictation-style formatting such as punctuation and numbers.
            smart cannot be used with word_timestamp or diarization.
    AsyncTaskResponse:
      type: object
      required:
        - code
        - message
        - data
      properties:
        code:
          type: integer
          description: Response code, 0 indicates success
          example: 0
        message:
          type: string
          description: Response message
          example: success
        data:
          type: object
          required:
            - status
            - task_id
            - model_id
          description: >-
            Task submission details. Poll GET /api/v1/tasks/{task_id} until
            status is success; the transcription appears in result.resources.
            See Common API: Query Task Result and STT Result Schema.
          properties:
            status:
              type: string
              enum:
                - pending
                - processing
              description: Initial task status
              example: pending
            task_id:
              type: string
              description: Unique task identifier for polling
              example: task-gemini-transcribe-001
            model_id:
              type: string
              description: Model ID in provider/model format
              example: google/gemini-3.5-transcribe
            get_result:
              type: object
              description: Endpoint to query the task result
              properties:
                method:
                  type: string
                  example: GET
                url:
                  type: string
                  example: >-
                    https://api.modellix.ai/api/v1/tasks/task-gemini-transcribe-001
    ErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: Error code (equals HTTP status code)
          example: 400
        message:
          type: string
          description: 'Error message in format ''Category: detail'''
          example: 'Invalid parameters: audio is required'
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 400
            message: 'Invalid parameters: parameter ''audio'' is required'
    Unauthorized:
      description: Unauthorized - Invalid or missing API Key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 401
            message: 'Authentication failed: invalid API key'
    TooManyRequests:
      description: Too many requests - Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          description: Maximum requests per minute
          schema:
            type: integer
            example: 100
        X-RateLimit-Remaining:
          description: Remaining quota in current window
          schema:
            type: integer
            example: 0
        X-RateLimit-Reset:
          description: Rate limit window reset time (Unix timestamp)
          schema:
            type: integer
            example: 1704067260
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 429
            message: >-
              Rate limit exceeded: 100 requests per minute, retry after 60
              seconds
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 500
            message: Internal server error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````