Introduction
Welcome to the Zvid API Documentation. The Zvid API lets you submit JSON video projects, queue render jobs, check job status, manage credits, and create API keys.
What is Zvid?
Zvid is a video rendering platform for creating videos from structured JSON. The API flow is:
- Send a render request to
POST /api/render/api-keywith apayloadobject. - The Zvid API authenticates the API key, validates the payload, checks credits and rate limits, and queues the render job.
- Zvid resolves remote assets, applies plan limits, renders the video, and uploads the result.
- Poll
GET /api/jobs/{id}to retrieve progress and the final result.
With Zvid, you can:
- Render videos with custom text, images, SVGs, GIFs, video clips, audio, and subtitles
- Manage API keys for server-to-server access
- Track render jobs and results
- Monitor credit balance and usage
Quick Start
1. Create an API Key
Create an API key from the Zvid Dashboard:
- Log in to your Zvid account.
- Open API Access.
- Click Create API Key.
- Give the key a descriptive name.
- Copy and store the key securely. The full key is shown only once.
2. Verify the Key
curl -X GET https://api.zvid.io/api/user/profile \
-H "x-api-key: your-api-key-here"
3. Submit a Render Job
curl -X POST https://api.zvid.io/api/render/api-key \
-H "x-api-key: your-api-key-here" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"name": "test",
"width": 1920,
"height": 1080,
"duration": 10,
"backgroundColor": "#000000",
"visuals": [
{
"type": "TEXT",
"text": "Hello, Zvid!",
"x": 960,
"y": 540,
"style": {
"fontSize": 72,
"color": "#ffffff",
"fontFamily": "Arial"
}
}
]
}
}'
Example queued response:
{
"jobId": "a88b7ad5-d0ed-48be-95df-b4ee41f3f07e",
"status": "queued",
"queuePosition": 2,
"creditsReserved": 15
}
Save jobId; it is the ID used by the jobs endpoint.
4. Check the Render Job
curl -X GET https://api.zvid.io/api/jobs/{id} \
-H "x-api-key: your-api-key-here"
Example Response: Processing
{
"id": "a88b7ad5-d0ed-48be-95df-b4ee41f3f07e",
"state": "active",
"progress": {
"phase": "rendering",
"percentage": 65,
"message": "Rendering frames..."
},
"result": null,
"failedReason": null,
"ts": {
"created": 1774290612835,
"updated": 1774290615000,
"finished": null
}
}
Example Response: Completed
{
"id": "a88b7ad5-d0ed-48be-95df-b4ee41f3f07e",
"state": "completed",
"progress": {
"phase": "uploading",
"percentage": 100,
"message": "Uploading to B2: 100%"
},
"result": {
"ok": true,
"renderDuration": 16,
"totalDuration": 17,
"finishedAt": "2026-03-23T18:30:29.888Z",
"url": "https://cdn.zvid.io/videos/121/test.mp4",
"thumbnailUrl": "https://cdn.zvid.io/images/121/test_thumbnail.jpg",
"size": 3848989,
"fileName": "test.mp4",
"duration": 10
},
"failedReason": null,
"ts": {
"created": 1774290612835,
"updated": 1774290612835,
"finished": 1774290629888
}
}
Example Response: Failed
{
"id": "a88b7ad5-d0ed-48be-95df-b4ee41f3f07e",
"state": "failed",
"progress": {
"phase": "rendering",
"percentage": 40,
"message": "Processing failed"
},
"result": null,
"failedReason": "Rendering failed due to invalid asset",
"ts": {
"created": 1774290612835,
"updated": 1774290617000,
"finished": 1774290617000
}
}
Response Fields
id: Render job ID.state: Job state, such aswaiting,active,completed, orfailed.progress: Current render/upload progress. It may be a number or an object withphase,percentage, andmessage.result: Final render output when completed.failedReason: Error message when the job fails.ts: Created, updated, and finished timestamps.
API Base URL
https://api.zvid.io/api
What's Next?
- Read the Authentication Guide.
- Follow the Getting Started Guide.
- Explore the JSON Structure Overview.
Need Help?
Contact help@zvid.io.