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

# Video Generation Status

> Check the status of a video generation job created by `POST /api/v1/video`. Poll this endpoint until `status` is `completed` or `failed`. Recommended polling interval: every 10–30 seconds. No additional charge for polling. Works with all video models.



## OpenAPI

````yaml /openapi.json get /api/v1/video/status
openapi: 3.1.0
info:
  title: NinjaChat API
  version: 1.0.0
  description: >-
    Access 40+ AI models through a unified API — chat, image generation, video
    generation, and web search. One API key, one endpoint per type, just change
    the `model` parameter.
servers:
  - url: https://www.ninjachat.ai
security:
  - bearerAuth: []
paths:
  /api/v1/video/status:
    get:
      tags:
        - Endpoints
      summary: Video Generation Status
      description: >-
        Check the status of a video generation job created by `POST
        /api/v1/video`. Poll this endpoint until `status` is `completed` or
        `failed`. Recommended polling interval: every 10–30 seconds. No
        additional charge for polling. Works with all video models.
      operationId: getVideoStatus
      parameters:
        - name: request_id
          in: query
          required: true
          schema:
            type: string
          description: The `request_id` returned from `POST /api/v1/video`.
          examples:
            seedance:
              summary: Seedance 2 job
              value: seedance2:abc123def456
            veo:
              summary: Veo 3.1 job
              value: gemini-veo:operations/generate-video-abc123
      responses:
        '200':
          description: Job status.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: The original request ID.
                  status:
                    type: string
                    enum:
                      - processing
                      - completed
                      - failed
                    description: >-
                      `processing` — still generating (check `progress`).
                      `completed` — video is ready (see `result.video_url`).
                      `failed` — generation failed (see `error`).
                  progress:
                    type: integer
                    minimum: 0
                    maximum: 95
                    description: >-
                      Approximate progress percentage (0–95). Only present when
                      status is `processing`.
                  result:
                    type: object
                    properties:
                      video_url:
                        type: string
                        description: >-
                          CDN-hosted URL of the generated MP4 video. Only
                          present when status is `completed`.
                  error:
                    type: string
                    description: Error description. Only present when status is `failed`.
              examples:
                processing:
                  summary: Processing
                  value:
                    request_id: gemini-veo:operations/generate-video-abc123
                    status: processing
                    progress: 45
                completed:
                  summary: Completed
                  value:
                    request_id: gemini-veo:operations/generate-video-abc123
                    status: completed
                    result:
                      video_url: >-
                        https://cdn.ninjachat.ai/videos/api-veo_1708300000000.mp4
                failed:
                  summary: Failed
                  value:
                    request_id: gemini-veo:operations/generate-video-abc123
                    status: failed
                    error: Video generation failed
        '400':
          description: Missing or invalid `request_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Upstream status check failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      description: >-
        OpenAI-compatible error. The top-level `message`, `code`, and
        `request_id` mirror fields inside `error` for convenience.
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: Human-readable error description.
            type:
              type: string
              description: >-
                Error category: invalid_request_error, authentication_error,
                rate_limit_error, insufficient_quota, or api_error.
            code:
              type: string
              description: Machine-readable error code.
            param:
              type: string
              nullable: true
              description: The request parameter that caused the error, if any.
        message:
          type: string
          description: Same as error.message.
        code:
          type: string
          description: Same as error.code.
        request_id:
          type: string
          description: Unique request ID, useful when contacting support.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key starting with nj_sk_

````