Analytics Day Conversations
curl --request GET \
--url https://app.tuco.ai/api/analytics/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tuco.ai/api/analytics/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tuco.ai/api/analytics/conversations', 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.tuco.ai/api/analytics/conversations",
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.tuco.ai/api/analytics/conversations"
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.tuco.ai/api/analytics/conversations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tuco.ai/api/analytics/conversations")
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_body{
"date": "<string>",
"timezone": "<string>",
"total": 123,
"returned": 123,
"conversations[].sent": 123,
"conversations[].replied": 123,
"conversations[].lastDirection": "<string>",
"conversations[].uniboxHref": "<string>"
}Analytics
Analytics Day Conversations
Every conversation behind one day on the insights chart — all threads with a message that day, newest first, with per-day send and reply counts.
GET
/
api
/
analytics
/
conversations
Analytics Day Conversations
curl --request GET \
--url https://app.tuco.ai/api/analytics/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tuco.ai/api/analytics/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tuco.ai/api/analytics/conversations', 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.tuco.ai/api/analytics/conversations",
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.tuco.ai/api/analytics/conversations"
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.tuco.ai/api/analytics/conversations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tuco.ai/api/analytics/conversations")
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_body{
"date": "<string>",
"timezone": "<string>",
"total": 123,
"returned": 123,
"conversations[].sent": 123,
"conversations[].replied": 123,
"conversations[].lastDirection": "<string>",
"conversations[].uniboxHref": "<string>"
}The drill-down for one bar of the insights volume chart. Returns every conversation that had at least one message on
date (cut in the workspace timezone), ordered by most recent activity, with a link straight to the Unibox thread.Up to 60 conversations are returned; total reports how many were active in full.Authentication
Authorization: Bearer tuco_sk_xxxxxxxxxxxxx
Query parameters
string
required
The calendar day to drill into,
YYYY-MM-DD, cut in the workspace timezone. Returns 400 if missing or malformed.string
Restrict to conversations on a single Tuco line (24-char ObjectId hex).
string
IANA zone the day is cut in (e.g.
America/New_York). Defaults to the workspace timezone. tz is accepted as an alias.Example
curl "https://app.tuco.ai/api/analytics/conversations?date=2026-08-15" \
-H "Authorization: Bearer tuco_sk_xxxxxxxxxxxxx"
Success response (200)
{
"success": true,
"date": "2026-08-15",
"timezone": "America/New_York",
"total": 59,
"returned": 59,
"conversations": [
{
"name": "Jasun Liepitz",
"phone": "+16185550100",
"leadId": "6a82fbf0586005e0ca405c37",
"sent": 3,
"replied": 2,
"lastMessage": "Sounds good, let's set up a time to talk.",
"lastDirection": "in",
"lastAt": "2026-08-15T18:22:41.000Z",
"uniboxHref": "/unibox?conversation=%2B16183034210"
}
]
}
string
The calendar day the results were cut for, echoed back as
YYYY-MM-DD.string
IANA zone the day was cut in — the resolved
timezone/tz param, or the workspace default.number
Distinct conversations active on the day (before the 60-row cap).
number
How many conversations are in this response (capped at 60).
number
Outbound messages to this conversation on that day.
number
Inbound messages from this conversation on that day.
string
in if the day’s last message was inbound, out if outbound.string
Relative link that opens this thread in Unibox. The conversation id is the E.164 phone.
Error responses
| Status | When |
|---|---|
400 | date missing or not YYYY-MM-DD |
401 | Missing or invalid API key |
500 | Server error loading conversations |