Complete Upload
Confirms the uploaded video, validates metadata, enforces final quota limits, creates the video asset, and triggers conversion jobs.
POST
/api/client/v1/uploads/video/completeWhat this API does
This endpoint must be called after the video file has been uploaded using the signed URL returned by Initiate Upload.
- Verifies the uploaded object exists in cloud storage
- Reads authoritative video metadata (size & duration)
- Applies final subscription & quota enforcement
- Deletes uploaded file if quota validation fails
- Creates a video asset
- Triggers requested conversion jobs asynchronously
Authentication
Headers
X-Client-ID: <YOUR_CLIENT_ID>
X-Client-Secret: <YOUR_CLIENT_SECRET>Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Display name of the uploaded video |
| bucket_video_file | string | Yes | Storage path returned by Initiate Upload |
| conversions | array | Yes | Requested output conversion jobs |
| search_tags | array / string | No | Tags for discovery and indexing |
JSON
{
"name": "Intro Demo Video",
"bucket_video_file": "users/42/uploads/intro.mp4",
"search_tags": ["demo", "intro"],
"conversions": [
{
"mode": "hevc",
"target_resolution": "5.7k",
"target_bitrate_mbps": 60
}
]
}Conversions Configuration
The conversions array defines one or more output formats to be generated asynchronously after upload completion.
Conversions Format
"conversions": [
{
"mode": "hevc",
"target_resolution": "5.7k",
"target_bitrate_mbps": 60
}
]Supported Conversion Modes
| Mode | Description |
|---|---|
depthmap | Generates a depth map representation |
hevc | High-efficiency HEVC master output |
fisheye | Fisheye projection for VR pipelines |
fulldome | Full-dome fisheye projection |
Supported Target Resolutions
4k5.6k8k
Availability depends on plan limits and source video quality.
Validation & Cleanup Behavior
- Verifies uploaded object exists
- Reads authoritative metadata from the video
- Re-enforces quota using actual size & duration
If quota validation fails, the uploaded file is automatically deleted to prevent unauthorized storage usage.
Response
200 OK
{
"success": true,
"message": "Uploaded successfully and conversion will begin shortly!",
"upload_id": 981,
"results": [
{ "mode": "hevc", "status": "queued", "job_id": xxx }
],
"bucket_video_file": "users/42/uploads/intro.mp4",
"total_size_bytes": 52428800,
"video_duration": 120
}Possible Errors
- 400 – Missing name or bucket_video_file
- 400 – Uploaded file not found or unreadable
- 400 – Uploaded file exceeded max duration limits
- 401 – Upload exceeds subscription limits (file deleted)
- 403 – Invalid API credentials
- 500 – Unable to complete upload
👉 Next: List Processing Jobs – monitor conversion progress.