Insights
Analytics
Retrieve registration volume, approval rates, and processing time metrics for your network.
GET
/
v1
/
operator-analytics
Analytics
curl --request GET \
--url https://api.example.com/v1/operator-analyticsimport requests
url = "https://api.example.com/v1/operator-analytics"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/operator-analytics', 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.example.com/v1/operator-analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/operator-analytics"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/operator-analytics")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/operator-analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"summary": {
"total_submitted": 247,
"total_approved": 218,
"total_rejected": 14,
"total_info_requested": 12,
"total_pending": 3,
"approval_rate": 0.94,
"avg_processing_hours": 4.2
},
"periods": [
{
"period_start": "2026-07-01",
"period_end": "2026-07-07",
"submitted": 58,
"approved": 52,
"rejected": 3,
"info_requested": 2,
"pending": 1,
"approval_rate": 0.95,
"avg_processing_hours": 3.8
},
{
"period_start": "2026-07-08",
"period_end": "2026-07-14",
"submitted": 64,
"approved": 59,
"rejected": 4,
"info_requested": 1,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.1
},
{
"period_start": "2026-07-15",
"period_end": "2026-07-21",
"submitted": 71,
"approved": 60,
"rejected": 4,
"info_requested": 5,
"pending": 2,
"approval_rate": 0.94,
"avg_processing_hours": 4.5
},
{
"period_start": "2026-07-22",
"period_end": "2026-07-28",
"submitted": 54,
"approved": 47,
"rejected": 3,
"info_requested": 4,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.3
}
],
"top_rejection_reasons": [
{"reason": "use_case_unclear", "count": 7},
{"reason": "brand_mismatch", "count": 4},
{"reason": "duplicate_sid", "count": 2},
{"reason": "restricted_term", "count": 1}
]
},
"meta": {
"request_id": "req_op006",
"timestamp": "2026-07-31T09:00:00+10:00"
}
}
Required permission:
operator:read
Returns aggregate metrics for registrations submitted to your network, filterable by date range and market.
Query parameters
string
required
Start date (ISO 8601). Inclusive.
string
required
End date (ISO 8601). Inclusive.
string
Filter by ISO 3166-1 alpha-2 country code. Omit for all markets.
string
default:"day"
Aggregation period:
day, week, month.Example
curl "https://api.senderz.ai/v1/operator-analytics?from=2026-07-01&to=2026-07-31&market=AU&group_by=week" \
-H "Authorization: Bearer sz_live_xxxxxxxxxxxxx"
Response
{
"ok": true,
"data": {
"summary": {
"total_submitted": 247,
"total_approved": 218,
"total_rejected": 14,
"total_info_requested": 12,
"total_pending": 3,
"approval_rate": 0.94,
"avg_processing_hours": 4.2
},
"periods": [
{
"period_start": "2026-07-01",
"period_end": "2026-07-07",
"submitted": 58,
"approved": 52,
"rejected": 3,
"info_requested": 2,
"pending": 1,
"approval_rate": 0.95,
"avg_processing_hours": 3.8
},
{
"period_start": "2026-07-08",
"period_end": "2026-07-14",
"submitted": 64,
"approved": 59,
"rejected": 4,
"info_requested": 1,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.1
},
{
"period_start": "2026-07-15",
"period_end": "2026-07-21",
"submitted": 71,
"approved": 60,
"rejected": 4,
"info_requested": 5,
"pending": 2,
"approval_rate": 0.94,
"avg_processing_hours": 4.5
},
{
"period_start": "2026-07-22",
"period_end": "2026-07-28",
"submitted": 54,
"approved": 47,
"rejected": 3,
"info_requested": 4,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.3
}
],
"top_rejection_reasons": [
{"reason": "use_case_unclear", "count": 7},
{"reason": "brand_mismatch", "count": 4},
{"reason": "duplicate_sid", "count": 2},
{"reason": "restricted_term", "count": 1}
]
},
"meta": {
"request_id": "req_op006",
"timestamp": "2026-07-31T09:00:00+10:00"
}
}
⌘I
Analytics
curl --request GET \
--url https://api.example.com/v1/operator-analyticsimport requests
url = "https://api.example.com/v1/operator-analytics"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/operator-analytics', 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.example.com/v1/operator-analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/operator-analytics"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/operator-analytics")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/operator-analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"summary": {
"total_submitted": 247,
"total_approved": 218,
"total_rejected": 14,
"total_info_requested": 12,
"total_pending": 3,
"approval_rate": 0.94,
"avg_processing_hours": 4.2
},
"periods": [
{
"period_start": "2026-07-01",
"period_end": "2026-07-07",
"submitted": 58,
"approved": 52,
"rejected": 3,
"info_requested": 2,
"pending": 1,
"approval_rate": 0.95,
"avg_processing_hours": 3.8
},
{
"period_start": "2026-07-08",
"period_end": "2026-07-14",
"submitted": 64,
"approved": 59,
"rejected": 4,
"info_requested": 1,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.1
},
{
"period_start": "2026-07-15",
"period_end": "2026-07-21",
"submitted": 71,
"approved": 60,
"rejected": 4,
"info_requested": 5,
"pending": 2,
"approval_rate": 0.94,
"avg_processing_hours": 4.5
},
{
"period_start": "2026-07-22",
"period_end": "2026-07-28",
"submitted": 54,
"approved": 47,
"rejected": 3,
"info_requested": 4,
"pending": 0,
"approval_rate": 0.94,
"avg_processing_hours": 4.3
}
],
"top_rejection_reasons": [
{"reason": "use_case_unclear", "count": 7},
{"reason": "brand_mismatch", "count": 4},
{"reason": "duplicate_sid", "count": 2},
{"reason": "restricted_term", "count": 1}
]
},
"meta": {
"request_id": "req_op006",
"timestamp": "2026-07-31T09:00:00+10:00"
}
}
.jpg?fit=max&auto=format&n=IhWYk8R5R6sdJ_7C&q=85&s=7e3194d82fa9653ad2a2449b4f1a3073)