Get Sendflow Reports Summary
curl --request GET \
--url https://api-ai.zixflow.com/api/data/sendflow/v1/reports/summary/{flowId} \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>'import requests
url = "https://api-ai.zixflow.com/api/data/sendflow/v1/reports/summary/{flowId}"
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/sendflow/v1/reports/summary/{flowId}', 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/sendflow/v1/reports/summary/{flowId}",
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/sendflow/v1/reports/summary/{flowId}"
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/sendflow/v1/reports/summary/{flowId}")
.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/sendflow/v1/reports/summary/{flowId}")
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": "Sendflow reports summary retrieved successfully",
"data": {
"requests": 800,
"submitted": 790,
"sent": 770,
"delivered": 740,
"acknowledged": 710,
"failed": 20,
"cost": 42.8
}
}
{
"success": false,
"message": "Invalid flowId or query parameter"
}
{
"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."
}
Sendflow
Get Sendflow Reports Summary
Returns aggregated sendflow metrics
GET
/
api
/
data
/
sendflow
/
v1
/
reports
/
summary
/
{flowId}
Get Sendflow Reports Summary
curl --request GET \
--url https://api-ai.zixflow.com/api/data/sendflow/v1/reports/summary/{flowId} \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>'import requests
url = "https://api-ai.zixflow.com/api/data/sendflow/v1/reports/summary/{flowId}"
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/sendflow/v1/reports/summary/{flowId}', 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/sendflow/v1/reports/summary/{flowId}",
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/sendflow/v1/reports/summary/{flowId}"
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/sendflow/v1/reports/summary/{flowId}")
.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/sendflow/v1/reports/summary/{flowId}")
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": "Sendflow reports summary retrieved successfully",
"data": {
"requests": 800,
"submitted": 790,
"sent": 770,
"delivered": 740,
"acknowledged": 710,
"failed": 20,
"cost": 42.8
}
}
{
"success": false,
"message": "Invalid flowId or query parameter"
}
{
"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 Sendflow metrics for a specific flow. You can filter by date range, channels, and countries. 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.
Path Parameters
string
required
The unique identifier of the Sendflow.
Query Parameters
string
Optional start of the date range. Accepts RFC3339 (
YYYY-MM-DDTHH:mm:ssZ) or YYYY-MM-DD. If omitted, no lower date bound is applied. Sample: 2024-01-01T00:00:00Z.string
Optional end of the date range. Accepts RFC3339 (
YYYY-MM-DDTHH:mm:ssZ) or YYYY-MM-DD. If omitted, no upper date bound is applied. Sample: 2024-01-31T00:00:00Z.string
Optional comma-separated channel filter. If omitted, metrics include all channels. Possible values:
sms, email, whatsapp, rcs. Sample: whatsapp,sms.string
Optional comma-separated ISO country codes. If omitted, metrics include all countries. Sample:
US,IN.Response
boolean
Indicates whether the API call was successful.
string
Success or error message from the API.
object
Aggregated Sendflow metrics containing:
integer
Total number of Sendflow requests.
integer
Number of messages submitted.
integer
Number of messages sent.
integer
Number of messages delivered.
integer
Number of messages acknowledged.
integer
Number of failed executions or deliveries.
number
Total cost for the selected period.
{
"success": true,
"message": "Sendflow reports summary retrieved successfully",
"data": {
"requests": 800,
"submitted": 790,
"sent": 770,
"delivered": 740,
"acknowledged": 710,
"failed": 20,
"cost": 42.8
}
}
{
"success": false,
"message": "Invalid flowId or query parameter"
}
{
"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."
}