Get per-day campaign insights
Per-day (`time_increment=1`) insights time series for one marketing message campaign, returned **in full** for any window length. Optional `startDate` / `endDate` window (both or neither, `YYYY-MM-DD`) — without them the series covers the campaign's **full flight**. Daily insights are only available for campaigns created on or after 2026-03-01; older campaigns return `400`, as does an org not connected to Meta Ads.
/campaigns/{campaignId}/daily-insightsBeta
Authorization
x-api-key x-date x-signature x-api-version Your API key (the ApiKeys document id).
In: header
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
HMAC-SHA256 of the x-date string keyed by your secret, lowercase hex.
In: header
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
The Meta campaign id.
Query Parameters
Window start — a bare calendar date (YYYY-MM-DD; a datetime is rejected), inclusive. Requires endDate too — a lone date is a validation error. Omit both for the full flight.
Window end — a bare calendar date (YYYY-MM-DD; a datetime is rejected), inclusive. Requires startDate too — a lone date is a validation error. Omit both for the full flight.
Response Body
application/json
application/json
application/json
application/json
application/json
Try it
read-onlyKept 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/campaigns/120210000000000000/daily-insights?startDate=2026-08-01&endDate=2026-08-04"[ { "campaign_id": "120210000000000000", "campaign_name": "Spring Sale — message campaign", "marketing_messages_spend": "0.01", "marketing_messages_delivered": "2", "marketing_messages_cost_per_delivered": "0.01", "marketing_messages_read_rate": "100", "marketing_messages_link_btn_click": "0", "marketing_messages_link_btn_click_rate": "0", "marketing_messages_cost_per_link_btn_click": "0", "date_start": "2026-06-17", "date_stop": "2026-06-17" }]{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "error": [ { "message": "string", "path": [ "string" ], "type": "string", "context": {} } ]}Get campaign summary insights
Summary insights for one marketing message campaign — spend, delivered, read rate, link-button clicks + costs, and offsite-conversion actions / values / ROAS. Covers the campaign's **full flight** by default; pass `startDate` + `endDate` (both or neither, `YYYY-MM-DD`) to restrict the totals to an exact day-granular window instead — the response's `date_start` / `date_stop` echo the range actually covered. May return `null` when there are no insights; returns `400` if the org isn't connected to Meta Ads.
List marketing messages
List Meta (paid) **marketing messages** — metadata only; insight numbers live on the per-message `/insights` endpoint. Newest created first (stable — ties break on id). The optional `startDate`/`endDate` window (both together) matches the date `dateField` selects — send dates by default, or the **next scheduled send** (`dateField=scheduled`) to cover a future range. Page past the `limit` cap with `offset`.