POST/v1/predict/upload0 credits
Get upload link
Asks for a one-time link. There is no file on this request.
You get upload_url (where the MP4 goes next), prediction_id (for polling), upload_id (Retry start only), and expires_at (5 minutes). Status starts as awaiting_upload — scoring has not started yet.
Next. Upload the clip — PUT the MP4 to upload_url. If the link expires, send this request again.
Needs predict:write on the key. This is a permission on the key, not a request header. Missing it returns 403 api_not_enabled.
Request parameters
Empty POST. Bearer only — no query, no JSON, no file.
Response
{
"upload_id": "upl_3c91a0b4e7d4a1f8c3e2d1b0a9f8e7d0",
"prediction_id": "pred_7b3e0c1d2e3f4a5b6c7d8e9f0a1b2c3d",
"upload_url": "https://files.hookest.com/storage/v1/object/upload/sign/virality/api/…?token=…",
"expires_at": "2026-09-16T10:17:00.000Z"
}
Response fields
| Name | Type | Required | Description |
|---|---|---|---|
upload_id |
string | Required | Keep this for retry start only. |
prediction_id |
string | Required | Id for Get prediction. Status is awaiting_upload until the job is consumed (queued). |
upload_url |
string | Required | One-time URL for the next step. Send the MP4 here — not to /v1/predict/upload. |
expires_at |
string | Required | ISO-8601. The link lasts 5 minutes. After that, get a new link. |