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

# Transcribe audio

> Turns a voice note into text. Send the audio as `multipart/form-data` (`file`, one of flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm, up to 32 MB) with an optional `language` hint (ISO 639-1). The transcription runs on the organization's own model key and is recorded as a request of its own (target `Transcriber`), with the model, the seconds of audio and the cost, so it appears in the requests list like an agent turn and counts toward the group's monthly limit. The model is chosen server-side. Authenticate with a session token minted by `POST /v1/token`; the request is billed to the session's group and attributed to its user. An API key may call it with `X-User-Id`.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/audio/transcriptions
openapi: 3.1.0
info:
  title: Sidenet API
  version: 1.0.0
  description: >-
    Sidenet HTTP endpoints exposed by the Sidenet Studio. All routes require an
    api key that can be generated through the studio in studio.sidenet.ai.
servers:
  - url: https://api.sidenet.ai
security:
  - bearerAuth: []
paths:
  /v1/audio/transcriptions:
    post:
      tags:
        - Chat
      summary: Transcribe audio
      description: >-
        Turns a voice note into text. Send the audio as `multipart/form-data`
        (`file`, one of flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm, up to
        32 MB) with an optional `language` hint (ISO 639-1). The transcription
        runs on the organization's own model key and is recorded as a request of
        its own (target `Transcriber`), with the model, the seconds of audio and
        the cost, so it appears in the requests list like an agent turn and
        counts toward the group's monthly limit. The model is chosen
        server-side. Authenticate with a session token minted by `POST
        /v1/token`; the request is billed to the session's group and attributed
        to its user. An API key may call it with `X-User-Id`.
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    The audio: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav or
                    webm; at most 32 MB.
                language:
                  type: string
                  example: es
                  description: >-
                    ISO 639-1 code of the spoken language, when known. Improves
                    accuracy; omitted, the model detects it.
                environment:
                  type: string
                  enum:
                    - dev
                    - staging
                    - prod
                  description: >-
                    The environment this request is recorded under (default
                    `dev`).
      responses:
        '200':
          description: The transcript
          content:
            application/json:
              schema:
                type: object
                properties:
                  text:
                    type: string
                    description: >-
                      The transcript, trimmed; empty when nothing was
                      recognised.
                  language:
                    type: string
                    nullable: true
                    description: The language the model detected, when it reports one.
                  duration:
                    type: number
                    nullable: true
                    description: Seconds of audio, when the model reports it.
                  model:
                    type: string
                    description: The transcription model.
                  usage:
                    type: object
                    nullable: true
                    description: >-
                      What the model metered: `{ type: "duration", seconds }` or
                      `{ type: "tokens", input_tokens, output_tokens, … }`.
                  cost:
                    type: number
                    description: >-
                      USD charged to the organization for this transcription (0
                      when the catalogue has no price).
                  request_id:
                    type: string
                    description: >-
                      The request this transcription is recorded as; its join
                      key in the requests list.
              example:
                text: Habitación 412 lista
                language: es
                duration: 3.2
                model: scaleway/whisper-large-v3
                usage:
                  type: duration
                  seconds: 3.2
                cost: 0.000192
                request_id: 7f3c0a2e6b1d4c8f9a5e2b7d1c3f6a8e
        '400':
          description: >-
            No `file`, an unsupported container, a file over 32 MB, or no user
            (an API key must send `X-User-Id`)
        '403':
          description: The user is disabled
        '429':
          description: The organization's or the group's monthly limit is reached
        '502':
          description: The transcription provider failed; `details` says how
      security:
        - sessionToken: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Organization API key, generated in studio.sidenet.ai. Backend only —
        never in a browser.
    sessionToken:
      type: http
      scheme: bearer
      description: >-
        Session token (`snat_…`) minted by POST /v1/token. Carries the
        organization and the end user; safe in a browser.

````

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