Compress your first video in under 5 minutes.
Create an account and generate an API key from the dashboard. Your key starts with vd_live_ for production or vd_test_ for sandbox.
$ curl -X POST https://api.viding.ai/api/v1/keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "my-first-key"}'
Store your API key securely — the full key is only shown once at creation time.
Start a chunked upload by providing the filename, MIME type, and file size. The API returns presigned URLs for each chunk.
$ curl -X POST https://api.viding.ai/api/v1/uploads/init \
-H "Authorization: Bearer vd_live_abc123..." \
-H "Content-Type: application/json" \
-d '{
"filename": "interview.mp4",
"mime_type": "video/mp4",
"file_size": 524288000
}'
# Response:
{
"upload_id": "a1b2c3d4-...",
"chunk_count": 50,
"chunk_urls": ["https://...", ...],
"expires_at": "2026-04-01T12:00:00Z"
}
Once the upload is complete, create a job specifying your desired codec and quality settings — or use a preset.
$ curl -X POST https://api.viding.ai/api/v1/jobs \
-H "Authorization: Bearer vd_live_abc123..." \
-H "Content-Type: application/json" \
-d '{
"file_id": "a1b2c3d4-...",
"preset": "balanced",
"webhook_url": "https://your-server.com/webhook"
}'
# Response:
{
"id": "job-uuid-...",
"status": "queued",
"created_at": "2026-04-01T10:30:00Z"
}
Poll the job status or wait for a webhook callback. Once complete, get a presigned download URL.
$ curl https://api.viding.ai/api/v1/jobs/job-uuid-.../download \
-H "Authorization: Bearer vd_live_abc123..."
# Response:
{
"download_url": "https://storage.viding.ai/...",
"expires_at": "2026-04-01T11:30:00Z"
}
See the full API Reference for all endpoints, error codes, and webhook event schemas.