The only live video API that shows what it costs.Before you ship, not after.
Go beyond video calls you cannot price. Build rooms, roles, recordings and live streams on one API and one console, and see exactly what every participant spends before a single one joins. Precisely budgeted, endlessly configurable.
Running on Velo
Behaviour under load
Most calls do not fail cleanly.They get worse first.
A weak connection costs a participant resolution before it costs them the room, and Velo reports what that is doing to their data in the units they pay in.
- connectedreconnectingresumed, same identity
Reconnects into the same room
A connection that drops resumes into the room it left. The participant keeps their identity and their published tracks instead of arriving as somebody new.
- fhq
Sheds video before it sheds the call
Simulcast layers step down as the uplink weakens, so a bad connection costs a participant resolution rather than the room.
- 12.4 MBabout 1,488 UGX410 kbps down
Reports what the call is costing
DataUsageMonitor reads the live transport counters and prices them while the call runs, so you can warn somebody before their bundle goes rather than after.
- suggestAudioOnly(snapshot)truesetAudioOnly(room, true)
Drops to audio on your terms
suggestAudioOnly reads the same snapshot and tells you when video has stopped being worth its bandwidth. Your interface decides what to do about it.
- VeloPermissionErrorremove_others402 VeloQuotaError
Errors you can act on
A plan limit arrives as VeloQuotaError and a refused moderation call names the permission it needed, so a button can disable itself without anyone parsing a message.
Use cases
Build the room your product needs,not the one a meeting app gave you.
Pick a use case in the console and Velo writes the template, the roles and the budgets that go with it. Change any of it afterwards.
Video calls
Two people or twenty, camera and mic, with every role decided before anyone joins.
Virtual classrooms
One teacher publishing, a room full of learners subscribing, and no learner able to flip that around.
Telehealth
A consult that records for the file, with the patient's connection budgeted so they stay on it.
Live streaming
Go live from a browser, or push a room out to RTMP without standing up an encoder.
Webinars
A handful of speakers, an audience that listens, and a stage you can promote people onto.
Support desks
A short call from inside your product, opened with a room code instead of an install.
Pricing
See the bill before your users do.Simple, predictable, in shillings.
An included block of participant minutes every month, a published rate past it, and caps that are enforced rather than suggested. No resolution-based surprises.
Free
Ship something real before you pay anything
Free
Free every month:
- Participant minutes
- Counted join to leave
- Rooms at once
- Concurrent open rooms
- People per room
- Enforced in the token
- Each further minute
- Not sold past the block
- Recording
- Room and track recording
- Live streaming
- RTMP out, RTMP and WHIP in
- Webhooks
- Every delivery attempt kept
1,000
Per month
2
5
—
From Starter
From Starter
Included
Starter
For products with users on them
UGX 150,000per month
Included, then metered:
- Participant minutes
- Counted join to leave
- Rooms at once
- Concurrent open rooms
- People per room
- Enforced in the token
- Each further minute
- After the included block
- Recording
- Room and track recording
- Live streaming
- RTMP out, RTMP and WHIP in
- Webhooks
- Every delivery attempt kept
20,000
Per month
20
50
UGX 8
Per participant
Included
Included
Included
Pro
For scale and higher usage
UGX 1,200,000per month
Included, then metered:
- Participant minutes
- Counted join to leave
- Rooms at once
- Concurrent open rooms
- People per room
- Enforced in the token
- Each further minute
- After the included block
- Recording
- Room and track recording
- Live streaming
- RTMP out, RTMP and WHIP in
- Webhooks
- Every delivery attempt kept
200,000
Per month
200
200
UGX 6
Per participant
Included
Included
Included
Enterprise
For scale, custom limits and terms
Custom
Agreed with you:
- Participant minutes
- Counted join to leave
- Rooms at once
- Concurrent open rooms
- People per room
- Enforced in the token
- Price
- Agreed before you sign
- Recording
- Room and track recording
- Live streaming
- RTMP out, RTMP and WHIP in
- Webhooks
- Every delivery attempt kept
As needed
Per month
As needed
As needed
Agreed
Charged monthly
Included
Included
Included
Estimate
Calculate Your Pricing
Estimate the price for your use-case with a detailed breakdown.
Start from a use case
Configure a month
Velo meters one thing: a participant, in a room, for a minute. Everything below feeds that number.
Enforced in the token, not suggested
Counted join to leave, per participant
How many times that room happens
Not metered, and not part of Free.
Room and track recording. Not metered, and not part of Free.
Monthly estimate
- Participant minutes
- 24,000
- Starter plan
- UGX 150,000
- Minutes past the block
- UGX 32,000
- Recording
- Included
- Live streaming
- Off
- Chat and reactions
- Included
2 in a room, 30 minutes a session, 400 sessions a month
2 × 30 × 400
20,000 participant minutes included every month
= 150,000
4,000 minutes at 8 UGX each
4,000 × 8
Room and track recording, not metered
= 0
Off for this estimate
= 0
On the room's own data channel, in every SDK
= 0
Estimated monthly cost
UGX 182,000
Starter because of recording, 24,000 participant minutes.
The same total at SD or HD. Velo does not price by resolution.
Capabilities
Everything a live call needs,and nothing you have to bolt on later.
Rooms, roles, recording, streaming in and out, and the webhooks that tell your backend what happened. All of it on the same key.
- Rooms
- Templates and roles
- Room codes
- Token minting
- Recording
- RTMP out
- RTMP and WHIP ingest
- Webhooks
- Session history
- Usage and billing
Quality
Create calls people stay on.
A weak connection should cost you a layer, not a participant. Camera goes out in simulcast layers and every role carries a subscribe ceiling, so a struggling network steps down instead of dropping out, then climbs back when it recovers.
Start
Start building real-time video.Free while you are finding out whether it works.
Sign in with Google, pick a use case, and the console writes the project, the template and its roles. Mint a token and join the call in the same tab.
Questions
Frequently asked questions.
What is metered, what happens when you run past it, and what your users pay on their side.
Participant minutes. One person, in one room, for one minute. Two people on a ten minute call is twenty participant minutes; ten people on the same call is one hundred. Recording, streaming in and out, templates, roles, webhooks and API keys are not metered, though recording and streaming need Starter or above.
Yes, and there is no card to add. Free gives you 1,000 participant minutes a month, two rooms at once and five people in a room. Recording and live streaming are not part of it: starting a recording, a broadcast or an ingress needs Starter or above. Past the block nothing is billed, because nothing past it is sold: new rooms and new tokens are refused until the month turns over.
Minutes past the block are billed at your plan's published rate, 8 UGX a minute on Starter and 6 on Pro. A quota check then refuses new rooms, tokens, recordings and broadcasts, so the bill cannot run away while you are asleep. Calls already connected keep running.
Their network operator bills them for the megabytes the call moves, and on local data prices that is usually the number that decides whether they stay on it. That is why every role carries what it spends and what ten minutes of it costs a participant.
A role fixes what one person may publish, what they may subscribe to, and how far quality may drop before it recovers. It is minted into the token, so the client never negotiates it. Nobody can spend more than the role you gave them.
Mobile money. You add credit to a project, usage draws it down, and the plan is charged from the same balance when you switch and again each month. Credit never expires and is never charged automatically.
A REST API, plus SDKs for the browser, React Native, iOS, Android, Flutter, Go and Python. Mint a token on your server, hand it to the client, and join.