Count the conversations of a period
Build a request to copy
This page never sends a request. Fill in the fields, then copy the request and run it from your server.
curl -X GET 'https://api.whatsable.app/v1/analytics/conversations?from=string&to=string&time_zone=string'
Counts the conversations and contacts that started from from to to, and how fast the team or the bot answered the customer first. The numbers are the ones the Analytics page of the dashboard shows.
A key on every number may leave out number_id and counts the whole organization. A key limited to some numbers must name one of them in number_id, otherwise 403 number_not_allowed_for_key.
bearerAuthAuthorizationBearer <nfy_live_<32 characters>>An API key from Settings > API keys, sent as Authorization: Bearer <key>.
from*stringThe first day, YYYY-MM-DD, in time_zone.
^\d{4}-\d{2}-\d{2}$to*stringThe last day, YYYY-MM-DD, in time_zone. At most 90 days after from, counting both.
^\d{4}-\d{2}-\d{2}$time_zone*stringThe IANA time zone the days are read in, such as America/Argentina/Buenos_Aires.
1 <= length <= 64number_id?stringOnly this number. A key limited to some numbers must name one of them; a key on every number may leave it out for the whole organization.
1 <= length <= 64The conversations of the period.
application/json- response
Conversation counts and response times for a period. The same numbers as the Conversations section of the dashboard's Analytics page.
object*stringfrom*stringThe first day, as requested.
to*stringThe last day, as requested.
time_zone*stringnumber_id*|The number counted, or null for every number of the organization.
granularity*|day up to 31 days, else week: buckets start on Monday, and the first one on from.
new_conversations*integerConversations that started in the period.
0 <= value <= 9007199254740991customer_started*integerOf those, the ones the customer wrote first in.
0 <= value <= 9007199254740991new_contacts*integerContacts added in the period.
0 <= value <= 9007199254740991unanswered*integerCustomer-started conversations nobody has answered yet.
0 <= value <= 9007199254740991first_response*Over the customer-started conversations. An away message or a keep-alive is not an answer.
first_responder*Who answered first: a person of the team, the AI bot, or anything else.
response_times*Customer-started conversations by time to the first answer.
series*array<>One entry per day or week, oldest first.
curl -X GET 'https://api.whatsable.app/v1/analytics/conversations?from=string&to=string&time_zone=string'{ "object": "conversation_analytics", "from": "2026-10-01", "to": "2026-10-02", "time_zone": "America/Argentina/Buenos_Aires", "number_id": null, "granularity": "day", "new_conversations": 30, "customer_started": 26, "new_contacts": 18, "unanswered": 2, "first_response": { "median_ms": 95000, "within_5m_rate": 0.625, "within_1h_rate": 0.9167 }, "first_responder": { "human": 10, "bot": 14, "other": 0 }, "response_times": { "under_1m": 8, "1m_to_5m": 7, "5m_to_15m": 4, "15m_to_1h": 3, "1h_to_24h": 2, "over_24h": 0, "unanswered": 2 }, "series": [ { "date": "2026-10-01", "new_conversations": 16 }, { "date": "2026-10-02", "new_conversations": 14 } ]}Count the template sends of a period GET
Counts the messages sent with each template from `from` to `to`: sent, delivered, read and failed, with the read rate. The numbers are the ones the Analytics page of the dashboard shows.
Count what the AI bots did in a period GET
Counts what the AI bots did from `from` to `to`: their turns, handoffs to a person, reply times, the labels they applied and their follow-ups. The numbers are the ones the Analytics page of the dashboard shows.