Submit a source video `url` (YouTube, Vimeo, Google Drive, Dropbox, OneDrive,
Rumble, or a direct video file) to turn into viral clips, with an optional
`title`. Returns the new video `id` (a hashid) and its `status`.
Processing is ASYNCHRONOUS: this returns `status: "downloading"` or a
paused `pending_credits` state. Poll get_video_status with the returned `id`
while processing moves. Do not poll `pending_credits`: when a failed payment
caused the pause, the result includes `payment_required: true`, a message,
and `billing_url`; show that guidance so the user can repair payment.
Optionally pass an `agent` id (a hashid from list_agents) to process the video
with that agent's settings (caption preset, composition defaults, …); omit it to use
the team's defaults.
Optionally pass `max_clip_seconds` (15 to 90) to cap how long each clip runs
(omit it for automatic lengths, 40 to 90 seconds), and `clip_guidance` (up to
300 characters) to say which moments to prefer, for example "only the funniest
reactions". Guidance that is too narrow or not about picking moments is
rejected with a reason and a broader suggestion.
Safe to retry: submitting the same url + agent + clip preferences again returns
an existing run for it from the last 24h (still processing, or completed) as
`deduped: true` instead of starting a second run. Submitting the same url with
a DIFFERENT agent or clip preferences starts a new run (so you can re-process a
source with other settings). A previously *failed* url can be resubmitted to
retry it.
Errors: an unsupported/invalid URL is rejected and an agent not on your team
is rejected. A missing subscription or insufficient credits parks the video
in `pending_credits`; direct the user to OpenClip before checking again.