Pricing
Refer to the following pages for current pricing information:
LiveKit Cloud pricing
Current pricing, limits, and quotas for LiveKit Cloud plans.
LiveKit Inference pricing
Current pricing for LiveKit Inference models.
Attempting to manipulate or circumvent billing through any means violates the LiveKit Terms of Service. If suspicious activity is detected, your account may be suspended or terminated.
Resource metering
All LiveKit Cloud pricing plans include usage-based pricing, metered by resource consumption. The following sections provide more information about how each specific type of resource is metered. For information on quotas and limits, see the Quotas and limits guide.
Each invididual resource usage is rounded up to the minimum increment prior to summation. For example, a connection lasting 10 seconds is billed as 1 connection minute, and one lasting 70 seconds is billed as 2 connection minutes.
Realtime media and data
LiveKit Cloud transport services, including WebRTC media, telephony, and Stream import, and Recording and export, are metered on a combination of time and data transfer. The following table shows the units and minimum increments for each resource.
| Resource type | Unit | Minimum increment |
|---|---|---|
| Time | Minute | 1 minute |
| Data transfer | GB | 0.01 GB |
Agent deployment
Agents deployed to LiveKit Cloud are metered by the agent session minute, in increments of 1 minute. This reflects the amount of time the agent is actively connected to a WebRTC or SIP-based session.
Metering starts after the agent connects to the room. Metering stops when either the room ends or the agent disconnects, whichever occurs first. If an agent receives a job but never connects to the room, no metering occurs.
To explicitly end a session and stop metering, call ctx.shutdown() in your entrypoint function:
async def entrypoint(ctx: JobContext):try:await ctx.connect()# ... agent logic ...except Exception as e:logger.error(f"Error: {e}")ctx.shutdown()
export default defineAgent({entry: async (ctx: JobContext) => {try {await ctx.connect();// ... agent logic ...} catch (e) {logger.error(`Error: ${e}`);ctx.shutdown();}},});
Agent observability
Agent observability is metered in two ways. First, by events, which include individual transcripts, observations, and logs. Second, by recorded audio, in increments of 1 minute.
The following table shows the units and minimum increments for each resource.
| Resource type | Unit | Minimum increment |
|---|---|---|
| Transcripts, observations, and logs | Event | 1 event |
| Recorded audio | Minute | 1 minute |
LiveKit Inference
LiveKit Inference usage is metered by tokens, time, or characters, depending on the specific resource, according to the following table.
| Model type | Unit | Minimum increment |
|---|---|---|
| STT | Seconds (connection time) | 1 second |
| LLM | Tokens (input and output) | 1 token |
| TTS | Characters (text) | 1 character |
LiveKit Phone Numbers
LiveKit Phone Numbers are metered by the minute of inbound call time, plus a small fixed monthly fee per number. The following table shows the units and minimum increments for each resource.
| Resource type | Unit | Minimum increment |
|---|---|---|
| Inbound call time | Minute | 1 minute |
| Number rental | Monthly rental | 1 number |
Invoices
LiveKit Cloud invoices are issued at the end of each month. The invoice total is based on resource consumption and the project's selected plan. No invoice is issued for projects with no amount due.
Downloading invoices
Past monthly invoices are available on the project's billing page for project admins. Click the View Invoices link in the Statements section to download the invoice.