Skip to content

DocsAPI referenceFiles

Send bytes to a one-time upload URL

Use upload_url from POST /v1/uploads. Send raw bytes, exactly size_bytes, up to 100 MB. The URL is consumed once streaming starts. No API key is required.

PUT /v1/uploads/{id}

Needs no API key.

Parameters

Parameters
NameInTypeDescription
id requiredpathstring
account requiredquerystring
expires requiredquerystring
signature requiredquerystring

Request

bash
# upload_url is the URL POST /v1/uploads returned. It needs no API key.
curl --fail-with-body -X PUT "$upload_url" \
  -H "Content-Type: video/mp4" \
  --data-binary @input.mp4

Response

200 JSON
{
  "id": "up_0123456789abcdef01234567",
  "input_url": "videxo://uploads/up_0123456789abcdef01234567",
  "size_bytes": 52428800,
  "sha256": "3b1f5d7a9c2e4f60b8d0a2c4e6f8a0b2c4d6e8f0a1b3c5d7e9f1a3b5c7d9e1f3",
  "content_type": "video/mp4",
  "expires_at": "2026-11-05T12:00:00.000Z"
}

Responses

Responses
StatusBodyWhen
200noneUpload completed: id, input_url, size_bytes, sha256, content_type, expires_at.
400Probleminvalid_request (size_mismatch)
401Problemauthentication_failed (client_token_revoked): the client token that created the upload was revoked
403Problempermission_denied (link_invalid, account_disabled)
404Problemnot_found (upload)
409Problemconflict (upload_used)
410Problemresource_expired (link_expired, upload_expired)
413Problemlimit_exceeded (upload_size)
503Problemservice_unavailable (temporary)