Daily Breakdown
curl --request GET \
--url https://app.replyify.ai/api/analytics/daily \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.replyify.ai/api/analytics/daily"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.replyify.ai/api/analytics/daily', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.replyify.ai/api/analytics/daily",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.replyify.ai/api/analytics/daily"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.replyify.ai/api/analytics/daily")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.replyify.ai/api/analytics/daily")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyAnalytics
Daily Breakdown
Get day-by-day analytics for a date range
GET
/
api
/
analytics
/
daily
Daily Breakdown
curl --request GET \
--url https://app.replyify.ai/api/analytics/daily \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.replyify.ai/api/analytics/daily"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.replyify.ai/api/analytics/daily', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.replyify.ai/api/analytics/daily",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.replyify.ai/api/analytics/daily"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.replyify.ai/api/analytics/daily")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.replyify.ai/api/analytics/daily")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyReturns an array of objects — one per day in the requested range — with conversations, reply counts, speed-to-lead metrics, and category breakdowns.
Conversations are deduplicated by thread so each unique conversation is counted once. Speed metrics use all replies (not deduplicated).
Query Parameters
string
required
Start of date range in
YYYY-MM-DD formatstring
required
End of date range in
YYYY-MM-DD formatstring
Filter to a specific client UUID
Examples
curl -X GET "https://app.replyify.ai/api/analytics/daily?start_date=2025-03-01&end_date=2025-03-07" \
-H "Authorization: Bearer rpl_your_api_key"
const response = await fetch(
'https://app.replyify.ai/api/analytics/daily?start_date=2025-03-01&end_date=2025-03-07',
{
headers: {
'Authorization': 'Bearer rpl_your_api_key'
}
}
);
const data = await response.json();
import requests
response = requests.get(
'https://app.replyify.ai/api/analytics/daily',
params={'start_date': '2025-03-01', 'end_date': '2025-03-07'},
headers={'Authorization': 'Bearer rpl_your_api_key'}
)
data = response.json()
Response Example
{
"data": [
{
"date": "2025-03-01",
"total_replies": 24,
"conversations": 18,
"sent": 12,
"positive": 6,
"meetings_booked": 2,
"booking_rate": 33.33,
"avg_reply_speed_minutes": 4.52,
"avg_auto_reply_speed_minutes": 1.23,
"avg_manual_reply_speed_minutes": 14.87,
"category_breakdown": [
{ "category": "Interested", "slug": "interested", "count": 6 },
{ "category": "Not Interested", "slug": "not-interested", "count": 5 },
{ "category": "Out of Office", "slug": "ooo", "count": 4 },
{ "category": "Meeting Booked", "slug": "meeting-booked", "count": 2 },
{ "category": "Uncategorized", "slug": "uncategorized", "count": 1 }
]
},
{
"date": "2025-03-02",
"total_replies": 0,
"conversations": 0,
"sent": 0,
"positive": 0,
"meetings_booked": 0,
"booking_rate": 0,
"avg_reply_speed_minutes": null,
"avg_auto_reply_speed_minutes": null,
"avg_manual_reply_speed_minutes": null,
"category_breakdown": []
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
date | string | The date (YYYY-MM-DD) |
total_replies | number | Raw inbound reply count (not deduplicated) |
conversations | number | Unique conversations (deduplicated by thread) |
sent | number | Responses sent or handled |
positive | number | Interested / positive leads |
meetings_booked | number | Replies categorized as “meeting-booked” |
booking_rate | number | Percentage of positive replies that booked a meeting |
avg_reply_speed_minutes | number | null | Average time to reply (all replies) |
avg_auto_reply_speed_minutes | number | null | Average time for automated replies |
avg_manual_reply_speed_minutes | number | null | Average time for manual replies |
category_breakdown | array | Count per category for that day |
⌘I