Skip to content

Request an asynchronous report

POST /api/marketing/insights/reports

Same parameters as the synchronous query (including date_preset and time_increment, both free strings), but for ranges or breakdowns that Graph cannot answer in a single call. Returns { report_run_id }; progress is queried at GET /api/marketing/insights/reports/:reportRunId and the rows at …/results. Meta reports expire after 30 days. Requires the marketing:manage scope.

FieldTypeDescription
ad_account_idstringrequiredMeta ad account, with prefix. Example: "act_123".
object_idstringoptionalCampaign, ad set or ad to query. If omitted, the whole account is queried.
levelaccount · campaign · adset · adoptional—
date_presetstringoptionalNamed range. It is a free string: Meta validates the value. The commonly used ones are in GET /api/marketing/enums as suggestions. Example: "last_7d".
time_rangeobjectoptionalExplicit range {"since":"YYYY-MM-DD","until":"YYYY-MM-DD"}. In the GET it is sent as JSON in the query string; in the POST it can come as an object.
time_incrementstringoptionalTime slicing of the rows. Free string: a number of days (1, 7, 28), monthly or all_days. 1 is the typical value for a daily series. If it is not sent, Graph aggregates the whole range in a single row. Example: "1".
fieldsstringoptionalComma-separated metrics. Default: impressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type,date_start,date_stop.
breakdownsstringoptionalComma-separated breakdowns, e.g. age,gender.
action_breakdownsstringoptionalComma-separated action breakdowns.
StatusDescriptionSchema
200——
Terminal window
curl -X POST https://api.neike.dev/api/marketing/insights/reports \
-H "x-neike-api-key: whk_live_…" \
-H "Content-Type: application/json" \
-d '{
"ad_account_id": "act_123"
}'