nimeet Docs
中文

Billing Model and Unit Prices

Per-minute billing dimensions (audio/video, recording, streaming, transcoding), unit prices, metering and free quota.

Version v1.1.0 · Updated 2026-10-26 · revision 1

ni-meet bills per minute (not per peak, not per seat): every kind of usage produces a UsageEvent, minutes are accumulated, and the total is multiplied by the unit price.

Billing dimensions

TypeWhat is meteredDefault unit price (USD / 1000 minutes)Free tier (minutes)
audioaudio call duration0.9910,000
videovideo call duration3.9910,000
recordingcloud recording duration7.990
streamingstreaming (Media Push) duration2.990
transcodingcloud transcoding duration4.990

The formula (identical to the implementation):

text
amount(type) = max(0, minutes(type) - freeMinutes(type)) / 1000 * unitPricePerThousandMinutes(type)
billAmount   = Σ amount(type)        // free minutes are deducted per type, not shared

Free tiers are deducted per type: the 10,000 audio minutes and the 10,000 video minutes are two separate allowances, not one shared 10,000.

Where a minute comes from

EventWhen it is recorded
Participant joins → leavesaccumulated from the participant's online time in that channel (UsageEvent.minutes)
Recording job running → stoppedfrom the job's runtime
Streaming converter running → stoppedfrom the streaming duration
Transcoding job running → destroyedfrom the job's runtime

Details of the model:

  • minutes are floating point, rounded to 2 decimals when the total is aggregated (round(minutes, 2));
  • the same person joining and leaving the same channel repeatedly accumulates; it is not merged into "one person";
  • an empty channel (the grace period after the last participant leaves) produces no audio minutes;
  • recording/streaming/transcoding bill even with no viewers — they run on separate nodes.

Querying billing data

bash
curl -s "$NIMEET_API_BASE/v1/analytics/usage?from=2026-10-01T00:00:00Z&to=2026-10-31T23:59:59Z&granularity=day" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

It returns buckets[] (minutes/channels/users per time bucket) and totals (minutes, peakChannels, amount, currency). granularity accepts hour / day / month. Field-level documentation is in the Crystal Ball API.

Billing differences from Agora (the most common migration question)

DimensionAgorani-meet
Billing unitminutes (tiered by resolution)minutes (two types, audio/video, no resolution tiers)
Free tier10,000 minutes per month (promotional)configured per type, same defaults as above
Bill granularityday/monthhour / day / month queries
Settlementprepaid packages + postpaidup to your deployment; we only provide usage and amount computation

Four cost-control levers

  1. Resolution: video bills per minute, so lowering the resolution does not lower the minute count, but it does reduce bandwidth and transcoding cost;
  2. Recording mode: composite (mixed) is cheaper than individual (per-stream) — one job records everyone;
  3. Number of streaming targets: one egress job per converter, so multiple targets mean multiple streaming costs;
  4. Idle reclamation: set idleTimeout low so jobs do not keep running after everyone has left.

End-to-end example

Call GET /v1/analytics/usage for usage and GET /v1/analytics/calls for the call list and call details; the amount in the response is computed from the unit prices on this page and the usage. Field definitions are in Analytics.

Generated by the documentation build pipeline · 2026-10-31 01:24:02 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.