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

# Transcribe

> Transcribe an audio file with Whisper. Returns the text with timestamped segments and words, billed to your Runchat credits by audio duration.



## OpenAPI

````yaml POST /transcribe
openapi: 3.1.0
info:
  title: Runchat API
  description: API for executing Runchat flows and retrieving schema information.
  version: 1.0.0
servers:
  - url: https://runchat.com/api/v1
    description: Relative path for the API endpoints
security:
  - bearerAuth: []
tags:
  - name: Execution
    description: Endpoints related to running Runchat flows.
  - name: Schema
    description: Endpoints for retrieving Runchat flow structure and definitions.
  - name: Canvas
    description: >-
      Endpoints for programmatic canvas manipulation — reading, creating,
      connecting, and running nodes.
  - name: Jobs
    description: >-
      Endpoints for triggering saved Runchat jobs — scheduled agents that run a
      workflow or a prompt.
  - name: Audio
    description: Endpoints for audio processing — transcription billed to Runchat credits.
paths:
  /transcribe:
    post:
      tags:
        - Audio
      summary: Transcribe Audio
      description: >-
        Transcribes an audio file with Whisper (served via OpenRouter's Groq
        provider). The audio is forwarded upstream and the transcription
        response is returned verbatim. Usage is billed to your Runchat credits
        based on the audio duration ($0.04 per hour of audio for
        whisper-large-v3-turbo, before credit markup).
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    The audio file to transcribe (flac, mp3, mp4, mpeg, mpga,
                    m4a, ogg, wav, webm). Maximum size 25MB.
                model:
                  type: string
                  default: openai/whisper-large-v3-turbo
                  description: >-
                    The Whisper model to use. Defaults to
                    `openai/whisper-large-v3-turbo` (bare Groq-style names like
                    `whisper-large-v3-turbo` are accepted as aliases).
                language:
                  type: string
                  description: >-
                    Optional ISO-639-1 language code of the audio (e.g. `en`).
                    Improves accuracy and latency when known.
                response_format:
                  type: string
                  enum:
                    - json
                    - verbose_json
                  default: verbose_json
                  description: >-
                    The response format. Defaults to `verbose_json`, which
                    includes the audio duration and timestamped segments.
                    (`text`/`srt`/`vtt` are not supported.)
                timestamp_granularities[]:
                  type: array
                  items:
                    type: string
                    enum:
                      - segment
                      - word
                  description: >-
                    Timestamp detail for `verbose_json` responses. Repeat the
                    field to request both. Defaults to segment and word.
              required:
                - file
      responses:
        '200':
          description: >-
            Successful transcription. The upstream response body is returned
            verbatim - an object for `json`/`verbose_json` formats, plain text
            for `text`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranscriptionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          description: 'Insufficient credits. The response includes `isPaywall: true`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaywallError'
        '413':
          description: Audio file exceeds the 40MB upload limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    TranscriptionResponse:
      type: object
      description: >-
        Groq transcription response, returned verbatim. Shape follows the
        requested `response_format` — `verbose_json` (shown here) includes
        duration and timestamped segments.
      properties:
        text:
          type: string
          description: The transcribed text.
        language:
          type: string
          description: Detected or supplied language of the audio.
        duration:
          type: number
          description: Duration of the audio in seconds. Used for credit billing.
        segments:
          type: array
          items:
            type: object
          description: >-
            Timestamped segments (present when `segment` granularity is
            requested).
        words:
          type: array
          items:
            type: object
          description: >-
            Word-level timestamps (present when `word` granularity is
            requested).
      additionalProperties: true
    PaywallError:
      type: object
      properties:
        error:
          type: string
          description: A message describing the error.
        isPaywall:
          type: boolean
          description: >-
            Always `true` — indicates the request was blocked by the credit
            paywall.
      required:
        - error
        - isPaywall
    Error:
      type: object
      properties:
        error:
          type: string
          description: A message describing the error.
      required:
        - error
  responses:
    BadRequest:
      description: >-
        Bad Request - The request could not be understood or was missing
        required parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalServerError:
      description: Internal Server Error - An unexpected error occurred on the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication using Runchat API key. API keys can be
        created from the account menu

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.