Skip to main content
GET
/
v1
/
analytics
/
message-count
Get Message Counts
curl --request GET \
  --url https://api.example.com/v1/analytics/message-count
{
  "success": true,
  "message_count": {
    "sms": {
      "outbound": {
        "messages": 123,
        "segments": 123
      },
      "inbound": {
        "messages": 123,
        "segments": 123
      },
      "total_messages": 123,
      "total_segments": 123
    },
    "mms": {},
    "voice": {
      "regular_calls": 123,
      "regular_seconds": 123,
      "kb_calls": 123,
      "kb_seconds": 123,
      "total_calls": 123,
      "total_seconds": 123
    },
    "tenant_id": "<string>",
    "organization_id": "<string>",
    "user_id": "<string>",
    "period": "<string>"
  }
}

Endpoint

GET /v1/analytics/message-count

Authentication

Requires X-API-Key header with your API key.

Query Parameters

tenant_id
string
Tenant ID to get message counts for. One of tenant_id, organization_id, or user_id is required.
organization_id
string
Organization unique ID to get message counts for. One of tenant_id, organization_id, or user_id is required.
user_id
string
User unique ID to get message counts for. One of tenant_id, organization_id, or user_id is required.
start_date
string
Optional. Start date for filtering (ISO 8601 format, e.g., 2026-02-10T00:00:00Z).
end_date
string
Optional. End date for filtering (ISO 8601 format, e.g., 2026-03-12T23:59:59Z).

Response

success
boolean
Whether the request was successful
message_count
object
Message count metrics object

Example Requests

curl "https://partner.teli.ai/api/proxy/v1/analytics/message-count?organization_id=1767623610019x414651971228139500" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response

{
  "success": true,
  "message_count": {
    "organization_id": "1767623610019x414651971228139500",
    "sms": {
      "outbound": {
        "messages": 1234,
        "segments": 5678
      },
      "inbound": {
        "messages": 567,
        "segments": 890
      },
      "total_messages": 1801,
      "total_segments": 6568
    },
    "mms": {
      "outbound": {
        "messages": 89,
        "segments": 267
      },
      "inbound": {
        "messages": 12,
        "segments": 36
      },
      "total_messages": 101,
      "total_segments": 303
    },
    "voice": {
      "regular_calls": 45,
      "regular_seconds": 3456,
      "kb_calls": 12,
      "kb_seconds": 890,
      "total_calls": 57,
      "total_seconds": 4346
    },
    "period": "all_time"
  },
  "powered_by": "Teli"
}

Difference from /usage Endpoint

EndpointData SourceSpeedUse Case
/analytics/usageSupabase countersFastQuick overview of total segments/seconds
/analytics/message-countUsage logs (queries all records)SlowerDetailed breakdown of actual message/call counts
Key difference:
  • /usage shows segments (what you’re billed on)
  • /message-count shows messages (how many actual messages were sent)
Example: A 200-character SMS counts as:
  • 2 segments (in /usage)
  • 1 message (in /message-count)

Notes

  • Counts are based on usage_logs table entries (one row per message/call)
  • SMS/MMS: Each log entry = 1 message, quantity field = segments
  • Voice: Each log entry = 1 call, quantity field = duration in seconds
  • This endpoint may be slower for high-volume accounts (queries all usage logs)
  • For real-time counters, use /analytics/usage instead