Campaign report: headline metrics, 72-hour engagement, click map, providers, bounces, unsubscribes, A/B
package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://reputecast.example.com/api/v1/workspaces/acme-newsletter/campaigns/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/report"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://reputecast.example.com/api/v1/workspaces/acme-newsletter/campaigns/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/report';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://reputecast.example.com/api/v1/workspaces/acme-newsletter/campaigns/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/report \ --header 'Authorization: Bearer <token>'Permission: reports:view
Aggregate numbers only. Rates are percentages: delivered and bounces of sent; opens, clicks, unsubscribes and complaints of delivered.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Workspace slug
Workspace slug
Campaign id
Campaign id
Query Parameters
Section titled “Query Parameters”Show the click map of one language version (campaigns sent in several languages)
Show the click map of one language version (campaigns sent in several languages)
Responses
Section titled “Responses”OK
object
object
Subject line, content, send time
P below 0.05
object
The subject line, or what differs
object
object
How its events arrive: SNS, webhook, bounce mailbox
object
object
object
SMTP reply or provider code: 550 5.1.1
Short name: SES, Postal
The provider’s event name: Permanent/General, HardFail
object
object
object
object
The most-clicked links in the group, for the caption
Links under this share (percent) are grouped as Other
All link clicks
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Dollars
object
object
Share of unsubscribes, percent
Example
{ "abTest": { "kind": "subject", "metric": "human_opens", "state": "decided" }, "bounces": { "rows": [ { "suppression": "auto", "tone": "bad", "type": "unknown_user" } ] }, "campaign": { "status": "draft" }, "languages": { "rows": [ { "reason": "missing" } ] }, "mailboxes": [ { "key": "gmail" } ], "notSent": { "readiness": "ready" }, "providers": { "columns": [ { "color": "ses" } ] }, "unsubscribes": { "reasons": [ { "key": "too_frequent", "tone": "ink" } ] }}default
Section titled “default”Error
object
Stable error code, e.g. permission_denied
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
Members who hold the missing permission
A URI reference that identifies the specific occurrence of the problem.
object
The missing permission key
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}