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.
- Tele records every participant's join and leave time.
- Billable time is the time during which at least
min_participantspeople (default 1) were connected. Gaps when nobody is in the room aren't billed. - Billable time is rounded up to the next whole minute (
ceil_minute, the default) or kept per second (per_second). - 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" }
]
}]
}
statusisopenwhile the call is running, thenclosed, thenbilled.ipanduser_agentbecomenullafter 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.