Developer docs

Get a video

MCP tool
get_video
CLI
kinetune videos get
GET
/api/v1/videos/{video_id}

Try it with your own API key: it runs on that key's workspace, so a real key reads your real songs, videos and credits. Reads and quotes only; nothing is charged.

Status, progress, credits and, when completed, the download links

status is queued, processing, completed, failed or cancelled. While it waits, queue says why: plan_limit (the organization already makes as many videos at once as its plan allows; position is its place in line) or render_capacity (every render machine is busy; estimated_wait_seconds is about how long). Completed videos have outputs with download_url (full quality), web_url (720p) and poster_url, signed for 7 days. A lyric video's poster is a frame with one whole lyric line on screen (the hook when it can be), ready to set as the thumbnail where you post it; a Canvas's is its first frame; a music video's a frame of its first seconds. poster_seconds says where in that file the poster was cut, for posts that take a cover frame offset instead of an image (TikTok); null on videos made before it was kept. Failed videos have error and error_code; AI_VIDEO_UNAVAILABLE means the AI video couldn’t be made for a reason on our side, so make it again later.

Authorization

headerAuthorizationBearer <token>

An organization API key (kt_live_…) or an OAuth access token

Path Parameters

video_id*string

The video id

Length1 <= length <= 120

Response Body

OK

application/json
  1. response
id*string
type*string
Value in"lyric-video""canvas""music-video"
variation*integer
Range-9007199254740991 <= value <= 9007199254740991
variation_count*integer
Range-9007199254740991 <= value <= 9007199254740991
quote_id*string|null
status*string
Value in"queued""processing""completed""failed""cancelled"
stage*string

The step it is at while it is made

progress*number

0–100

queue*|

Why the video is waiting, while it waits (its plan's limit, or every render machine busy); null otherwise

outputs*array<>

One file per format, once delivered

song*
request*

What the video was made from, with your metadata

look_id*string|null
look*|null
canvas?|

A Canvas: its design and, for stock, the credit to show

music_video?|

A music video's plan, once the director made it (null before)

quoted_credits*number|null
charged_credits*number|null
error*string|null
error_code*string|null
retry_of_job_id*string|null
created_at*string
updated_at*string
[key: string]?unknown
Example Request
curl -X GET 'https://kinetune.com/api/v1/videos/string'
Example Response
{
  "id": "string",
  "type": "lyric-video",
  "variation": -9007199254740991,
  "variation_count": -9007199254740991,
  "quote_id": "string",
  "status": "queued",
  "stage": "string",
  "progress": 0,
  "queue": {
    "reason": "plan_limit",
    "position": -9007199254740991,
    "estimated_wait_seconds": -9007199254740991
  },
  "outputs": [
    {
      "aspect_ratio": "9:16",
      "url": "string",
      "download_url": "string",
      "web_url": "string",
      "poster_url": "string",
      "poster_seconds": 0,
      "url_expires_in_seconds": -9007199254740991,
      "duration_seconds": 0,
      "size_bytes": -9007199254740991,
      "bitrate_kbps": -9007199254740991,
      "web_size_bytes": -9007199254740991,
      "property1": null,
      "property2": null
    }
  ],
  "song": {
    "id": "string",
    "title": "string",
    "artist_name": "string"
  },
  "request": {
    "property1": null,
    "property2": null
  },
  "look_id": "string",
  "look": {
    "property1": null,
    "property2": null
  },
  "canvas": {
    "property1": null,
    "property2": null
  },
  "music_video": {
    "title": "string",
    "concept": "string",
    "style": "string",
    "clips": -9007199254740991,
    "cast": {
      "face_photo_id": "string",
      "outfit_photo_id": "string"
    },
    "world": {
      "setting": "string",
      "wardrobe": "string",
      "light": "string"
    },
    "shots": [
      {
        "index": -9007199254740991,
        "start_seconds": 0,
        "end_seconds": 0,
        "section": "string",
        "lyrics": "string",
        "summary": "string"
      }
    ]
  },
  "quoted_credits": 0,
  "charged_credits": 0,
  "error": "string",
  "error_code": "string",
  "retry_of_job_id": "string",
  "created_at": "string",
  "updated_at": "string",
  "property1": null,
  "property2": null
}