Get Message Reports Summary
curl --request GET \
--url https://api-ai.zixflow.com/api/data/messages/v1/reports/summary \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>'import requests
url = "https://api-ai.zixflow.com/api/data/messages/v1/reports/summary"
headers = {
"x-api-key": "<x-api-key>",
"x-workspace-id": "<x-workspace-id>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<x-api-key>', 'x-workspace-id': '<x-workspace-id>'}
};
fetch('https://api-ai.zixflow.com/api/data/messages/v1/reports/summary', 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://api-ai.zixflow.com/api/data/messages/v1/reports/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>",
"x-workspace-id: <x-workspace-id>"
],
]);
$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://api-ai.zixflow.com/api/data/messages/v1/reports/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-workspace-id", "<x-workspace-id>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-ai.zixflow.com/api/data/messages/v1/reports/summary")
.header("x-api-key", "<x-api-key>")
.header("x-workspace-id", "<x-workspace-id>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-ai.zixflow.com/api/data/messages/v1/reports/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-workspace-id"] = '<x-workspace-id>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Message reports summary retrieved successfully",
"data": [
{
"date": "2024-01-15",
"audience": 5000,
"submitted": 4980,
"sent": 4900,
"delivered": 4720,
"undelivered": 80,
"failed": 100,
"read": 2100,
"opened": 0,
"clicked": 340,
"bounce": 0,
"complaint": 0,
"unsubscribed": 12,
"sms_submitted": 0,
"sms_sent": 0,
"sms_delivered": 0,
"sms_undelivered": 0,
"cost": 58.4
}
]
}
{
"success": false,
"message": "start_date, end_date, and channel are required"
}
{
"success": false,
"message": "Unauthorized. Please check your API key and workspace ID."
}
{
"success": false,
"message": "Too many requests, try again later!"
}
{
"success": false,
"message": "Internal server error. Please try again later."
}
Messages
Get Message Reports Summary
Returns aggregated messaging metrics by date
GET
/
api
/
data
/
messages
/
v1
/
reports
/
summary
Get Message Reports Summary
curl --request GET \
--url https://api-ai.zixflow.com/api/data/messages/v1/reports/summary \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>'import requests
url = "https://api-ai.zixflow.com/api/data/messages/v1/reports/summary"
headers = {
"x-api-key": "<x-api-key>",
"x-workspace-id": "<x-workspace-id>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<x-api-key>', 'x-workspace-id': '<x-workspace-id>'}
};
fetch('https://api-ai.zixflow.com/api/data/messages/v1/reports/summary', 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://api-ai.zixflow.com/api/data/messages/v1/reports/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>",
"x-workspace-id: <x-workspace-id>"
],
]);
$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://api-ai.zixflow.com/api/data/messages/v1/reports/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-workspace-id", "<x-workspace-id>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-ai.zixflow.com/api/data/messages/v1/reports/summary")
.header("x-api-key", "<x-api-key>")
.header("x-workspace-id", "<x-workspace-id>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-ai.zixflow.com/api/data/messages/v1/reports/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-workspace-id"] = '<x-workspace-id>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Message reports summary retrieved successfully",
"data": [
{
"date": "2024-01-15",
"audience": 5000,
"submitted": 4980,
"sent": 4900,
"delivered": 4720,
"undelivered": 80,
"failed": 100,
"read": 2100,
"opened": 0,
"clicked": 340,
"bounce": 0,
"complaint": 0,
"unsubscribed": 12,
"sms_submitted": 0,
"sms_sent": 0,
"sms_delivered": 0,
"sms_undelivered": 0,
"cost": 58.4
}
]
}
{
"success": false,
"message": "start_date, end_date, and channel are required"
}
{
"success": false,
"message": "Unauthorized. Please check your API key and workspace ID."
}
{
"success": false,
"message": "Too many requests, try again later!"
}
{
"success": false,
"message": "Internal server error. Please try again later."
}
Description
This endpoint returns aggregated messaging metrics grouped by date. You must provide a date range and channel. Results are cached for 5 minutes for the same workspace and query.Headers
string
required
Your API key for authentication.
string
required
Your workspace ID for authentication.
Query Parameters
string
required
Start of the date range in RFC3339 format (
YYYY-MM-DDTHH:mm:ssZ). Required. Sample: 2024-01-01T00:00:00Z.string
required
End of the date range in RFC3339 format (
YYYY-MM-DDTHH:mm:ssZ). Required. Sample: 2024-01-31T00:00:00Z.string
required
Channel to query. Required. Possible values:
sms, whatsapp, rcs, email, push. Sample: whatsapp.string
Optional delivery type filter. If omitted, metrics include all types. Possible values:
campaign, api, flow. Sample: campaign.Response
boolean
Indicates whether the API call was successful.
string
Success or error message from the API.
array
An array of date summary objects, each containing:
string
The date for this summary row.
integer
Audience size for the date.
integer
Number of messages submitted.
integer
Number of messages sent.
integer
Number of messages delivered.
integer
Number of undelivered messages.
integer
Number of failed messages.
integer
Number of messages marked as read.
integer
Number of emails opened.
integer
Number of clicks.
integer
Number of bounced emails.
integer
Number of spam complaints.
integer
Number of unsubscribes.
integer
Number of SMS messages submitted.
integer
Number of SMS messages sent.
integer
Number of SMS messages delivered.
integer
Number of SMS messages undelivered.
number
Total cost for the date.
{
"success": true,
"message": "Message reports summary retrieved successfully",
"data": [
{
"date": "2024-01-15",
"audience": 5000,
"submitted": 4980,
"sent": 4900,
"delivered": 4720,
"undelivered": 80,
"failed": 100,
"read": 2100,
"opened": 0,
"clicked": 340,
"bounce": 0,
"complaint": 0,
"unsubscribed": 12,
"sms_submitted": 0,
"sms_sent": 0,
"sms_delivered": 0,
"sms_undelivered": 0,
"cost": 58.4
}
]
}
{
"success": false,
"message": "start_date, end_date, and channel are required"
}
{
"success": false,
"message": "Unauthorized. Please check your API key and workspace ID."
}
{
"success": false,
"message": "Too many requests, try again later!"
}
{
"success": false,
"message": "Internal server error. Please try again later."
}