Check why a report comes back empty
Given the report a caller ran - General or Advanced, its dates, time breakdown, grouping and filters - names what makes it empty without running it: a period that has not happened yet; a report type, date range, breakdown, grouping or filter the role lacks a permission for, or no Impressions column
https://YOUR-NETWORK-DOMAIN/rest-api/analytics/report-check.do Given the report a caller ran - General or Advanced, its dates, time breakdown, grouping and filters - names what makes it empty without running it: a period that has not happened yet; a report type, date range, breakdown, grouping or filter the role lacks a permission for, or no Impressions column for the role; dates older than the statistics are kept (hourly General statistics are kept for a shorter time than daily ones; Advanced data for the network's configured number of days); a filtered advertiser, campaign, banner, site, zone or placement that does not exist or that the caller may not see, that was created after the period, or filters that contradict each other (a campaign of another advertiser, a placement of another site); and for the Advanced report a network without Advanced data, a detail filter on something its data does not keep, and days whose event logs have not reached the analytics cluster yet. findings lists every finding in that order; decisive is the first one that alone makes the report empty, or null when none does - then the report has to be run with fewer filters (the General report over the same dates without filters, then without one filter at a time) to see which one leaves nothing. Costs no analytics request.
Query Params
from string required
First day of the report, yyyy-MM-dd
2026-10-01 reportType string
GENERAL (default) or ADVANCED (also HADOOP)
GENERAL to string
Last day of the report, yyyy-MM-dd, inclusive; default from
2026-10-07 groupRange string
Time breakdown: NONE (default), HOUR, DAY, WEEK, MONTH or YEAR
DAY groupBy array<string>
Groupings, as the report names them (CAMPAIGN, COUNTRY, DEVICE_FORMAT...)
CAMPAIGN advertiserIds array<integer>
Advertiser ids the report was filtered to
1001 campaignIds array<integer>
Campaign ids the report was filtered to
2001 bannerIds array<integer>
Banner ids the report was filtered to
3001 siteIds array<integer>
Site ids the report was filtered to
5001 zoneIds array<integer>
Zone ids the report was filtered to
6001 placementIds array<integer>
Placement ids the report was filtered to
4001 countries array<string>
Countries the report was filtered to, two-letter codes
US deviceFormats array<string>
Advanced report only — device formats it was filtered to (MOBILE, DESKTOP...)
MOBILE connectionTypes array<string>
Advanced report only — connection types it was filtered to
WIFI languages array<string>
Advanced report only — browser languages it was filtered to
en incognito string
Advanced report only — incognito filter: true, false or unknown
true Responses
200
{success, reportType, from, to, decisive:{check, reason, fix}|null, findings:[{check, decisive, reason, fix}]}; check is one of FUTURE, PERMISSION, RETENTION, ENTITY, CONTRADICTION, ADVANCED_DATA, NOT_FLUSHED, COLUMNS, GROUPING, PROVISIONAL
400
A date that is not yyyy-MM-dd, to before from, or an unknown report type, time breakdown or grouping
401
Authentication error
403
Forbidden — insufficient permissions