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

# Get a video

> Returns one video, with a download link once it's ready.

The video has the fields described in [Video fields](https://docs.olimi.ai/api-reference/endpoint/speech/speech-to-video.md#video-fields). Once it's `completed`, `videoAttachment.url` is a temporary download link, valid for up to one hour.

For polling, [Get video progress](https://docs.olimi.ai/api-reference/endpoint/speech/get-stv-progress.md) is lighter.


## OpenAPI

````yaml get /api/v2/stv/{id}
openapi: 3.0.1
info:
  title: Customer Management API
  description: API for managing customer lists and customers within those lists
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api-eg.olimi.ai
security:
  - bearerAuth: []
paths:
  /api/v2/stv/{id}:
    get:
      tags:
        - Speech to Video
      summary: Get a video
      description: Returns one video, with a download link once it's ready.
      parameters:
        - name: id
          in: path
          required: true
          description: The video's `id`.
          schema:
            type: string
            format: uuid
          example: 7a3e9c12-5d8b-4f61-a2c7-9e0b3d6f1a48
      responses:
        '200':
          description: The video.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StvVideoResponse'
        '400':
          description: '`id` isn''t a valid UUID.'
        '401':
          description: The `X-API-KEY` header is missing or the key isn't valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            `stv_job_not_found`: no video with that `id` belongs to your
            company, or it was deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorStv'
      security:
        - apiKeyAuth: []
components:
  schemas:
    StvVideoResponse:
      type: object
      properties:
        message:
          type: string
          example: STV job retrieved successfully
        data:
          $ref: '#/components/schemas/StvVideo'
    ApiError:
      type: object
      properties:
        statusCode:
          type: integer
          example: 404
        errorCode:
          type: string
          description: Machine-readable error code.
          example: agent_not_found
        message:
          type: string
          description: Human-readable text. May change; don't match on it.
          example: Agent not found
    ApiErrorStv:
      type: object
      properties:
        statusCode:
          type: integer
          example: 404
        errorCode:
          type: string
          example: stv_job_not_found
        message:
          type: string
          example: Speech-to-video job not found
    StvVideo:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The video's ID.
          example: 7a3e9c12-5d8b-4f61-a2c7-9e0b3d6f1a48
        name:
          type: string
          nullable: true
          description: Your label, if you sent one.
          example: Welcome message
        status:
          type: string
          enum:
            - queued
            - processing
            - completed
            - failed
            - cancelled
          description: >-
            See [Status
            values](/api-reference/endpoint/speech/speech-to-video#status-values).
          example: completed
        progress:
          type: string
          description: >-
            How far along it is, from `"0.00"` to `"1.00"` (a decimal, as a
            string).
          example: '1.00'
        configId:
          type: string
          description: The avatar used.
          example: 4f0cda01-bd22-410c-8b2e-026ce07691da
        errorCode:
          type: string
          nullable: true
          description: Why it failed, when `status` is `failed` or `cancelled`.
          example: null
        errorMessage:
          type: string
          nullable: true
          description: A human-readable reason, when it failed.
          example: null
        width:
          type: integer
          nullable: true
          description: Video width in pixels.
          example: 512
        height:
          type: integer
          nullable: true
          description: Video height in pixels.
          example: 512
        audioDuration:
          type: string
          nullable: true
          description: Length of the audio in seconds, as a string.
          example: '6.42'
        videoDuration:
          type: string
          nullable: true
          description: Length of the video in seconds, as a string.
          example: '6.40'
        audioAttachmentId:
          type: string
          format: uuid
          example: b1c9e4d2-7f3a-4e85-9b60-2d8f5a1c7e39
        videoAttachmentId:
          type: string
          format: uuid
          nullable: true
          description: '`null` until the video is ready.'
          example: e6d2a8f1-3c9b-4a57-8e14-7b0c5f2d9a63
        audioAttachment:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: b1c9e4d2-7f3a-4e85-9b60-2d8f5a1c7e39
            originalName:
              type: string
              example: welcome.mp3
            mimeType:
              type: string
              example: audio/mpeg
        videoAttachment:
          type: object
          nullable: true
          description: The finished video. `null` until it's ready.
          properties:
            id:
              type: string
              format: uuid
              example: e6d2a8f1-3c9b-4a57-8e14-7b0c5f2d9a63
            originalName:
              type: string
              example: job_8f2c.mp4
            mimeType:
              type: string
              example: video/mp4
            url:
              type: string
              description: A temporary download link.
              example: >-
                https://<storage-host>/stv/video_e6d2a8f1?X-Amz-Expires=3600&X-Amz-Signature=…
        createdAt:
          type: string
          format: date-time
          example: '2026-09-29T10:02:11.904Z'
        updatedAt:
          type: string
          format: date-time
          example: '2026-09-29T10:03:48.310Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````

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