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

# Get Audio Transcription

> Retrieve the speech-to-text transcription of a video's audio track in your Private Video Library.

<Info>
  **Product**: Visual Search
  **Use case**: Upload videos and images, auto-index them, then search by natural language, image, or transcript phrase
  **Host**: `https://api.memories.ai/serve/api/v1`
  **Auth**: `Authorization: sk-mavi-...` (no `Bearer` prefix)
</Info>

Retrieve the **audio transcription** (speech-to-text) of a video's audio track. Each segment carries a time range and the transcribed text. For the visual scene descriptions, use [Get Video Caption](/visual-search/video-caption).

## Prerequisites

* You have [created a memories.ai API key](/visual-search/create-your-key).
* The video has been uploaded via the [Upload API](/visual-search/upload-video-from-file) and finished parsing.
* **The source video has an audio track.** Videos without audio return `data: null` even when the request succeeds.

## Endpoint

GET /serve/api/v1/get\_audio\_transcription

## Request Example

```python theme={null}
import requests

url = "https://api.memories.ai/serve/api/v1/get_audio_transcription"
headers = {"Authorization": "sk-mavi-..."}
params = {
    "video_no": "VI605961375402668032",
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
```

## Query Parameters

<ParamField query="video_no" type="string" required>
  The video identifier returned by the upload API.
</ParamField>

## Response Example

Audio track present:

```json theme={null}
{
  "code": "0000",
  "msg": "success",
  "data": {
    "videoNo": "VI605961375402668032",
    "transcriptions": [
      {
        "index": 0,
        "content": " I'm going to get my emergency and report.",
        "startTime": "0",
        "endTime": "7"
      },
      {
        "index": 1,
        "content": " Mommy, you're going to go.",
        "startTime": "7",
        "endTime": "12"
      }
    ],
    "createTime": "1758276264066",
    "video_bucket": "mavi-resource",
    "video_blob": "VI605961375402668032.mp4"
  },
  "success": true,
  "failed": false
}
```

No audio track (or transcription not yet ready):

```json theme={null}
{
  "code": "0000",
  "msg": "success",
  "data": null,
  "success": true,
  "failed": false
}
```

## Response Fields

<ResponseField name="code" type="string">
  Business status code. `0000` indicates success — including the "no audio track" case below.
</ResponseField>

<ResponseField name="msg" type="string">
  Human-readable status message.
</ResponseField>

<ResponseField name="data" type="object | null">
  The transcription record, or `null` if the video has no audio track / no transcription has been produced. Check `data is None` explicitly rather than relying on the status code.
</ResponseField>

<ResponseField name="data.videoNo" type="string">
  Echo of the requested video identifier.
</ResponseField>

<ResponseField name="data.transcriptions" type="array">
  Ordered list of transcription segments covering the audio track.
</ResponseField>

<ResponseField name="data.transcriptions[].index" type="integer">
  Zero-based index of the segment.
</ResponseField>

<ResponseField name="data.transcriptions[].content" type="string">
  Transcribed text for this segment (often with a leading space).
</ResponseField>

<ResponseField name="data.transcriptions[].startTime" type="string">
  Segment start time in seconds, returned as a string.
</ResponseField>

<ResponseField name="data.transcriptions[].endTime" type="string">
  Segment end time in seconds, returned as a string.
</ResponseField>

<ResponseField name="data.createTime" type="string">
  Upload-time timestamp of the underlying video, in milliseconds since epoch, returned as a string.
</ResponseField>

<ResponseField name="data.video_bucket" type="string">
  GCS bucket of the underlying video file. Omitted when the storage location cannot be resolved.
</ResponseField>

<ResponseField name="data.video_blob" type="string">
  GCS blob (object) path of the underlying video. Use it with `video_bucket` at `GET /serve/api/v2/download?bucket=&blob=` to fetch the file directly.
</ResponseField>

<ResponseField name="success" type="boolean">
  `true` when `code == "0000"` — true even on the "no audio track" path.
</ResponseField>

<ResponseField name="failed" type="boolean">
  Inverse of `success`.
</ResponseField>

## Notes & Limits

* **No-audio case is not an error**: Videos without an audio track return `code: "0000"`, `success: true`, `data: null`. Check for `data` explicitly.
* **Numeric strings**: `startTime`, `endTime`, and `createTime` are strings — cast with `int(...)` before arithmetic.
* **Rate limiting**: Subject to the standard Visual Search rate limits. See [Rate limits](/visual-search/rate-limits).


## OpenAPI

````yaml GET /serve/api/v1/get_audio_transcription
openapi: 3.1.0
info:
  title: Memories Platform API (Docs Mapping)
  version: v1
  description: OpenAPI mapping used by Mintlify Try it for the platform docs.
servers:
  - url: https://api.memories.ai
security:
  - ApiKeyAuth: []
paths:
  /serve/api/v1/get_audio_transcription:
    get:
      summary: Get Audio Transcription
      operationId: get_audio_transcription
      parameters:
        - name: video_no
          in: query
          required: true
          schema:
            type: string
          description: The unique video ID returned by the upload API.
      responses:
        '200':
          $ref: '#/components/responses/SuccessJson'
components:
  responses:
    SuccessJson:
      description: Successful response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericJsonResponse'
  schemas:
    GenericJsonResponse:
      type: object
      properties:
        code:
          type:
            - string
            - integer
          example: '0000'
        msg:
          type: string
          example: success
        data:
          oneOf:
            - type: object
              additionalProperties: true
            - type: array
              items:
                type: object
                additionalProperties: true
            - type: string
            - type: 'null'
        success:
          type: boolean
          example: true
        failed:
          type: boolean
          example: false
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````