Developer docs

Change a place's photo

MCP tool
swap_music_video_place
CLI
kinetune plans swap-place
PATCH/api/v1/music-video-plans/{plan_id}/places/{place}

Not sent from the docs: it changes your workspace. Run it with curl, the CLI or its MCP tool.

Another stock photo for one of a plan's places

Returns the next draft: the same shot list, set in this photo (no director call, free). Pick a photo of the same kind of place, with no people, from search_stock.

Authorization

headerAuthorizationBearer <token>

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

Path Parameters

plan_id*string

The plan id (plan_…)

Match^plan_[0-9a-f-]{36}$
place*integer

The place's number (places[].index)

Range1 <= value <= 9007199254740991

Request Body

application/json
  1. body
stock_id*string

A stock photo id from search_stock

Match^\d{1,20}$

Response Body

OK

application/json
  1. response
id*string
song_id*string
draft*integer

1 for the first plan, n+1 for a rewrite

Range-9007199254740991 <= value <= 9007199254740991
revision_of*string|null
note*string|null
brief*

What it was planned from: model, category, style, aspect_ratio, trim, direction, cast

title*|

The film's name, as the director titled it

concept*string
style*string
clips*integer
Range-9007199254740991 <= value <= 9007199254740991
cast*

The photos it keeps the artist from

world*

What every shot keeps

places*array<>

The real places it is set in: kit pieces (kit), or stock photos the director found (photo); neither: no usable photo was found, so it is imagined. Empty: every place is imagined

outfits*array<>

The kit outfits it uses

props*array<>

The kit props it uses

joins*integer

In a continuous take, the joins drawn as pictures (priced per picture); 0 otherwise

Range-9007199254740991 <= value <= 9007199254740991
shots*array<>
created_at*string
[key: string]?unknown
Example Request
curl -X PATCH 'https://kinetune.com/api/v1/music-video-plans/string/places/1' \
  -H 'Content-Type: application/json' \
  -d '{
  "stock_id": "string"
}'
Example Response
{
  "id": "string",
  "song_id": "string",
  "draft": -9007199254740991,
  "revision_of": "string",
  "note": "string",
  "brief": {
    "property1": null,
    "property2": null
  },
  "title": "string",
  "concept": "string",
  "style": "string",
  "clips": -9007199254740991,
  "cast": {
    "face_photo_id": "string",
    "outfit_photo_id": "string"
  },
  "world": {
    "setting": "string",
    "wardrobe": "string",
    "light": "string"
  },
  "places": [
    {
      "index": -9007199254740991,
      "description": "string",
      "kit": {
        "id": "string",
        "name": "string",
        "handle": "string"
      },
      "photo": {
        "stock_id": "string",
        "thumbnail_url": "string",
        "credit": {
          "property1": null,
          "property2": null
        }
      }
    }
  ],
  "outfits": [
    {
      "index": -9007199254740991,
      "kit": {
        "id": "string",
        "name": "string",
        "handle": "string"
      },
      "description": "string"
    }
  ],
  "props": [
    {
      "index": -9007199254740991,
      "kit": {
        "id": "string",
        "name": "string",
        "handle": "string"
      },
      "description": "string"
    }
  ],
  "joins": -9007199254740991,
  "shots": [
    {
      "index": -9007199254740991,
      "start_seconds": 0,
      "end_seconds": 0,
      "section": "string",
      "lyrics": "string",
      "summary": "string",
      "places": [
        -9007199254740991
      ],
      "outfit": -9007199254740991,
      "props": [
        -9007199254740991
      ],
      "continues": true,
      "transition": "cut"
    }
  ],
  "created_at": "string",
  "property1": null,
  "property2": null
}