Skip to content

DocsAPI referenceFiles

Create a direct upload

A single upload: PUT the file to upload_url within an hour, up to 100 MB. With multipart: true: send its parts to multipart.part_url_template within 6 hours, each again if it fails, then POST multipart.complete_url; up to the plan input limit. A scoped API key needs the files:write scope (full keys may call it).

POST /v1/uploads

Needs an API key: Authorization: Bearer $VIDEXO_API_KEY.

Body CreateUploadRequest

Body fields
NameTypeDescription
filename requiredstring, up to 105 characters
size_bytes requiredintegerExact byte length. A single upload takes at most 100 MB and the plan's input limit; a multipart one, the plan's input limit.
content_type string, up to 128 charactersDefault application/octet-stream.
multipart booleanSend the file in parts that can each be sent again, so an upload survives a lost connection and can pass 100 MB. The answer then carries multipart.
part_size_bytes integer, 5242880 to 67108864With multipart: the size of every part but the last, 5242880 (5 MiB) to 67108864 (64 MiB); 8388608 (8 MiB) by default.

Request

bash
curl -X POST "$VIDEXO_API_URL/v1/uploads" \
  -H "Authorization: Bearer $VIDEXO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filename": "input.mp4",
  "size_bytes": 52428800,
  "content_type": "video/mp4"
}'

Response

201 JSON
{
  "id": "up_0123456789abcdef01234567",
  "input_url": "videxo://uploads/up_0123456789abcdef01234567",
  "upload_url": "https://api.videxo.io/v1/uploads/up_0123456789abcdef01234567?account=acc_7Gq2x9LmTnV4&expires=1793800800&signature=example",
  "upload_url_expires_at": "2026-11-04T13:00:00.000Z",
  "expires_at": "2026-11-05T12:00:00.000Z",
  "max_size_bytes": 100000000
}

Responses

Responses
StatusBodyWhen
201UploadPUT the exact file bytes to upload_url (or, with multipart, the parts and then complete), then use input_url in a job.
400Probleminvalid_request
401Problemauthentication_failed (missing_api_key, invalid_api_key, api_key_revoked, api_key_expired)
403Problempermission_denied (token_scope): a client token cannot call this route; permission_denied (key_scope): a scoped API key without files:write
413Problemlimit_exceeded (upload_size, request_body_size, upload_budget)
429Problemrate_limited
503Problemservice_unavailable (temporary): a multipart upload could not be prepared