SendlySendly
API ReferenceAnalytics

Retrieve campaign totals and engagement

GET
/api/v1/analytics/campaigns

Campaign counts plus average open and click rates.

total and active count campaigns CREATED in the window; completed counts campaigns SENT in it — so a campaign created earlier and sent inside the window appears only in completed. Rates are percentages to one decimal place, averaged over the campaigns sent in the window.

from defaults to 30 days ago and is clamped to at most 90 days back; to defaults to now. A wider request is narrowed rather than refused, and the window field states the range actually covered — read it before comparing two responses.

Requires the analytics:read scope — View your sending analytics and engagement metrics.

Authorization

AuthorizationBearer <token>

API key authentication. Use a sk_* (FULL) or pk_* (SENDING_ONLY) key as the bearer token. Public keys (pk_*) are restricted to the email-send endpoints and the self-serve list subscribe/unsubscribe pair; every other endpoint — event tracking included — answers 403 for them. In scope terms (used by /api/v1/* operations): FULL keys hold every scope; SENDING_ONLY keys hold only emails:send.

In: header

Query Parameters

from?|

Start of the window (ISO 8601). Defaults to 30 days ago; clamped to at most 90 days back.

to?|

End of the window (ISO 8601). Defaults to now.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/api/v1/analytics/campaigns"
{
  "total": 0,
  "active": 0,
  "completed": 0,
  "average_open_rate": 0,
  "average_click_rate": 0,
  "window": {
    "from": "2019-08-24T14:15:22Z",
    "to": "2019-08-24T14:15:22Z"
  }
}
{
  "type": "http://example.com",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "code": "string",
  "request_id": "string",
  "errors": [
    {
      "pointer": "string",
      "code": "string",
      "message": "string"
    }
  ]
}
{
  "type": "http://example.com",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "code": "string",
  "request_id": "string",
  "errors": [
    {
      "pointer": "string",
      "code": "string",
      "message": "string"
    }
  ]
}
{
  "type": "http://example.com",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "code": "string",
  "request_id": "string",
  "errors": [
    {
      "pointer": "string",
      "code": "string",
      "message": "string"
    }
  ]
}
{
  "type": "http://example.com",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "code": "string",
  "request_id": "string",
  "errors": [
    {
      "pointer": "string",
      "code": "string",
      "message": "string"
    }
  ]
}
{
  "type": "http://example.com",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "code": "string",
  "request_id": "string",
  "errors": [
    {
      "pointer": "string",
      "code": "string",
      "message": "string"
    }
  ]
}