Skip to main content
The Analytics API returns aggregated statistics about authentication activity across your projects. Use it to build dashboards, monitor conversion health, and identify drop-off patterns in your auth funnel. All data is scoped to the authenticated developer’s account and can be filtered to a specific project or time window.

Endpoint

GET https://api.bondify.dev/api/v1/dev/analytics
This endpoint requires an Authorization header:
Authorization: Bearer <token>

Query parameters

days
number
default:"7"
The number of calendar days of history to include. Accepted values are 7, 30, and 90. Defaults to 7 if omitted.
project_id
string
Filter results to a single project. When omitted, the response aggregates data across all of your projects.

Example requests

curl "https://api.bondify.dev/api/v1/dev/analytics" \
  -H "Authorization: Bearer <token>"

Response

{
  "total_sessions": 1234,
  "confirmed_sessions": 980,
  "unique_users": 743,
  "conversion_rate": 79.4,
  "daily": [
    {
      "date": "2024-01-01",
      "sessions": 45,
      "confirmed": 38,
      "unique_users": 31
    }
  ],
  "funnel": {
    "requested": 1234,
    "confirmed": 980,
    "expired": 120,
    "cancelled": 134
  },
  "projects": [
    { "id": "proj_xxx", "name": "My App" }
  ]
}

Response fields

total_sessions
number
The total number of auth sessions initiated within the requested time window. Includes sessions in every status: pending, confirmed, expired, and cancelled.
confirmed_sessions
number
The number of sessions that reached confirmed status — that is, users who successfully authenticated via Telegram.
unique_users
number
The count of distinct Telegram IDs seen across all confirmed sessions in the window. A user who authenticates multiple times is counted once.
conversion_rate
number
The percentage of initiated sessions that were confirmed. Calculated as (confirmed_sessions / total_sessions) * 100, rounded to one decimal place.
daily
array
A per-day breakdown of activity. Each entry covers a single calendar day.
funnel
object
A breakdown of all sessions by terminal outcome across the full requested window.
projects
array
A list of the projects included in this response. Each item has an id and name. Useful when you query across all projects and need to map IDs back to names.

Interpreting the funnel

The funnel object maps directly to your auth drop-off story:
StageFieldWhat it tells you
Top of funnelrequestedHow many users started the auth flow
ConvertedconfirmedHow many completed it
Lost to inactivityexpiredUsers who opened Telegram but never acted
Lost to rejectioncancelledUsers who actively declined
A high expired count relative to requested often means users are not receiving or noticing the Telegram bot message. Check that your webhook_url is reachable and that your deeplink is being opened correctly on the user’s device.