Use time range in Ad Insights of Facebook Marketing API
I can't comment on the approach you're using as I have not used it myself. However, here is an alternative approach which I have used with success:
https://graph.facebook.com/v2.5/act_xyz/insights?level=<yourLevel>&fields=ad_id,ad_name,impressions&time_range[since]=2016-02-15&time_range[until]=2016-02-16&limit=25
where <yourLevel>
can be one of: ad
, adset
, campaign
Also note that I am using straight up http requests in java which is why I show you the request itself. Hopefully you can extrapolate to your own solution.
Using the same endpoint you've shown in your question
act_0123456789/ads?fields=insights{ad_id,ad_name,impressions}
The way to specify a time range would be
act_0123456789/ads?fields=insights.time_range({"since":"2017-08-07","until":"2017-08-14"}){ad_id,ad_name,impressions}
(of course, those two dates are provided just as an example)
Easiest way of doing this is
act_0123456789?fields=ads{insights.time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1){impressions}}
Remove .time_increment(1) if you don't want day by day data
you can use {} for subfields like
act_0123456789?fields=campaigns{ads{name,insights,adcreatives{image_url}}}
you can use . and () for parameters like; always make sure you use you use fields only after parameters like this order .(){}
act_0123456789?fields=campaigns.limit(1).time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1).breakdowns(country){ads{name,insights.time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1).breakdowns(country),adcreatives{image_url}}}