Skip to content

Usage & billing

How a call is billed

Tele bills room-minutes: the time a call's room is in use. Participant count doesn't multiply the price.

  1. Tele records every participant's join and leave time.
  2. Billable time is the time during which at least min_participants people (default 1) were connected. Gaps when nobody is in the room aren't billed.
  3. Billable time is rounded up to the next whole minute (ceil_minute, the default) or kept per second (per_second).
  4. The result is multiplied by the rate's price per minute. The default is 1 BDT.
Call Billable Default charge
Host alone for 3 min, then a 10:05 call with 3 people 13:05 → 14 min 14 BDT
2 people for exactly 10:00 10 min 10 BDT
Room opened, nobody connected 0 0 BDT
One person drops for 2 min, the other stays Counted (one person is still in) –

Charges are recorded when a room session closes, usually about 30 seconds after the last person leaves. They're attributed to your consumer, the host's team at the time the call was created, and the host.

Recording minutes

Recorded calls also log recording minutes. Their price is currently 0 BDT, so they show up in reports but cost nothing.

Call records

GET /v1/calls/{id}/sessions (host or service token) returns the full record:

{
  "sessions": [{
    "id": "01a131e4-…",
    "status": "billed",
    "started_at": "2026-10-13T09:00:00Z",
    "ended_at": "2026-10-13T09:10:05Z",
    "duration_seconds": 605,
    "billable_seconds": 605,
    "billable_minutes": "11.0000",
    "amount": "11.0000",
    "currency": "BDT",
    "peak_participants": 2,
    "unique_participants": 2,
    "participants": [
      { "user_id": "alice", "name": "Alice", "joined_at": "2026-10-13T09:00:00Z", "left_at": "2026-10-13T09:10:05Z",
        "duration_seconds": 605, "ip": "198.51.100.1", "user_agent": "Mozilla/5.0 …", "platform": "web",
        "disconnect_reason": "CLIENT_INITIATED" },
      { "user_id": "bob", "name": "Bob", "joined_at": "2026-10-13T09:01:00Z", "left_at": "2026-10-13T09:05:00Z",
        "duration_seconds": 240, "ip": "198.51.100.2", "platform": "flutter" }
    ]
  }]
}
  • status is open while the call is running, then closed, then billed.
  • ip and user_agent become null after 30 days.
  • Monetary values are decimal strings with 4 decimal places, so no precision is lost to floating point.

Usage reports

GET /v1/usage with a service token returns totals for your consumer:

Query Default Values
from, to start of this month → now YYYY-MM-DD or RFC 3339; to is exclusive
group_by team client, team, user (the host), call, month
team every team one team's external_ref (the team claim your tokens carry), for example to show one customer their own bill
format JSON csv (or send Accept: text/csv)
curl "$TELE_API/v1/usage?from=2026-10-01&to=2026-11-01&group_by=team" -H "Authorization: Bearer $SERVICE_TOKEN"
{
  "from": "2026-10-01T00:00:00Z", "to": "2026-11-01T00:00:00Z", "group_by": "team",
  "rows": [
    { "group": { "api_key": "TK3f9…", "team": "sales" }, "sessions": 42, "room_seconds": 51310,
      "room_minutes": "877.0000", "recording_minutes": "0.0000", "adjustments": "0.0000",
      "amount": "877.0000", "currency": "BDT" }
  ]
}

Usage is filtered by when each session started. Monthly grouping (group_by=month) follows the Asia/Dhaka calendar.

Rates

The Tele team manages rates. A rate can apply:

  • organisation-wide (the default: 1 BDT/min, ceil),
  • to one consumer,
  • to one team within a consumer.

The most specific rate in effect when a call started is the one that applies. Rate changes are never applied retroactively; past charges keep the rate they were billed with.

Setting Meaning
room_minute_price Price per room-minute
recording_minute_price Price per recording minute (currently 0)
rounding ceil_minute or per_second
min_participants People needed for the room to count as in use (1 = a host waiting alone is billed)
min_billable_minutes Minimum charge per call that actually took place

To request a team or consumer-specific rate, contact the Tele team.