clips_vertical
Batch-cut a set of your own chosen vertical 9:16 clips from a prior find_clips job in one purchase. Two-call flow: (1) call with source_job_id (a find_clips job id) and clips (1-5 objects {start, end, title?} in source seconds — your own picks from that job's clip-candidates output; nothing is auto-selected) to receive {job_id, payment_challenge}; (2) pay by credit card via the returned payment_url or Tempo USDC via mppx, then call again with job_id + payment_credential to start processing. Poll get_job_status(job_id); outputs are roles clip-1-video through clip-N-video (one 1080×1920 .mp4 per requested clip, loudness-normalized to -14 LUFS / -1.5 dBTP) plus clips-manifest (JSON) recording each clip's timing, output role, and any per-clip failure — a batch delivering fewer than N clips is not refunded, only one delivering zero is. Price: N × $0.50 per clip, charged once for the whole batch (Stripe quantity) rather than once per clip — see /.well-known/mpp.json for the Tempo USDC rate. Optional profile (default tiktok-primary; also tiktok-primary-720p, instagram-reels, instagram-stories) and subject (default follow, switches crop between active speakers; auto and center are opt-outs) apply to every clip in the batch. Use this once find_clips has surfaced candidates you like, to cut several in one purchase instead of one extract_vertical_clip call per clip; use extract_vertical_clip directly instead when you need per-clip framing control or more than 5 clips from one source. Source must still be in storage — check expires_at on the find_clips parent via get_job_status. Retrying with job_id alone recovers the current state.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| clips | No | Your own chosen clips (1-5) from source_job_id's clip-candidates output — nothing is auto-selected. Each is cut as a separate vertical clip; the batch is charged N × the per-clip price as one payment covering the whole set, not one charge per clip. Total duration across all clips is capped. Required on the first call. | |
| job_id | No | Job ID returned from a previous clips_vertical call. Include along with payment_credential to confirm payment and trigger processing. Also include alone to recover the current state. | |
| profile | No | Optional encoding profile applied to every clip in the batch. Default: tiktok-primary (1080×1920 H.264 fast preset, CRF 22, 6 Mbps cap). tiktok-primary-720p: 720×1280, CBR 3 Mbps. instagram-reels: 1080×1920 H.264 slow preset, CBR 4 Mbps. instagram-stories: same encode shape as instagram-reels. Also sets each clip's max duration (240s/180s/60s). All four apply loudness normalization to -14 LUFS / -1.5 dBTP. | |
| subject | No | Optional reframing strategy applied to every clip in the batch. Default: "follow" — cuts between active-speaker framings across each clip, the mode that makes multi-speaker interview clips usable. "auto": one detected framing for the whole clip. "center": fixed centre crop, no detection. "subject_id" and "manual" are not supported here — they need per-clip data a batch call cannot supply; use extract_vertical_clip directly for those. | |
| source_job_id | No | Job ID of a prior find_clips job. Possessing this id is the capability — clips_vertical is not session-bound, so a user can come back from a different session within the parent's TTL and still cut. Required on the first call. | |
| payment_credential | No | MPP payment credential (full Authorization header value, e.g. "Payment eyJ..."). clips_vertical accepts Tempo USDC and Stripe SPT — see the challenge's WWW-Authenticate header or /.well-known/mpp.json for the supported methods. Include with job_id after paying the challenge to start processing. |