Dynamo Developer DocsDynamo Developer Docs
External APIAd accounts

List per-day insights for all campaigns in a window

Per-day insights for **every** marketing message campaign in the ad account that delivered inside the `startDate`..`endDate` window — no campaign ids needed. The one-call alternative to collecting ids and calling `GET /campaigns/{campaignId}/daily-insights` per campaign: each `days` row is identical to what that endpoint returns for the same campaign and window. Cursor-paginated over the account's campaigns — echo `nextCursor` back as `after` until `mayHaveMore` is `false`. A page may legitimately return **0 items with `mayHaveMore: true`** (a stretch of campaigns with no delivery in the window) — keep paging. Campaigns with **no delivery** in the window are omitted, as are campaigns created before **2026-03-01** — Meta has no daily message metrics for them (the same cutoff the per-campaign endpoint enforces, silently here instead of a `400`). Wide windows are served in smaller pages (Meta limits how much insight data one query may cover), so a long window takes more pages for the same account; if Meta refuses even the smallest page, the response is a `400` asking to narrow the window. Daily polling with a 1–2 day window is the sweet spot.

get/ad-accounts/{adAccountId}/campaigns/daily-insights

Beta

The External API is in beta. Endpoints, parameters, and response shapes may change — including breaking changes — in future releases. Pin to documented behavior before relying on it in production.

Authorization

x-api-key x-date x-signature x-api-version
x-api-key<token>

Your API key (the ApiKeys document id).

In: header

x-date<token>

Current timestamp as an IMF-fixdate string (GMT, US locale) "EEE, dd MMM yyyy HH:mm:ss z", e.g. "Sun, 06 Dec 2020 12:59:11 GMT". 30-second TTL.

In: header

x-signature<token>

HMAC-SHA256 of the x-date string keyed by your secret, lowercase hex.

In: header

x-api-version<token>

API version you're coding against — currently 1. Required; a missing or unsupported value returns 400 with Missing or unsupported x-api-version header. Supported versions: 1.

In: header

Path Parameters

adAccountId*string

The Meta ad account id.

Query Parameters

startDate*string

Window start — a bare calendar date (YYYY-MM-DD; a datetime is rejected), inclusive.

endDate*string

Window end — a bare calendar date (YYYY-MM-DD; a datetime is rejected), inclusive. Must be on or after startDate; the window may span at most 93 days.

after?string

Opaque Meta page cursor — a previous response's nextCursor.

Response Body

application/json

application/json

application/json

application/json

application/json

Try it

read-only

Kept in this tab only and signed in your browser — your secret never leaves your device.

Path

Query

Enter your key and secret to send.

curl -X GET "https://example.com/ad-accounts/act_1234567890/campaigns/daily-insights?startDate=2026-08-04&endDate=2026-08-04"
{  "items": [    {      "campaignId": "120212345678901234",      "campaignName": "Summer push",      "createdTime": "2026-07-30T19:44:37+0300",      "days": [        {          "marketing_messages_spend": "12.34",          "marketing_messages_delivered": "1180",          "marketing_messages_read_rate": "87.2",          "marketing_messages_link_btn_click": "96",          "marketing_messages_link_btn_click_rate": "8.13",          "marketing_messages_cost_per_delivered": "0.0104",          "marketing_messages_cost_per_link_btn_click": "0.1285",          "campaign_name": "Summer push",          "campaign_id": "120212345678901234",          "date_start": "2026-08-04",          "date_stop": "2026-08-04"        }      ]    }  ],  "returned": 1,  "mayHaveMore": false,  "nextCursor": null}
{  "message": "string"}
{  "message": "string"}
{  "message": "string"}
{  "error": [    {      "message": "string",      "path": [        "string"      ],      "type": "string",      "context": {}    }  ]}