Workspace analytics overview
Returns aggregate email stats across all campaigns in the workspace.
Includes totals for sent, opened, clicked, bounced, replied, and positive replied emails,
plus campaign counts and calculated rates (as percentages with 1 decimal).
Positive replies are determined by the workspace's AI tagging settings — leads tagged with labels marked as isPositive are counted.
curl -X GET "https://api.sendkit.ai/v1/analytics/overview" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY"
import requests
import json
url = "https://api.sendkit.ai/v1/analytics/overview"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/analytics/overview", {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.sendkit.ai/v1/analytics/overview", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/analytics/overview')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"totalSent": 12500,
"totalOpened": 5625,
"totalClicked": 1250,
"totalBounced": 375,
"totalReplied": 625,
"totalPositiveReplied": 312,
"totalCampaigns": 8,
"activeCampaigns": 3,
"bySequence": {
"main": {
"sent": 11000,
"opened": 4950,
"clicked": 1100,
"bounced": 330
},
"subsequence": {
"sent": 1500,
"opened": 675,
"clicked": 150,
"bounced": 45
}
},
"rates": {
"open": "45.0",
"click": "10.0",
"reply": "5.0",
"positiveReply": "2.5",
"bounce": "3.0"
}
}
}
{
"success": true,
"data": {
"totalSent": 0,
"totalOpened": 0,
"totalClicked": 0,
"totalBounced": 0,
"totalReplied": 0,
"totalPositiveReplied": 0,
"totalCampaigns": 0,
"activeCampaigns": 0,
"bySequence": {
"main": {
"sent": 0,
"opened": 0,
"clicked": 0,
"bounced": 0
},
"subsequence": {
"sent": 0,
"opened": 0,
"clicked": 0,
"bounced": 0
}
},
"rates": {
"open": "0.0",
"click": "0.0",
"reply": "0.0",
"positiveReply": "0.0",
"bounce": "0.0"
}
}
}
/v1/analytics/overview
Platform API key (sk_user_...) or Workspace API key (sk_...)
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Responses
Total emails sent across all campaigns
Total emails opened
Total emails with link clicks
Total bounced emails
Total leads that replied
Total leads that replied with a positive AI tag (e.g. Interested, Meeting Request)
Total number of campaigns in workspace
Number of currently active campaigns
Send/open/click/bounce totals split by main sequence vs subsequence emails.
The grand totals above (totalSent etc.) sum these two buckets. Reply
totals are not split here — see per-campaign analytics for subsequence-attributed replies.
Aggregate email stats for a single sequence bucket (main or subsequence) within the requested date range.
Aggregate email stats for a single sequence bucket (main or subsequence) within the requested date range.
Percentage rates (string with 1 decimal, e.g. "45.2")
Open rate percentage
Click rate percentage
Reply rate percentage
Positive reply rate percentage
Bounce rate percentage
Last updated 5 days ago
Built with Documentation.AI