smart

Detect faces/speakers and write layout + keyframes

Synchronous (10 s – 2 min). Two stable faces (> 60 % of the time) → one split keyframe; otherwise vertical keyframes following the active speaker (ease: smooth); horizontal → full frame. Overwrites layout and keyframes of the edit for this orientation. Results are cached per clip bounds. 500 if the face model is missing on the server.

post/api/clips/{id}/auto-reframe

Request

  • Base URL: https://cliponit.app
  • URL: https://cliponit.app/api/clips/{id}/auto-reframe
  • 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.

Response

Reframe result

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.

facesinteger required

Number of face tracks found

speakersinteger required

Number of stable speakers

Example response

{
  "keyframes": [
    {
      "t": 0,
      "layout": "vertical",
      "zones": [
        {
          "x": 0.3,
          "y": 0,
          "w": 0.4,
          "h": 1
        }
      ],
      "ease": "cut"
    }
  ]
}

Changes

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