Report a campaign

GET/api/v1/campaigns/{campaign}/report
Requires anorganization API keywith the scopecampaigns:read

Parameters

NameInTypeDescription
campaignrequiredpathstringThe campaign identifier.

Request

GET/api/v1/campaigns/{campaign}/report
curl -X GET 'https://app.mailyte.com/api/v1/campaigns/01JBT8XQ2M9WYC3K4F6R7S8T9V/report' \
  -H 'Authorization: Bearer mk_live_YOUR_API_KEY'
The key names its own organization, so no X-Organization-ID header is needed.

Response

Success.

  • dataobject
    • objectstringcampaign_report
    • campaign_idstring
    • statestringdraft | scheduled | sending | paused | sent | canceled | unknown

      The campaign's lifecycle state, from the same map campaign.state uses.

    • timelineobject

      Engagement over time, from the start of sending to the latest event. Null for a campaign that has not started.

      • bucketstringhour | day

        hour while the window is short enough to read that way (72 hours), day after. Null when there is no window.

      • pointsarray<object>

        Null when the campaign never started; never [] in that case.

        • atstring

          The start of the time bucket, in ISO 8601 UTC.

        • deliveredinteger
        • openedinteger
        • clickedinteger
    • linksarray<object>

      Clicks grouped by DESTINATION, most-clicked first — a per-destination table, not a list of click events. At most 50 rows; no campaign at today's volumes comes near that. No ratio is published: you have both inputs.

      • urlstring

        The link that was clicked. Older clicks whose link was not recorded are grouped as (unknown link).

      • total_clicksinteger

        Every click on this destination.

      • unique_clickersinteger

        Distinct recipients who clicked it. Five clicks from one person is not five interested readers, which is why both numbers are kept.

Returned inside the standard envelope.

Errors

StatusWhen
401The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist.
403The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys.
404No such resource in this organization.
422The request was understood but the values were not acceptable.
429Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait.

Every status, with what causes it and what to do, is on the error reference.