clips

Patch the edit state for an orientation

Partial update: only the given fields change (subtitles merged field by field, lists replaced, music: null = removed); the edit row is created with the account subtitle preset if missing. Plan gating (403): subtitles.overrides non-empty needs edit_captions; subtitles.lang != "original" needs translate; non-empty broll/music needs broll_music. Validation (400, the message names the field): zones inside 0..1, keyframe zone count must match the layout (vertical/spotlight/centered 1, split 2, trio 3, horizontal 0), cuts end > start, B-roll/emojis inside the clip bounds. Returns the full stored edit.

put/api/clips/{id}/edit

Request

  • Base URL: https://cliponit.app
  • URL: https://cliponit.app/api/clips/{id}/edit
  • Auth: one of:
    • HTTP bearer
    • API key in cookie session
    • OAuth 2 (authorization code, authorization URL https://cliponit.app/oauth/authorize, token URL https://cliponit.app/oauth/token, scopes: clips)

Path parameters

idstring uuid required
Example:6f1c2d6e-3b1a-4c0f-9a0e-2f5d1c7b8e90

Clip id (UUID)

Query parameters

orientation'vertical' | 'horizontal' | 'square' | 'portrait45'

vertical = 9:16 1080x1920 (TikTok/Reels/Shorts), horizontal = 16:9 1920x1080 (YouTube), square = 1:1 1080x1080 (feed), portrait45 = 4:5 1080x1350 (Instagram feed). auto-reframe supports vertical|horizontal only.

Which edit/export: vertical (9:16, default), horizontal (16:9), square (1:1) or portrait45 (4:5). Each clip has one independent edit per orientation.

Request body

layout'vertical' | 'horizontal' | 'split' | 'trio' | 'spotlight' | 'centered'

How source zones fill the output frame. vertical: 1 zone cropped to 9:16. horizontal: full frame (0 zones). split: 2 zones stacked (top, bottom). trio: 3 zones stacked. spotlight: 1 zone over a blurred full-frame background. centered: 1 square zone on a blue (#1e3a8a) background.

Example request

{
  "subtitles": {
    "style": "boxed",
    "color": "yellow"
  },
  "cuts": [
    {
      "start": 130.2,
      "end": 131
    }
  ]
}

Response

Stored edit

layout'vertical' | 'horizontal' | 'split' | 'trio' | 'spotlight' | 'centered' required

How source zones fill the output frame. vertical: 1 zone cropped to 9:16. horizontal: full frame (0 zones). split: 2 zones stacked (top, bottom). trio: 3 zones stacked. spotlight: 1 zone over a blurred full-frame background. centered: 1 square zone on a blue (#1e3a8a) background.

Example response

{
  "keyframes": [
    {
      "t": 0,
      "layout": "vertical",
      "zones": [
        {
          "x": 0.3,
          "y": 0,
          "w": 0.4,
          "h": 1
        }
      ],
      "ease": "cut"
    }
  ],
  "subtitles": {
    "enabled": true,
    "color": "yellow",
    "case": "normal",
    "lang": "original",
    "overrides": [],
    "style": "karaoke",
    "font": "Inter",
    "position": "bottom",
    "size": 2,
    "words_per_line": 5,
    "animate": true
  },
  "music": {
    "music_id": "6f1c2d6e-3b1a-4c0f-9a0e-2f5d1c7b8e90"
  },
  "emojis": [
    {
      "emoji": "🔥"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.