Appearance
Marketing Mix Modeling Breakdown on Insights API
Updated: Jun 9, 2026
The marketing mix modeling breakdown on the Insights API is a self-service data extraction option you can use in order to export Meta ads data quickly and easily without going through a Meta Marketing Science Partner or third-party agencies and mobile measurement partners.
The API calls are built into the Insights API using the breakdowns=mmm parameter. Note: It is not supported in combination with other breakdowns or action_breakdowns.
The responses contain similar metrics and breakdowns as results from the Marketing Mix Modeling Data Export in Ads Reporting. Marketing mix modeling data is available only on the ad set level (equivalent to the level=adset parameter). Currently, the supported metrics for marketing mix modeling data are impressions and spend. Note: The spend metric is estimated. See Insights API, Estimated and Deprecated Metrics for more information.
Permissions
You will need the following permissions for your ad account:
ads_read
Export marketing mix modeling data
Marketing mix modeling data is retrieved as an asynchronous CSV export. Send a POST to the /insights endpoint with breakdowns=mmm and export_format=csv. The call returns a report_run_id; once the job finishes, download the results from the report run's async_report_url field. The CSV uses column names that match those in Ads Manager.
Note: A request with breakdowns=mmm that does not include export_format=csv returns an error. The legacy flow of reading results from GET /<report_run_id>/insights is no longer supported—marketing mix modeling results are delivered only as a CSV file.
The Insights API uses default values for parameters you don't specify. We recommend setting the time_range or date_preset parameter, and using time_increment to control granularity.
Note: The time_increment can be set to 1 day (i.e., 1), otherwise all_time will be used by default.
1. Submit the export job
curl -X POST \
-F "access_token=<ACCESS_TOKEN>" \
-F "breakdowns=mmm" \
-F "export_format=csv" \
-F "level=adset" \
-F "date_preset=last_7d" \
-F "time_increment=1" \
"https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/insights"The endpoint responds with the report run ID:
{ "report_run_id": "<REPORT_RUN_ID>" }2. Poll for completion
curl -X GET \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v25.0/<REPORT_RUN_ID>?fields=async_status,async_percent_completion"When async_status is Job Completed, proceed to download.
3. Download the CSV
curl -X GET \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v25.0/<REPORT_RUN_ID>?fields=async_report_url"Follow the returned async_report_url to download the CSV file.
Note: If you open the URL directly and the download fails with the error "Sorry, this content isn't available right now", manually append your access token as a parameter by adding &access_token=<ACCESS_TOKEN> to the end of the URL.
For more information about the Insights API and how to onboard to the Marketing API, see the Insights API Quickstart.
Querying at the Business Manager Level
A common use case is to retrieve marketing mix modeling data for a single Business Manager. This operation isn't directly supported because the Insights API works on the ad account level and below.
To download data for a Business Manager you first need to query available ad accounts with the /owned_ad_accounts and /client_ad_accounts endpoints. Then iterate over the returned individual ad account IDs to query the marketing mix modeling data for each ad account.
Example requests
Using /owned_ad_accounts
curl GET \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v25.0/<BUSINESS_ID>/owned_ad_accounts"Using /client_ad_accounts
curl GET \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v25.0/<BUSINESS_ID>/client_ad_accounts"Limits and best practices
The granularity of marketing mix modeling data causes the response to have a large number of records as well as a substantial record size. This can cause your requests to time out during computation. To mitigate this, decrease the size of the request by using the time_range and filtering parameters and query for the total time range in sections. To learn more, see Insights API Limits & Best Practices.
Only specific filtering supported for querying the marketing mix modeling data. Only these listed operator combinations are allowed for a field; other usages of filtering will return an error.
| Field | Allowed Operators |
|---|---|
campaign.id | IN, NOT_IN |
campaign.name | CONTAIN, NOT_CONTAIN |
adset.id | IN, NOT_IN |
adset.name | CONTAIN, NOT_CONTAIN |
country | IN |
region | IN |
dma | IN |
device_platform | IN |
publisher_platform | IN |
platform_position | IN |
We recommend leveraging the Marketing Mix Modeling Data Export in Ads Reporting to export historical data if the API is not needed.
Marketing mix modeling requests always run as asynchronous CSV export jobs (see Export marketing mix modeling data above). The POST returns a report_run_id; query it for async_status and, once the job completes, download the results from async_report_url. Note: Some requests can still time out even as an asynchronous job—narrow the time_range and use filtering to reduce the result size. For more information, see Insights API Asynchronous Jobs.
You may encounter slightly different column header mappings and column header ordering than the Marketing Mix Modeling Data Export in Ads Reporting. You also have full flexibility to join the marketing mix modeling breakdown's default data with other tables queried from the API.
| Column Index | Default Column Headers from Marketing Mix Modeling Breakdown |
|---|---|
| 0 | account_id |
| 1 | campaign_id |
| 2 | adset_id |
| 3 | date_start |
| 4 | date_stop |
| 5 | impressions |
| 6 | spend |
| 7 | country |
| 8 | region |
| 9 | dma |
| 10 | device_platform |
| 11 | platform_position |
| 12 | publisher_platform |
| 13 | creative_media_type |