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

# Create a video and wait

> Same body as the async endpoint, but waits up to 600 seconds for the video. Set your client timeout to at least 620 seconds. The async endpoint is recommended for production. If the video is not ready in time, returns 504 with error.task_id; poll that job or repeat the call with the same Idempotency-Key.



## OpenAPI

````yaml openapi.yaml POST /v1/videos/generations
openapi: 3.1.0
info:
  title: Orvado API
  version: '1.0'
  description: >-
    OpenAI-compatible image and video API. Prices in USD, charged from a prepaid
    balance.
servers:
  - url: https://orvado.dev
security:
  - bearerAuth: []
paths:
  /v1/videos/generations:
    post:
      summary: Create a video and wait
      description: >-
        Same body as the async endpoint, but waits up to 600 seconds for the
        video. Set your client timeout to at least 620 seconds. The async
        endpoint is recommended for production. If the video is not ready in
        time, returns 504 with error.task_id; poll that job or repeat the call
        with the same Idempotency-Key.
      operationId: createVideoSync
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoRequest'
      responses:
        '200':
          description: The finished video
          content:
            application/json:
              schema:
                type: object
                properties:
                  created:
                    type: integer
                    example: 1792560000
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          description: MP4 link, available for at least 24 hours
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/VideoError'
        '504':
          $ref: '#/components/responses/VideoError'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Your own unique ID for this video, up to 256 characters. Repeating a
        request with the same key returns the same job and does not charge again
      schema:
        type: string
        example: order-1042-video
  schemas:
    VideoRequest:
      type: object
      required:
        - model
        - prompt
      properties:
        model:
          type: string
          enum:
            - seedance-2.5
            - seedance-2.0
        prompt:
          type: string
          example: >-
            slow dolly shot of a perfume bottle on plum velvet, soft studio
            light
        duration:
          type: integer
          default: 5
          description: 'Whole seconds. Seedance 2.5: 4 to 30. Seedance 2.0: 5 to 15'
        resolution:
          type: string
          enum:
            - 480p
            - 720p
            - 1080p
            - 4k
          default: 720p
          description: 4k is Seedance 2.0 only
        aspect_ratio:
          type: string
          enum:
            - '16:9'
            - '9:16'
            - '1:1'
            - '4:3'
            - '3:4'
            - '21:9'
          default: '16:9'
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: 'No token provided (request id: 2026102015161442847504045555018)'
            type:
              type: string
              example: one_api_error
    VideoError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: async_video_wait_timeout
            message:
              type: string
            task_id:
              type: string
              example: at_0b6f2c1e-6f1d-4a43-9d4e-2a7c1d9e5b10
  responses:
    Unauthorized:
      description: Missing or invalid key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    VideoError:
      description: >-
        Video error. See the code: invalid_async_video_request,
        insufficient_quota, model_not_allowed, async_task_not_found,
        idempotency_conflict, video_generation_failed (not charged),
        async_video_wait_timeout (job still running; poll task_id)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/VideoError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your `td-` key from **Tokens**

````

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