Process a video into short clips
process_videoStarts clipping a video from a URL: downloads, transcribes, detects viral moments, and renders vertical 9:16 clips. Returns a job ID for polling or webhook.
Instructions
Start clipping a video from its URL. OpenShorts downloads the source itself, transcribes it, finds the most viral moments with AI and renders vertical (9:16) clips. Captions and the AI hook line are burned by default; pass captions=false or auto_hook=false to skip either. Call this directly with the URL the user gave you; do not fetch, search or inspect the URL yourself first (you cannot access the video, and it is not needed). Returns a job_id immediately — the work takes minutes; poll get_job_status or pass webhook_url to be called back. The caller must own the content or hold the rights to process it (confirm_rights).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| layouts | No | Optional extra reframe layouts. 'auto' lets AI pick per video. | |
| captions | No | Default true: burn word-level captions on every clip. Set false when the source already has subtitles burned in (they would stack) or the user wants clean clips; add_subtitles can still caption a clip later. | |
| auto_hook | No | Burn the AI-written hook line (the clip's title) over the first seconds of each clip, as the dashboard does. Default true; set false for clean clips. | |
| upload_id | No | Instead of source_url: the id from create_upload after the file was PUT to its upload_url. Use when the user gave you a video file rather than a link. | |
| hook_style | No | Look of the hook text (with auto_hook). Default classic. | |
| source_url | No | Public video URL, passed through exactly as the user gave it (YouTube watch/short/live URL, a direct video file URL, or a tmpfiles.org link from the create_upload fallback). The server does the downloading. Omit when using upload_id. | |
| webhook_url | No | Optional public HTTPS URL POSTed once when the job finishes or fails. | |
| target_clips | No | How many clips to aim for. A target, not a guarantee: fewer come back when the material doesn't hold them. Default: the AI decides (usually 2-6). | |
| output_format | No | Clip aspect. Default auto (vertical). | |
| confirm_rights | Yes | Must be true: the user owns the content or has rights to process it. | |
| webhook_secret | No | Optional secret; the webhook body is then HMAC-SHA256 signed (X-OpenShorts-Signature). | |
| clip_max_seconds | No | Maximum clip length in seconds (default 60). Must be ≥ 5s above the minimum. | |
| clip_min_seconds | No | Minimum clip length in seconds (default 15). | |
| force_low_quality | No | Set true to proceed after a needs_confirmation low-resolution warning. |