Skip to main content

Credits, Plans & Limits

Every render costs credits, drawn from your subscription allowance plus any one-time credit packs. Plans also set limits — maximum duration, resolution, element counts — that are enforced at submit time.

What a render costs

OutputCost
Video up to Full HD (≤ 1920×1080)1 credit per second of output, rounded up
Video above Full HD (up to 4K)4 credits per second, rounded up
Image1 credit per 10 images, rounded up (a single image render = 1 credit)

Resolution presets resolve to their pixel dimensions before pricing — a tiktok (1080×1920) video is Full HD-priced.

Credits are reserved when a job is queued (creditsReserved in the submit response) and refunded automatically if the render fails or is cancelled. Estimate before submitting with POST /api/credits/estimate.

Credit pools

Your balance has two pools, spent in this order:

  1. Subscription credits — replenished every billing cycle.
  2. Add-on credits — one-time credit packs that never expire with the cycle.
curl -X GET https://api.zvid.io/api/credits/balance \
-H "x-api-key: YOUR_API_KEY"
{
"balance": 1164,
"subscriptionCredits": 1064,
"addonCredits": { "balance": 100, "totalEarned": 200, "totalSpent": 100 }
}

GET /api/credits/transactions returns the ledger and GET /api/credits/usage-stats aggregates usage over 24 h / 7 d / 30 d — both are also visualized on the dashboard's Credits page.

Plan limits

Limits scale with your plan. The enforced dimensions:

LimitMeaning
maxDurationOutput length in seconds
maxOutputResolutionOutput width/height in pixels
maxVisualElementsTotal visual elements per project
maxImagesCount / maxVideosCount / maxGifsCountPer-type element counts
maxAudioElementsAudio tracks
maxCaptionElementsSubtitle cues
maxScenesScenes after iterate expansion
maxIterateItemsItems per iterated scene
maxTemplatesStored templates
maxBulkItemsItems per bulk render
maxWebhooksRegistered webhooks (Free: 1)

You never have to guess your numbers: every limit violation returns them. A 400 validation error includes a planLimits object with your plan's active values:

{
"error": "Validation failed",
"details": [
{
"field": "payload.duration",
"message": "Duration cannot exceed 1800 seconds (30 minutes) based on your Startup plan"
}
],
"planLimits": {
"planName": "Startup",
"maxDuration": 1800,
"maxOutputResolution": 3820,
"maxScenes": 150,
"…": "…"
}
}

Current plans and pricing live at zvid.io/pricing; manage your subscription and buy credit packs from the dashboard.