livqenoDocs

ConceptsUsage

Usage

Your three free allowances (RTC minutes, chat messages, live-streaming host-hours), how each is counted, and what happens when one runs out.

Usage is how much of Livqeno your account has used: call minutes, chat messages, and live-streaming time. On the Free plan, usage is counted against fixed free allowances; on a paid plan the same amounts are included every month and usage past them is billed. Read this page before you launch, so you can estimate whether your app fits, and so your app handles the "allowance used up" error well.

You don't report usage yourself. Livqeno counts it on its own servers every time someone joins a call, sends a message, or hosts a stream.

Every Livqeno account gets three separate free allowances:

ProductIncludedUnit
RTC10,000participant-minutes/account
Chat100,000messages/account
Live Streaming100host-hours/account
  • Each one is counted on its own. Using up chat doesn't touch your RTC minutes, and the other way around.
  • See all three in the dashboard under Usage.

RTC: participant-minutes

One participant-minute = one person in one room for one minute.

CallMinutes used
2 people for 10 minutes20
3 people for 10 minutes30

Planning example: a telehealth app with 30-minute, two-person visits uses 2 × 30 = 60 participant-minutes per visit. 10,000 minutes covers about 166 visits.

  • If someone drops and rejoins, each session counts only for the time they were connected.
  • Live streaming hosts and viewers don't count here. Live streaming has its own allowance (below).

Chat: messages

One message = one message, counted once when the server saves it. Not once per person who receives it. A message to 100 members still counts as 1.

User A sends "hello"  → 1 chat message
User B sends "hi"     → 1 chat message
Total                 → 2 chat messages

These don't count: typing indicators, presence, read and delivery receipts, and reactions. Only sent messages count.

Retries never count twice. The SDK adds a clientMessageId to every message. A retried send returns the original message and uses nothing new, even an hour later on another connection. See Chat messages.

Live Streaming: host-hours

Live streaming has its own 100 host-hours. Only the time a host or co-host is actually connected counts, not how long the stream lasts.

Stream starts: 10:00
Host leaves:   10:37
→ 37 minutes of host-hours consumed
 
Host reconnects:
10:00 → 10:20 = 20 min
10:25 → 10:40 = 15 min
→ 35 minutes consumed — the 5-minute gap is excluded
  • Two co-hosts streaming for an hour each = 2 host-hours.
  • Viewers never use anything. Not host-hours, not RTC minutes. 100 viewers or none, the cost is the same.
100 viewers watching for 1 hour
does NOT consume 100 × 60 minutes of anything.
The host's connected time is the only thing metered.

Stream limits (separate from the allowance)

Free-plan accounts can also own up to 3 active projects. Creating a fourth fails with 403 RAVEN_PROJECT_LIMIT_EXCEEDED. Archiving or deleting a project frees a slot, projects you already have are never removed, and paid plans have no project limit.

Every stream also has these limits:

LimitDefaultWhat happens
Live streams at once1One LIVE stream per account, across all your projects and environments. A second fails with 403 RAVEN_STREAM_CONCURRENCY_LIMIT_EXCEEDED until the first ends.
Viewers per stream100The 101st viewer token fails with 403 RAVEN_STREAM_VIEWER_LIMIT_EXCEEDED.
Stream length4 hoursA stream still LIVE after 240 minutes is ended automatically.

Hitting one of these means "not right now". It does not mean your allowance is used up.

How RTC and live-streaming time is measured

Livqeno's servers measure the time with their own clock:

  1. The meter starts when Livqeno accepts the join: the token is checked, a media server is assigned, and it confirms the participant. Livqeno also decides then whether it counts as RTC, host-hours, or nothing (viewers), using its own data, never what the app claims.
  2. It's updated regularly during the call, and again when the person leaves.
  3. If a server crashes, the session is counted only up to the last moment it was confirmed alive. You aren't charged for a Livqeno outage.

Your app can't change its own usage. The SDK never reports usage, and no request contains a duration or message count.

Usage won't exactly match connection times. Connection records come from best-effort app telemetry and are for debugging. When they differ, the usage figure is the correct one.

Whose allowance is used

Always the project owner's, for all three products.

If you're added to someone else's project, your work there uses their allowance, not yours. The project's usage page tells you when you're viewing a project you don't own.

Reading your usage

Use the dashboard, or call the API with a dashboard session:

Terminal
curl https://api.livqeno.com/v1/usage \
  -H "Authorization: Bearer $SESSION_JWT"
{
  "includedMinutes": 10000,
  "usedMinutes": 4812,
  "remainingMinutes": 5188,
  "usedPercent": 48.1,
  "exhausted": false,
  "exhaustedAt": null,
  "enforced": true,
  "source": "FREE_TIER",
  "grantedAt": "2026-02-14T09:12:04.881Z",
  "usedSeconds": 288721,
  "liveSessions": 2,
  "chat": {
    "used": 43200,
    "limit": 100000,
    "unit": "messages"
  },
  "liveStreaming": {
    "hostHoursUsed": 37,
    "hostHoursLimit": 100,
    "concurrentStreams": 1,
    "maxConcurrentStreams": 1,
    "maxViewers": 100,
    "maxStreamDurationMinutes": 240
  }
}
  • RTC numbers are at the top level (includedMinutes and so on). Older code that reads them still works.
  • Chat and Live Streaming are in the chat and liveStreaming fields.

Other endpoints:

EndpointWhat it adds
GET /v1/usage/detailRTC session history, a daily summary, and a per-project breakdown. Chat and Live Streaming get totals only, no history yet. History is paged: pass limit (1–200, default 50) and offset, and read the total from historyPage.total.
GET /v1/projects/{projectId}/usageRTC numbers for one project. chat and liveStreaming stay account-wide.

See the Observability API reference.

When an allowance runs out

Each allowance is enforced on its own. Running out of one never affects the others.

Runs outWhat's refused
RTCNew RTC tokens (POST /v1/rooms/{roomId}/rtc-tokens returns 403 RAVEN_USAGE_LIMIT_EXCEEDED) and new room joins (signaling error frame, USAGE_LIMIT_EXCEEDED).
ChatNew messages, when sent. Same code and status.
Live StreamingAdding a new host or co-host. Same code and status. Viewers aren't affected.

What keeps working:

  • Anything already running. A live call is never cut off. A message already accepted isn't rejected later. So your total can end up a little over the limit.
  • Everything else: projects, API keys, the parts of Chat and Live Streaming that didn't run out, webhooks, observability, and the dashboard.

So treat it as a final error. Don't retry:

try {
  const grant = await livqeno.tokens.create({ room: roomId, identity: 'alice' });
} catch (err) {
  if (err.code === 'RAVEN_USAGE_LIMIT_EXCEEDED') {
    // Retrying will not help — nothing frees up over time.
    // The allowance figures ride on the error, so no second request is needed.
    return showOutOfAllowance(err.details.product, err.details.remaining);
  }
  throw err;
}

The error includes product, unit, included, used, and remaining. The RTC error also includes the older includedMinutes, usedMinutes, and remainingMinutes, so older code keeps working.

Don't mix these up:

ErrorMeaning
RAVEN_USAGE_LIMIT_EXCEEDEDYou're out of allowance. Final.
RAVEN_STREAM_CONCURRENCY_LIMIT_EXCEEDEDToo many live streams right now. Try after one ends.
RAVEN_STREAM_VIEWER_LIMIT_EXCEEDEDThis stream is full of viewers.
RAVEN_BILLING_SPEND_CAP_REACHEDPaid plan: this month reached the spend cap you set. Raise or clear it in Billing.
RAVEN_BILLING_ACCOUNT_SUSPENDEDPaid plan: an invoice is unpaid past its grace period. Pay it in Billing.

All allowances and limits are set by Livqeno. There's nothing to configure in your project.

Pick a plan in the dashboard under Billing, or compare them on the pricing page. On a paid plan:

  • The free amounts above are included every month, and usage past them is billed per 1,000 minutes or messages instead of being refused.
  • The live-streaming free-tier caps (one live stream at a time, 100 viewers, 4 hours per stream) don't apply to streams started on the plan.
  • You can set a monthly spend cap. New sessions are refused with RAVEN_BILLING_SPEND_CAP_REACHED once the month's total reaches it. Calls already in progress are never cut off.

Prices

Per 1,000 units. INR prices are before 18% GST.

UsageUSDINRIncluded each month
RTC minutes, up to 720p received$2.49₹19910,000 RTC minutes, shared by all three RTC rates
RTC minutes, audio-only$0.79₹49(same pool)
RTC minutes, Full HD received$5.99₹479(same pool)
Live host minutes$2.49₹1996,000
Live viewer minutes$0.99₹7910,000
Chat messages$0.10₹8100,000
HLS / restream encode minutes$15₹1,20060
Recording minutes$9₹72060

How minutes are counted:

  • RTC minutes: every participant's time in a call. A minute is audio-only when nobody else in the room is sending video, and Full HD when the video that participant receives adds up to more than 1280×720. The included minutes go to the most expensive rate first.
  • Viewer minutes: real-time viewers are counted once a minute, on the origin room and its edges. HLS viewers are counted from the SDK player's heartbeat, every 30 seconds while the video is playing. Use the SDK players, or forward playback.beacon from the credential to your own player.
  • Host, encode and recording minutes: measured exactly, as before.
PlanMonthly feeWhat you get
Pay as you gononeUsage only
Startup$49 / ₹2,999The fee comes back as usage credit
Growth$499 / ₹39,999The fee comes back as usage credit, and 15% off all usage
Enterpriseby contractContact us

USD accounts pay by card (Stripe). INR accounts get a payable invoice link each month (Razorpay: UPI, cards, netbanking). Invoices are monthly, and the dashboard shows this month's running estimate, rated exactly as the invoice will be.