This request returns aggregated statistics for transactional (hook-message, campaign type 5) campaigns within a date range. The transactional sub-product must be enabled for the partner; otherwise, a 400 is returned. Response is flat, no summary/details wrapper.
Endpoint and Headers
POST https://whatsapp.useinsider.com/v1/statistics/transactional
Headers
Header | Sample Value | Description |
|---|---|---|
x-ins-auth-key | INS.********************** | This key is required to authorize your request. Refer to Generate a WhatsApp Campaign Analytics API Key to generate your token. |
Body parameters
Column | Description | Data Type | Required |
|---|---|---|---|
start_time | Start of the date range as a 10-digit Unix timestamp. | Integer | Yes |
end_time | End of the date range as a 10-digit Unix timestamp. The maximum supported range is 1 year. | Integer | Yes |
accounts | Sender phone numbers to include. | Array | No |
Sample Request
curl --location 'https://whatsapp.useinsider.com/v1/statistics/transactional' \
--header 'Content-Type: application/json' \
--header 'x-ins-auth-key: INS.**************************************' \
--data '{
"start_time": 1740787200,
"end_time": 1743379200
}' Sample Responses
{
"sent": 5400,
"delivered": 5200,
"open": 1800,
"click": 540,
"conversion": 120,
"revenue": 0,
"drop": 180,
"targeted": 5580,
"unsubscribe": 8,
"undelivered": 200,
"chart": {
"dates": ["2025-03-01", "2025-03-02"],
"datesAsTimestamp": [1740787200, 1740873600],
"sent": [2700, 2700],
"delivered": [2600, 2600],
"open": [900, 900],
"click": [270, 270],
"conversion": [60, 60],
"verified": [0, 0],
"responses": [0, 0],
"clickFromResponses": [0, 0],
"conversionFromResponses": [0, 0]
},
"dropDetails": {
"frequencyCapped": 50,
"duplicates": 20,
"invalidPhoneNumbers": 30,
"tierLimitation": 0,
"templateFailures": 5,
"pausedTemplates": 0,
"recipientRelatedErrors": 60,
"metaTemporaryErrors": 10,
"accountIntegrationErrors": 0,
"internalErrors": 5,
"rateLimits": 0,
"policyFailures": 0
},
"undeliveredDetails": {
"recipientRelatedErrors": 80,
"accountVerificationErrors": 10,
"mediaErrors": 0,
"heldMessages": 30,
"metaExperiment": 0,
"metaErrors": 50,
"invalidMessages": 10,
"metaRecipientLimitsErrors": 20,
"deliveryReportMissing": 0
}
}
200 OK
This status indicates that the request has been completed successfully.
{
"data": {
"statistics": {
"sent": 80,
"delivered": 79,
"read": 61
}
}
}
Error Responses
400 Failed to Parse Request (3001)
{
"message": "failed to parse request",
"errorCode": "3001",
"errors": "json: cannot unmarshal ..."
}
400 Validation Failed (3002)
{
"message": "validation failed",
"errorCode": "3002",
"errors": "date range cannot exceed 1 year"
} Other common validation messages:
start_time is requiredend_time is requiredstart_time must be a 10-digit unix timestampend_time must be a 10-digit unix timestampend_time must be greater than start_time
401 Authentication Required (1001)
{
"message": "authentication required",
"errorCode": "1001"
} 401 Unauthorized
{
"message": "unauthorized",
"error": {
"message": "unauthorized"
}
} 403 IP Restricted (1088)
{
"message": "ip-restricted",
"error": {
"message": "ip-restricted",
"code": 1088
}
} 403 WhatsApp Product Is Not Active (3007)
{
"message": "WhatsApp product is not active",
"errorCode": "3007"
} 403 Transactional Messaging Is Not Active (3005)
This status indicates that the transactional sub-product is not enabled for your account.
{
"message": "transactional messaging is not active",
"errorCode": "3005"
} 422 Unprocessable Entity
This status is forwarded when downstream validation fails.
{
"message": "The given data was invalid.",
"errors": {
"time.start": [
"The time.start must be at least 1514764800."
]
}
} 429 Rate Limited (2021)
{
"message": "rate limited",
"error": {
"message": "rate limited",
"code": 2021
}
} Limitations
All functions must be executed with an HTTPS POST request.
The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed, and an authorization error will be returned in the response.
This API provides data for a 1-year range.
You can send 100 requests per second with the same API Key.
The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider One team — we can adjust it to fit your needs.