Captions · Schema

MAVideo

Represents a Mirage/Captions video object. A video can be created via AI generation (image+audio) or captioning (adding captions to an existing video).

AI VideoVideo GenerationVideo CaptioningAI DubbingLip SyncAI TwinText to VideoGenerative AIVideo Translation

Properties

Name Type Description
id string Video generation job ID
object string
status string Current state of the video
created_at integer When the video was created (unix timestamp)
completed_at integernull When processing completed (unix timestamp)
progress integernull Progress percentage (0-100)
error object Error details if status is FAILED
model stringnull Model used for generation (only for source=generation)
source_video_id stringnull The input video that was captioned (only for source=caption)
caption_template_id stringnull Caption style template used (only for source=caption)
share_link_url stringnull Public share link for a completed internal video, when enabled
video_id string [Deprecated] Use 'id' instead.
View JSON Schema on GitHub

JSON Schema

captions-ai-video-schema.json Raw ↑
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/captions-ai/main/json-schema/captions-ai-video-schema.json",
  "title": "MAVideo",
  "description": "Represents a Mirage/Captions video object. A video can be created via AI generation (image+audio) or captioning (adding captions to an existing video).",
  "type": "object",
  "required": ["id", "status", "created_at", "video_id"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Video generation job ID",
      "examples": ["video_abc123def456"]
    },
    "object": {
      "type": "string",
      "enum": ["video"],
      "default": "video"
    },
    "status": {
      "type": "string",
      "enum": ["PROCESSING", "COMPLETE", "FAILED", "CANCELLED"],
      "description": "Current state of the video"
    },
    "created_at": {
      "type": "integer",
      "description": "When the video was created (unix timestamp)",
      "examples": [1730822400]
    },
    "completed_at": {
      "type": ["integer", "null"],
      "description": "When processing completed (unix timestamp)",
      "examples": [1730822520]
    },
    "progress": {
      "type": ["integer", "null"],
      "minimum": 0,
      "maximum": 100,
      "description": "Progress percentage (0-100)",
      "examples": [100]
    },
    "error": {
      "oneOf": [
        {
          "$ref": "#/definitions/MAVideoError"
        },
        {
          "type": "null"
        }
      ],
      "description": "Error details if status is FAILED"
    },
    "model": {
      "type": ["string", "null"],
      "enum": ["mirage-video-1-latest", null],
      "description": "Model used for generation (only for source=generation)"
    },
    "source_video_id": {
      "type": ["string", "null"],
      "description": "The input video that was captioned (only for source=caption)"
    },
    "caption_template_id": {
      "type": ["string", "null"],
      "description": "Caption style template used (only for source=caption)"
    },
    "share_link_url": {
      "type": ["string", "null"],
      "format": "uri",
      "description": "Public share link for a completed internal video, when enabled"
    },
    "video_id": {
      "type": "string",
      "description": "[Deprecated] Use 'id' instead.",
      "deprecated": true
    }
  },
  "definitions": {
    "MAVideoError": {
      "type": "object",
      "required": ["code", "message"],
      "description": "Error payload that explains why generation failed",
      "properties": {
        "code": {
          "type": "string",
          "description": "Error code",
          "examples": ["rate_limit_exceeded"]
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message",
          "examples": ["Rate limit exceeded. Please try again later."]
        }
      }
    }
  }
}