Insights¶
The Insights edge returns delivery and conversion metrics for an ad account or for any object below it. It is the only way to read performance data. Every object exposes it:
Verify against Ads Manager
The same report is available on screen at ads-manager.huydata.com with the platform's own column names; its Totals row is the reference for your pipeline. See Ads Manager.
| Endpoint | Default level |
Scope |
|---|---|---|
GET /act_<account_id>/insights |
account |
Everything in the account. Use level to break it down. |
GET /<campaign_id>/insights |
campaign |
One campaign. |
GET /<adset_id>/insights |
adset |
One ad set. |
GET /<ad_id>/insights |
ad |
One ad. |
For a daily pull, the account endpoint with level=ad and time_increment=1 is the
most efficient: one paginated request per account per day range.
How a response is shaped¶
{
"data": [
{
"campaign_id": "12020064400866904",
"campaign_name": "DMS_FB_AND_T1_INSTALL_202604",
"spend": "854.51",
"impressions": "81675",
"clicks": "556",
"actions": [
{ "action_type": "video_view", "value": "29369" },
{ "action_type": "link_click", "value": "556" },
{ "action_type": "mobile_app_install", "value": "127" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "10" },
{ "action_type": "omni_purchase", "value": "10" }
],
"date_start": "2026-10-26",
"date_stop": "2026-10-26"
},
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjI" },
"next": "https://graph.huydata.com/v21.0/act_199454714457591/insights?...&after=b2Zmc2V0OjI"
}
}
Each element of data is one row: one object at the requested level, one time
bucket (date_start/date_stop), and, if breakdowns=country was used, one country.
Four rules apply to every row:
- All metric values are strings, including counts (
"impressions": "81675") and money ("spend": "854.51"). Convert them yourself. date_startanddate_stopare always present, even if you did not request them.- Rows with no delivery are not returned. If an ad did not spend on a day, or did not spend in a country, there is no row for it. The absence of a row means zero.
- Conversion metrics are arrays of
{ "action_type", "value" }, not flat numbers. See Actions and action values.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
access_token |
string | yes | Personal token (or Authorization: Bearer). |
level |
string | no | Aggregation level: account, campaign, adset or ad. Default depends on the endpoint (see table above). |
fields |
string | no | Comma-separated list of dimensions and metrics (see below). Default impressions,spend,clicks,actions. |
time_range |
JSON object | no | {"since":"YYYY-MM-DD","until":"YYYY-MM-DD"}, both inclusive, UTC. Must be URL-encoded. Takes precedence over date_preset. |
date_preset |
string | no | Relative range: yesterday, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, this_month, last_month, maximum, today. See below. |
time_increment |
string | no | all_days (default): one bucket for the whole range. 1: one bucket per day. Any integer 1–90: buckets of N days. monthly: calendar months. |
breakdowns |
string | no | Only country is supported. Adds a country key to each row and splits rows by country. |
filtering |
JSON array | no | [{"field":..., "operator":..., "value":...}]. See Filtering. Must be URL-encoded. |
limit |
int | no | Rows per page. Default 25, maximum 500 (larger values are clamped to 500). |
after |
string | no | Cursor from a previous page. See Paging. |
If neither time_range nor date_preset is given, the range is the last 30 days
ending yesterday.
time_range¶
A JSON object with since and until in YYYY-MM-DD. Both are inclusive. With curl,
pass it through --data-urlencode so the braces and quotes are encoded:
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
--data-urlencode 'time_range={"since":"2026-10-25","until":"2026-10-27"}'
Days that are not yet available (today and the future) are silently dropped from the
range; days before 2026-06-30 (the start of the history) likewise. A range that is
entirely unavailable returns {"data": []}. A range with until before since is
error 100.
date_preset¶
| Preset | Range (today = T, in UTC) |
|---|---|
yesterday |
T-1 |
last_3d |
T-3 .. T-1 |
last_7d |
T-7 .. T-1 |
last_14d, last_28d, last_30d, last_90d |
T-N .. T-1 |
this_month |
first day of the current month .. T-1 |
last_month |
the whole previous calendar month |
maximum |
2026-06-30 .. T-1 |
today |
T. Always returns no rows, because today's data is not yet available. |
time_increment¶
| Value | Result |
|---|---|
all_days (default) |
One row per object covering the whole range. date_start = since, date_stop = until. Use this for totals. |
1 |
One row per object per day. date_start = date_stop = the report date. Use this for a daily pull. |
7, 14, ... (1–90) |
Buckets of N days counted from since. The last bucket may be shorter. |
monthly |
Calendar months, clipped to the range. |
The default is all_days, so a request without time_increment over a 30-day range
gives you a single aggregated row, not 30 daily rows.
fields¶
Fields fall into two groups. Dimensions describe the row, metrics measure it.
Dimensions
| Field | Allowed at level | Description |
|---|---|---|
account_id |
all | Numeric account id (no act_). |
account_name |
all | Account name, e.g. Dragon Merge Saga (Android). |
campaign_id, campaign_name |
campaign, adset, ad |
Parent campaign. |
adset_id, adset_name |
adset, ad |
Parent ad set. |
ad_id, ad_name |
ad |
The ad. |
objective |
all | Always OUTCOME_APP_PROMOTION. |
date_start, date_stop |
all | Bucket boundaries; always returned anyway. |
Requesting a dimension that is finer than the level (for example ad_name with
level=campaign) is error 100:
(#100) ad_name is not available at this level; raise the level parameter.
Metrics
| Field | Type | Description |
|---|---|---|
spend |
string, 2 decimals | Amount spent in USD. "854.51". |
impressions |
string, integer | Times the ad was shown. |
reach |
string, integer | Distinct people reached. |
frequency |
string, 6 decimals | impressions / reach. |
clicks |
string, integer | All clicks. Equals the link_click action. |
ctr |
string, 6 decimals | Click-through rate in percent: clicks / impressions * 100. "0.680747" means 0.68 %. |
cpc |
string, 6 decimals | spend / clicks. |
cpm |
string, 6 decimals | spend / impressions * 1000. |
actions |
array | Conversion counts by action_type. See below. |
action_values |
array | Conversion value (USD) by action_type. See below. |
cost_per_action_type |
array | spend / actions by action_type. See below. |
purchase_roas |
array | purchase value / spend as omni_purchase. See below. |
video_play_actions |
array | [{ "action_type": "video_view", "value": "..." }], or [] for image ads. |
Requesting a name that is neither a dimension nor a metric (for example installs) is
error 100:
(#100) installs is not valid for fields param. please check ... for all valid values.
Actions and action values¶
Conversions are not separate columns. They are entries in the actions array, keyed by
action_type. The same keys are used in action_values, cost_per_action_type and
purchase_roas.
action_type |
In actions |
In action_values |
In cost_per_action_type |
Meaning |
|---|---|---|---|---|
video_view |
count (omitted for image ads) | — | — | Video plays. |
link_click |
count, always present | — | always present | Clicks. Same number as the clicks metric. |
mobile_app_install |
count, always present | — | present when > 0 | App installs. |
app_custom_event.fb_mobile_purchase |
count, present when > 0 | USD, present when > 0 | present when > 0 | In-app purchases and their value. |
omni_purchase |
count, present when > 0 | USD, present when > 0 | — | Duplicate of fb_mobile_purchase. Same count, same value. Do not add the two together. |
Practical reading rules:
- Installs = the
mobile_app_installentry ofactions. Missing entry means 0 (it is in fact always present, possibly as"0"). - Purchases = the
app_custom_event.fb_mobile_purchaseentry ofactions. Missing means - When it is present,
omni_purchaseis present with the identical value: pick one of the two. - Purchase value = the
app_custom_event.fb_mobile_purchaseentry ofaction_values. When there are no purchases,action_valuesis[]. purchase_roasis[{ "action_type": "omni_purchase", "value": "0.316134" }], i.e. purchase value divided by spend;[]when there are no purchases. A value of"0.316134"is a 31.6 % return on ad spend.cost_per_action_typegivesspend / countforlink_click(always),mobile_app_installandapp_custom_event.fb_mobile_purchase(when the count is > 0).
Example of a campaign-level row with every metric requested:
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "level=campaign" \
-d "fields=campaign_id,campaign_name,objective,spend,impressions,reach,frequency,clicks,ctr,cpc,cpm,actions,action_values,cost_per_action_type,purchase_roas,video_play_actions" \
--data-urlencode 'time_range={"since":"2026-10-26","until":"2026-10-26"}' \
-d "time_increment=1"
{
"data": [
{
"campaign_id": "12020064400866904",
"campaign_name": "DMS_FB_AND_T1_INSTALL_202604",
"objective": "OUTCOME_APP_PROMOTION",
"spend": "854.51",
"impressions": "81675",
"reach": "57463",
"frequency": "1.421349",
"clicks": "556",
"ctr": "0.680747",
"cpc": "1.536888",
"cpm": "10.462320",
"actions": [
{ "action_type": "video_view", "value": "29369" },
{ "action_type": "link_click", "value": "556" },
{ "action_type": "mobile_app_install", "value": "127" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "10" },
{ "action_type": "omni_purchase", "value": "10" }
],
"action_values": [
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "270.14" },
{ "action_type": "omni_purchase", "value": "270.14" }
],
"cost_per_action_type": [
{ "action_type": "link_click", "value": "1.536888" },
{ "action_type": "mobile_app_install", "value": "6.728425" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "85.451000" }
],
"purchase_roas": [
{ "action_type": "omni_purchase", "value": "0.316134" }
],
"video_play_actions": [
{ "action_type": "video_view", "value": "29369" }
],
"date_start": "2026-10-26",
"date_stop": "2026-10-26"
},
{
"campaign_id": "12025898431825415",
"campaign_name": "DMS_FB_AND_T1_VALUE_202607",
"objective": "OUTCOME_APP_PROMOTION",
"spend": "1830.18",
"impressions": "162767",
"reach": "117582",
"frequency": "1.384285",
"clicks": "1035",
"ctr": "0.635878",
"cpc": "1.768290",
"cpm": "11.244171",
"actions": [
{ "action_type": "video_view", "value": "53544" },
{ "action_type": "link_click", "value": "1035" },
{ "action_type": "mobile_app_install", "value": "151" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "16" },
{ "action_type": "omni_purchase", "value": "16" }
],
"action_values": [
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "550.78" },
{ "action_type": "omni_purchase", "value": "550.78" }
],
"cost_per_action_type": [
{ "action_type": "link_click", "value": "1.768290" },
{ "action_type": "mobile_app_install", "value": "12.120397" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "114.386250" }
],
"purchase_roas": [
{ "action_type": "omni_purchase", "value": "0.300943" }
],
"video_play_actions": [
{ "action_type": "video_view", "value": "53544" }
],
"date_start": "2026-10-26",
"date_stop": "2026-10-26"
},
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjQ" }
}
}
Examples¶
Account totals, default parameters¶
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN"
Defaults: level=account, fields=impressions,spend,clicks,actions, last 30 days,
time_increment=all_days. One row.
{
"data": [
{
"impressions": "17299780",
"spend": "159788.39",
"clicks": "115457",
"actions": [
{ "action_type": "video_view", "value": "5165172" },
{ "action_type": "link_click", "value": "115457" },
{ "action_type": "mobile_app_install", "value": "21315" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "1486" },
{ "action_type": "omni_purchase", "value": "1486" }
],
"date_start": "2026-09-30",
"date_stop": "2026-10-29"
}
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjE" }
}
}
Account level, one row per day¶
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "level=account" \
-d "fields=account_id,account_name,spend,impressions,clicks,actions" \
--data-urlencode 'time_range={"since":"2026-10-25","until":"2026-10-27"}' \
-d "time_increment=1"
{
"data": [
{
"account_id": "199454714457591",
"account_name": "Dragon Merge Saga (Android)",
"spend": "6187.32",
"impressions": "669111",
"clicks": "4324",
"actions": [
{ "action_type": "video_view", "value": "199847" },
{ "action_type": "link_click", "value": "4324" },
{ "action_type": "mobile_app_install", "value": "778" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "58" },
{ "action_type": "omni_purchase", "value": "58" }
],
"date_start": "2026-10-25",
"date_stop": "2026-10-25"
},
{
"account_id": "199454714457591",
"account_name": "Dragon Merge Saga (Android)",
"spend": "5025.29",
"impressions": "541763",
"clicks": "3585",
"actions": [
{ "action_type": "video_view", "value": "168431" },
{ "action_type": "link_click", "value": "3585" },
{ "action_type": "mobile_app_install", "value": "658" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "49" },
{ "action_type": "omni_purchase", "value": "49" }
],
"date_start": "2026-10-26",
"date_stop": "2026-10-26"
},
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjM" }
}
}
Ad level, daily, broken down by country¶
This is the shape most daily pulls want. Note the extra country key, and that the same
ad appears once per country it delivered in.
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "level=ad" \
-d "fields=campaign_name,adset_name,ad_id,ad_name,spend,impressions,clicks,actions,action_values" \
-d "breakdowns=country" \
--data-urlencode 'time_range={"since":"2026-10-27","until":"2026-10-27"}' \
-d "time_increment=1" \
-d "limit=500"
{
"data": [
{
"campaign_name": "DMS_FB_AND_T1_INSTALL_202604",
"adset_name": "T1_Interest_Gaming_AU-CA-DE",
"ad_id": "12022015737750702",
"ad_name": "VID_UpgradeLoop_v3",
"spend": "46.47",
"impressions": "5175",
"clicks": "35",
"actions": [
{ "action_type": "video_view", "value": "2153" },
{ "action_type": "link_click", "value": "35" },
{ "action_type": "mobile_app_install", "value": "6" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "1" },
{ "action_type": "omni_purchase", "value": "1" }
],
"action_values": [
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "32.15" },
{ "action_type": "omni_purchase", "value": "32.15" }
],
"country": "AU",
"date_start": "2026-10-27",
"date_stop": "2026-10-27"
},
{
"campaign_name": "DMS_FB_AND_T1_INSTALL_202604",
"adset_name": "T1_Interest_Gaming_AU-CA-DE",
"ad_id": "12022015737750702",
"ad_name": "VID_UpgradeLoop_v3",
"spend": "49.10",
"impressions": "4470",
"clicks": "30",
"actions": [
{ "action_type": "video_view", "value": "2081" },
{ "action_type": "link_click", "value": "30" },
{ "action_type": "mobile_app_install", "value": "8" }
],
"action_values": [],
"country": "CA",
"date_start": "2026-10-27",
"date_stop": "2026-10-27"
},
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0Ojgy" }
}
}
In the second row there were no purchases in Canada, so actions has no purchase
entries and action_values is []. The whole day is 82 rows, so one page of 500 holds
it and there is no paging.next; the same request for a 7-day range returns a full first
page of 500 rows plus paging.next.
One campaign over a preset range¶
curl -G "https://graph.huydata.com/v21.0/12020064400866904/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "fields=campaign_name,spend,impressions,clicks,actions" \
-d "date_preset=last_7d"
{
"data": [
{
"campaign_name": "DMS_FB_AND_T1_INSTALL_202604",
"spend": "6470.65",
"impressions": "616538",
"clicks": "4123",
"actions": [
{ "action_type": "video_view", "value": "223712" },
{ "action_type": "link_click", "value": "4123" },
{ "action_type": "mobile_app_install", "value": "934" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "52" },
{ "action_type": "omni_purchase", "value": "52" }
],
"date_start": "2026-10-23",
"date_stop": "2026-10-29"
}
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjE" }
}
}
Monthly buckets¶
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "fields=spend,impressions" \
--data-urlencode 'time_range={"since":"2026-09-15","until":"2026-10-27"}' \
-d "time_increment=monthly"
{
"data": [
{ "spend": "79939.49", "impressions": "8742063", "date_start": "2026-09-15", "date_stop": "2026-09-30" },
{ "spend": "144193.18", "impressions": "15608896", "date_start": "2026-10-01", "date_stop": "2026-10-27" }
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjI" }
}
}
Filtering¶
filtering is a JSON array of rules. All rules must match (logical AND). Filtering is
applied before aggregation, so you can filter on country even without
breakdowns=country, and on ad.id even at level=campaign.
field |
Matches |
|---|---|
campaign.id, adset.id, ad.id |
Object ids. |
campaign.name, adset.name, ad.name |
Object names. |
country |
ISO country code. |
operator |
value |
Meaning |
|---|---|---|
IN |
array (or scalar) | Field is one of the values. |
NOT_IN |
array (or scalar) | Field is none of the values. |
EQUAL |
scalar | Exact match. |
NOT_EQUAL |
scalar | Not equal. |
CONTAIN |
string | Field contains the substring. Useful on names, e.g. "_VALUE_". |
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "level=adset" \
-d "fields=adset_id,adset_name,spend,impressions,actions" \
--data-urlencode 'filtering=[{"field":"campaign.id","operator":"IN","value":["12020064400866904"]}]' \
--data-urlencode 'time_range={"since":"2026-10-27","until":"2026-10-27"}'
{
"data": [
{
"adset_id": "12024481725776212",
"adset_name": "T1_Interest_Gaming_AU-CA-DE",
"spend": "445.61",
"impressions": "45976",
"actions": [
{ "action_type": "video_view", "value": "18504" },
{ "action_type": "link_click", "value": "330" },
{ "action_type": "mobile_app_install", "value": "75" },
{ "action_type": "app_custom_event.fb_mobile_purchase", "value": "2" },
{ "action_type": "omni_purchase", "value": "2" }
],
"date_start": "2026-10-27",
"date_stop": "2026-10-27"
},
{
"adset_id": "12029269518058219",
"adset_name": "T1_Broad_AU-CA-DE-GB-US",
"spend": "246.58",
"impressions": "21631",
"actions": [
{ "action_type": "video_view", "value": "9208" },
{ "action_type": "link_click", "value": "140" },
{ "action_type": "mobile_app_install", "value": "27" }
],
"date_start": "2026-10-27",
"date_stop": "2026-10-27"
},
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjM" }
}
}
Country filter combined with a country breakdown:
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/insights" \
-d "access_token=$META_ACCESS_TOKEN" \
-d "level=campaign" \
-d "fields=campaign_name,spend,impressions" \
-d "breakdowns=country" \
--data-urlencode 'filtering=[{"field":"country","operator":"IN","value":["US","GB"]}]' \
--data-urlencode 'time_range={"since":"2026-10-27","until":"2026-10-27"}'
{
"data": [
{ "campaign_name": "DMS_FB_AND_T1_INSTALL_202604", "spend": "45.46", "impressions": "3999", "country": "GB", "date_start": "2026-10-27", "date_stop": "2026-10-27" },
{ "campaign_name": "DMS_FB_AND_T1_INSTALL_202604", "spend": "266.44", "impressions": "21787", "country": "US", "date_start": "2026-10-27", "date_stop": "2026-10-27" },
"..."
],
"paging": {
"cursors": { "before": "b2Zmc2V0OjA", "after": "b2Zmc2V0OjI" },
"next": "https://graph.huydata.com/v21.0/act_199454714457591/insights?...&after=b2Zmc2V0OjI"
}
}
Row ordering¶
Rows are sorted by date_start, then by object id(s), then by country. Within a page
the order is stable, and paging walks the full sorted list, so a daily pull that follows
paging.next to the end sees every row exactly once.
Data freshness and the attribution window¶
Two timing rules determine when you should pull and what you should re-pull.
A report date becomes available at 00:10 UTC of the next day¶
Metrics are reported per UTC calendar day. The row for report date D exists from 00:10 UTC on D+1. Before that, requests covering D return no rows for D (the day is simply dropped from the range, no error). So:
- The latest report date you can read today is yesterday (D-1).
date_preset=todayalways returns{"data": []}.- Schedule a daily pull after 00:10 UTC and request yesterday.
Installs and purchases keep growing for 3 days¶
Spend, impressions, reach, clicks and video views are final when the day is first published. Conversions are not: installs are attributed to the ad click that caused them, and a user may install or buy up to several days after clicking. The API therefore keeps adding attributed installs and purchase value to a report date until the date is 3 days old. After that the row is frozen.
Here is the same report date, 2026-10-24, read on four consecutive days
(level=account, time_range = that single day):
| Read on (UTC) | Age of the date | spend |
impressions |
mobile_app_install |
fb_mobile_purchase count |
fb_mobile_purchase value |
|---|---|---|---|---|---|---|
| 2026-10-25 | 1 day | 5479.68 | 612987 | 661 | 43 | 1045.68 |
| 2026-10-26 | 2 days | 5479.68 | 612987 | 717 | 46 | 1304.54 |
| 2026-10-27 | 3 days | 5479.68 | 612987 | 740 | 48 | 1395.41 |
| 2026-10-28 | 4 days | 5479.68 | 612987 | 740 | 48 | 1395.41 |
Installs and purchase count both rose by about 12 % between the first and the final
reading; purchase value by about 33 %. cost_per_action_type and purchase_roas move
accordingly, since they are derived from these numbers. At row level (one ad, one
country, one day) the change is typically 0 or 1 install or purchase, which is why you
must replace whole rows rather than compare single cells.
What this means for a daily pull. Pulling only yesterday is not enough. Every day,
request the last 3 report dates (date_preset=last_3d with time_increment=1, or
an explicit time_range from D-3 to D-1) and replace what you previously stored for
those dates with the new values. Rows for D-3 are final; D-2 and D-1 will still change.
Any report date 3 or more days old never changes again and does not need to be re-pulled.
Errors specific to insights¶
All are HTTP 400, type OAuthException, code 100.
| Message | Cause |
|---|---|
(#100) Invalid parameter: level must be one of account, campaign, adset, ad |
Bad level. |
(#100) installs is not valid for fields param. please check https://ads-docs.huydata.com/meta/insights/ for all valid values |
Unknown name in fields. Installs live inside actions. |
(#100) ad_name is not available at this level; raise the level parameter |
A dimension finer than level. |
(#100) time_range must be a JSON object with 'since' and 'until' in YYYY-MM-DD |
time_range is not valid JSON, or not URL-encoded, or dates are malformed. |
(#100) time_range until must be on or after since |
Reversed range. |
(#100) Invalid parameter: date_preset 'last_week' is not supported |
Unknown preset. |
(#100) time_increment must be an integer between 1 and 90, 'monthly' or 'all_days' |
Bad time_increment. |
(#100) Invalid parameter: breakdowns value 'age' is not supported (only country) |
Only country is available. |
(#100) filtering must be a JSON array of {field, operator, value} |
filtering is not a JSON array. |
(#100) Filtering field 'xyz' is not supported / Filtering operator 'xyz' is not supported |
Unsupported filter field or operator. |
{
"error": {
"message": "(#100) time_range must be a JSON object with 'since' and 'until' in YYYY-MM-DD",
"type": "OAuthException",
"code": 100,
"fbtrace_id": "AJBONhJdyY0v1p5rEw4X0"
}
}