API v1

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/complete

What 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

FieldTypeRequiredDescription
namestringYesDisplay name of the uploaded video
bucket_video_filestringYesStorage path returned by Initiate Upload
conversionsarrayYesRequested output conversion jobs
search_tagsarray / stringNoTags 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

ModeDescription
depthmapGenerates a depth map representation
hevcHigh-efficiency HEVC master output
fisheyeFisheye projection for VR pipelines
fulldomeFull-dome fisheye projection

Supported Target Resolutions

  • 4k
  • 5.6k
  • 8k

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.