Sluby
REST APIUploads

Start a resumable upload (tus 1.0.0 creation).

Creates the video asset and answers with the upload url in Location: `<PUBLIC_URL>/api/v1/uploads/<upload id>`. The upload id (a uuid) is also the id of GET and DELETE /api/v1/uploads/{id}. Send the bytes with PATCH to that url; a HEAD on it returns Upload-Metadata with videoAssetId. Metadata keys (values base64): filename, filetype (must be video/* when given), title (up to 200 characters, "Untitled" when missing), description (up to 5000 characters), accessTier or access_tier (public or private, default public). Errors answer plain text.

POST
/api/v1/uploads

Creates the video asset and answers with the upload url in Location: <PUBLIC_URL>/api/v1/uploads/<upload id>. The upload id (a uuid) is also the id of GET and DELETE /api/v1/uploads/{id}. Send the bytes with PATCH to that url; a HEAD on it returns Upload-Metadata with videoAssetId. Metadata keys (values base64): filename, filetype (must be video/* when given), title (up to 200 characters, "Untitled" when missing), description (up to 5000 characters), accessTier or access_tier (public or private, default public). Errors answer plain text.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A Sluby API key (sluby_...) sent as Authorization: Bearer <key>. Keys carry scopes: upload, read, manage.

Header Parameters

Tus-Resumable*unknown
Upload-Length*integer

Size in bytes; at most MAX_UPLOAD_SIZE (10 GB by default).

Range1 <= value
Upload-Metadata?string

Response Body

Created; the upload url is in Location.

Example Request
curl -X POST 'https://sluby.example.com/api/v1/uploads' \  -H 'Tus-Resumable: 1.0.0' \  -H 'Upload-Length: 1'
Example Response
Empty