Retrieves detailed email-level statistics for all emails sent in a campaign Essential for detailed campaign analysis, A/B test evaluation, lead engagement scoring, and identifying best-performing sequences
Overview
Retrieves detailed email-level statistics for all emails sent in a campaign
Key Features :
Returns individual email stats including opens, clicks, replies, bounces with precise timestamps
Supports comprehensive filtering by sequence number (1-20), email status (opened/clicked/replied/bounced), and date ranges
Includes pagination with configurable offset/limit (max 1000)
Path Parameters
Query Parameters
Number of records to return
Filter by sequence number (1-20)
Filter by status: opened, clicked, replied, unsubscribed, bounced
Start date filter (ISO format)
End date filter (ISO format)
curl "https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/statistics?api_key=YOUR_KEY"
Response Codes
Invalid request parameters or malformed request body
Invalid or missing API key. Check your authentication.
The requested resource (campaign, lead, email account, etc.) does not exist or you don’t have access to it
Request validation failed. Check parameter types, required fields, and value constraints.
Too many requests. Please slow down and retry after the rate limit resets.
Server error occurred. Please try again or contact support if the issue persists.
API is temporarily unavailable or under maintenance. Please try again later.
200 - Success
401 - Unauthorized
404 - Not Found
422 - Validation Error
{
"success" : true ,
"data" : {}
}
Statistics Fields
Total number of email statistics records
Array of email statistics Which email in sequence (1, 2, 3, etc.)
Use Cases
Get All Opens
response = requests.get(
f " { base_url } /campaigns/ { campaign_id } /statistics" ,
params = { "api_key" : API_KEY , "email_status" : "opened" , "limit" : 1000 }
)
response = requests.get(
f " { base_url } /campaigns/ { campaign_id } /statistics" ,
params = { "api_key" : API_KEY , "email_sequence_number" : 1 }
)
Get This Week’s Stats
from datetime import datetime, timedelta
end_date = datetime.now().isoformat()
start_date = (datetime.now() - timedelta( days = 7 )).isoformat()
response = requests.get(
f " { base_url } /campaigns/ { campaign_id } /statistics" ,
params = {
"api_key" : API_KEY ,
"sent_time_start_date" : start_date,
"sent_time_end_date" : end_date
}
)
Implementation Details
Returns paginated results. Use filters to narrow down large datasets. Statistics updated in real-time as events occur.
Response Format : object