Skip to content

Insights

The Insights API follows the OpenAI Ads API’s reporting routes and response envelope.

Use the endpoint matching the scope you want to query:

EndpointScope
GET /ad_account/insightsCurrent ad account
GET /campaigns/{campaign_id}/insightsOne campaign
GET /ad_groups/{ad_group_id}/insightsOne ad group
GET /ads/{ad_id}/insightsOne ad

All parameters are optional. The preview accepts the OpenAI-style parameter names now so integrations can keep the same request shape as reporting is enabled.

ParameterTypeDefaultDescription
time_granularitystringdailyhourly, daily, monthly, or none.
aggregation_levelstring—ad_account, campaign, ad_group, or ad.
time_ranges[]string[]—JSON-encoded time ranges.
fields[]string[]—Fields to include in each result row.
filters[]string[]—JSON-encoded filters.
sort[]string[]—JSON-encoded sort definitions.
segments[]string[]—Additional reporting breakdowns.
override_segment_group_order[]string[]—Segment grouping order.
includes[]string[]—Additional zero-result rows to include.
limitinteger20From 1 to 2000.
beforestring—Previous-page cursor.
afterstring—Next-page cursor. Do not combine with before.
Terminal window
curl -G "https://api.withgrowl.com/v1/adm/ad_account/insights" \
-H "Authorization: Bearer $ELO_ADS_API_KEY" \
--data-urlencode 'time_granularity=daily' \
--data-urlencode 'aggregation_level=campaign' \
--data-urlencode 'fields[]=campaign.id' \
--data-urlencode 'fields[]=campaign.clicks'

Every Insights endpoint returns the same top-level list envelope. During the preview, data is empty and count is 0.

{
"object": "list",
"data": [],
"count": 0,
"first_id": null,
"last_id": null,
"has_more": false
}