API Documentation
Upload files, generate signed download links and manage sharing programmatically. All endpoints live under https://outbound-api.inurhuda00-526.workers.dev/api/v1.
Quickstart
Upload a file in three calls. Issue an API key, open an upload session, PUT the parts, then complete it — videos start encoding automatically.
Authentication
Create an API key on your account's API keys page and send it with every request — either header works:
Keys inherit your account's plan (an active subscription is required) and are rate limited per key. Exceeding the limit returns 429.
Uploading a file
Uploads are resumable multipart uploads, straight to storage — your file bytes never proxy through the API. Three steps:
1Create an upload session
The response contains key, uploadId, partSize and one presigned partUrls[] entry per part. Videos up to 10 GB; images 50 MB; audio 500 MB.
2PUT each part to its presigned URL
Parts can upload in parallel and in any order. Each response carries an ETag header — collect them for the final step.
3Complete the upload
The asset is registered and returned. Videos encode to adaptive HLS (480p / 720p / 1080p) automatically — poll the asset until metadata.encodingStatus === "ready". Abandoned sessions can be cancelled with POST /uploads/abort.
Signed download links
Mint an expiring, HMAC-signed URL to the original file — shareable with anyone, no auth needed to download:
expiresIn is in seconds — 60 up to 604800 (7 days), default 86400 (24 h).
Sharing
Publishing makes an asset publicly streamable and gives it a share page, an HLS URL and an embed snippet. Unpublishing revokes all of them.
URLs are null while the asset is a draft (and hlsUrl until encoding is ready). Check state any time with GET /assets/:id/share.
Endpoint reference
/uploadsCreate an upload session — returns presigned part URLs.
/uploads/completeRegister the uploaded file as an asset; videos start encoding.
/uploads/abortCancel an in-progress upload session.
/assetsList your assets — ?page, ?limit, ?type, ?status, ?q.
/assets/:idAsset detail, including its sharing state and URLs.
/assets/:idDelete the asset and every stored file that belongs to it.
/assets/:id/download-linkMint an expiring signed download URL — ?expiresIn seconds.
/assets/:id/shareCurrent sharing status + public URLs.
/assets/:id/publishPublish — enables the share page, HLS stream and embed.
/assets/:id/unpublishBack to draft — revokes all public URLs.
Responses & errors
Every endpoint returns the same envelope — { success, message, statusCode, data }. Errors use it too, with success: false and an optional code:
401Missing, invalid or expired API key.403Plan does not allow this action (e.g. no active subscription).404Asset not found — or owned by another account.400Validation failed; the message says which field.429API key rate limit exceeded — back off and retry.