Render Minutes & Billing
ViralSync measures your rendering consumption in render minutes — the total duration of video you produce each month. This page explains exactly how render minutes are counted, what the limits are per plan, and what happens when you approach or exceed them.
What is a render minute?
One render minute equals one minute of output video duration.
A job that produces a 90-second video consumes 1.5 render minutes.
A job that produces a 6-second video consumes 0.1 render minutes (6 ÷ 60).
Render minutes are measured by the actual output video duration returned in mediaData.duration when the job completes.
What counts towards your limit
| Scenario | Render minutes consumed |
|---|---|
Job completes successfully (status: "done") | mediaData.duration ÷ 60 |
| Job fails before any output is produced | 0 |
| Job is cancelled before completion | 0 |
| Job produces partial output then fails | 0 (no charge for incomplete renders) |
What does NOT count
- Polling or streaming the progress endpoint
- Failed asset downloads (job fails, no charge)
- Jobs queued but never started
- Dashboard previews and editor playback
Monthly limits by plan
| Plan | Price | Render Minutes / Month | Daily Soft Cap | Max Job Duration | Max Resolution |
|---|---|---|---|---|---|
| Free | $0 | 30 min | 5 min / day | 10 min | 720p (1280 × 720) |
| Pro | $29 / mo | 200 min | None | 10 min | 1080p (1920 × 1080) |
| Business | $99 / mo | 600 min | None | 20 min | 1440p (2560 × 1440) |
| Enterprise | $299 / mo | Unlimited | None | 120 min | 4K (3840 × 2160) |
For the full feature comparison including concurrent jobs, storage, and API access, see Plans & Limits.
Monthly reset
Your render minute counter resets on the 1st of each calendar month at 00:00 UTC.
If you sign up mid-month, you receive the full monthly allocation immediately (not prorated).
Free plan: daily soft cap
Free-plan accounts have an additional 5 render minutes per day cap, independent of the monthly limit. This prevents automated abuse while still giving developers meaningful testing bandwidth.
Example: A Free-plan user has consumed 12 of their 30 monthly render minutes. They can still render up to 5 minutes today. Tomorrow the daily counter resets to 5 minutes regardless of total monthly consumption.
When you hit the daily cap, new render jobs are rejected with:
{
"error": "Daily render quota exceeded. Your limit resets at midnight UTC.",
"code": "RENDER_QUOTA_DAILY_EXCEEDED"
}
Checking your current usage
curl -s \
-H "x-api-key: $VIRALSYNC_API_KEY" \
https://api.viralsync.io/v1/usage
Response:
{
"plan": "pro",
"renderMinutesUsed": 47.3,
"renderMinutesLimit": 200,
"renderMinutesResetAt": "2026-05-01T00:00:00.000Z",
"dailyRenderMinutesUsed": null,
"dailyRenderMinutesLimit": null,
"concurrentJobsLimit": 3,
"concurrentJobsRunning": 1
}
For Free-plan accounts, dailyRenderMinutesUsed and dailyRenderMinutesLimit will be populated (e.g. 2.1 and 5).
What happens when you hit the monthly limit
Free plan — jobs are hard-blocked immediately. New render job submissions return:
{
"error": "Monthly render quota exceeded. Upgrade your plan or wait until the 1st of next month.",
"code": "RENDER_QUOTA_EXCEEDED"
}
Pro / Business plans — render jobs continue to be accepted. Render minutes consumed beyond your monthly allocation are billed as overages at $0.05 per render minute, charged automatically at the end of your billing cycle.
Enterprise — unlimited render minutes included. Overages do not apply.
Overage protection (Pro / Business)
To prevent unexpected overage charges, you can set an overage budget cap in Dashboard → Billing → Overage Limit. Once your overage spend would exceed this cap in a given month, new jobs are blocked.
If you regularly hit your monthly limit, upgrading is more cost-effective than paying overage fees. Pro → Business doubles your allowance (200 → 600 min) at 3.4× the price — only $0.165/min vs $0.05/min overage.
Render minutes vs. other limits
Render minutes are one of three independent resource limits — all three must be satisfied for a job to be accepted:
| Limit type | Description | Error code |
|---|---|---|
| Render minutes | Monthly output duration | RENDER_QUOTA_EXCEEDED |
| Concurrent jobs | Jobs running simultaneously | CONCURRENCY_LIMIT_EXCEEDED |
| Daily cap | Free-plan only: per-day output | RENDER_QUOTA_DAILY_EXCEEDED |
A job that passes the render minute check but exceeds the concurrent job limit will be rejected with CONCURRENCY_LIMIT_EXCEEDED. You can retry once an existing job completes.
Frequently asked questions
Does a 4K render consume more minutes than a 1080p render?
No. Render minutes measure output duration, not compute intensity. A 60-second 4K video and a 60-second 720p video both consume 1.0 render minute. Resolution affects render speed, not the quota consumed.
Does the quality preset (stable, fast, turbo) affect render minutes?
No. Quality preset controls how many scene workers run in parallel, affecting render speed — not the quota consumed.
If I have multiple scenes in one job, do they each count separately?
No. The total video duration is what counts, regardless of scene count. A 5-scene movie with 10 seconds per scene produces a 50-second output = 0.83 render minutes.
What if my job times out (30-minute hard timeout)?
A timed-out job counts as failed. No render minutes are consumed.
Can I see a breakdown of render minutes per job?
Yes — each completed job response includes mediaData.duration (the output duration in seconds). You can track per-job consumption by recording mediaData.duration ÷ 60 for each job in your system.