Video Stabilization

Apply video stabilisation to smooth handheld-style camera drift in video clips

POST/v1/video-stabilization/apply202

Apply video stabilisation to a clip — ideal for smoothing subtle handheld-style camera drift. Use the strength preset for sensible defaults, or override individual options for fine control. Max input duration: 60 seconds.

Request Body

ParameterTypeRequiredDescription
video_urlstring (URI)YesURL of the source video to stabilise. MP4 recommended. Max duration: 60 seconds.
strengthstringNoStabilisation preset: subtle (gentle smoothing for already-clean AI clips), standard (balanced), or strong (aggressive, for visibly shaky input). Default: standard
options.shakinessinteger (1-10)NoDetector sensitivity to camera shake (1=barely shaky, 10=very shaky). Overrides the strength preset. Lower values reduce false-positive correction on clean footage.
options.smoothinginteger (1-120)NoSmoothing window in frames (e.g. 30 ≈ 1s at 30fps). Higher = smoother but more cropping. Overrides the strength preset.
options.optzoomnumberNoBorder handling: 0=none (visible black borders), 1=auto-zoom to hide borders, 2=aggressive zoom. Default depends on strength preset.
options.zoomnumber (-50-50)NoAdditional zoom percentage on top of optzoom. Negative zooms out, positive zooms in. Default: 0
webhook_urlstring (URI)NoURL to receive progress and completion webhooks
callback_metadataobjectNoOpaque data returned in webhook payloads

Request Example

{
  "video_url":  "https://example.com/image.jpg",
  "options":  {
    "shakiness":  1,
    "smoothing":  1,
    "optzoom":  0,
    "zoom":  -50
  },
  "webhook_url":  "https://example.com/image.jpg"
}

Response

{
  "data":  {
    "job_id":  "550e8400-e29b-41d4-a716-446655440000",
    "status":  "queued"
  },
  "meta":  {
    "request_id":  "req_abc123",
    "timestamp":  "2026-03-12T10:00:00.000Z",
    "mode":  "live"
  }
}