Facebook Insights API предоставляет данные о результативности маркетинговых кампаний на Facebook. Чтобы гарантировать высокую производительность и стабильность системы, мы разработали защитные меры, обеспечивающие равномерное распределение ресурсов по всем приложениям. Все приведенные ниже правила могут быть изменены.
Ограничения объема данных на вызов необходимы для того, чтобы запрос не получал больше данных, чем может обработать система. Есть два вида ограничения данных:
Эти ограничения применяются как к синхронным, так и к асинхронным вызовам /insights
. Их превышение приводит к следующей ошибке:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id
или product_id
, а также слишком широкие диапазоны дат, например весь срок действия./insights
. Например, выполните сначала запрос на уровне аккаунта, чтобы получить список ID рекламных объектов низкого уровня, с параметрами level
и filtering
. В этом примере мы собираем данные по всем кампаниям, в которых зарегистрированы показы:curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ -d 'level=campaign' \ -d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0}]' \ 'https://graph.facebook.com/v2.7/act_<ACCOUNT_ID>/insights'
/<campaign_id>/insights
с каждым полученным значением для запроса и объединяем запросы статистики для этих кампаний в одном вызове:curl \ -F 'access_token=<ACCESS_TOKEN>' \ -F 'batch=[ \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_1>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_2>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_3>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ } \ ]' \ 'https://graph.facebook.com'
filtering
, чтобы получить статистику только для рекламных объектов с данными. В значении filtering
поля отделяются от объектов точкой. Обратите внимание: фильтрация по критериям STARTS_WITH
и CONTAIN
не влияет на сводные данные. В этом случае используйте оператор IN
. Вот пример запроса filtering
:curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
-d 'level=ad' \
-d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0},]' \
'https://graph.facebook.com/v21.0
/act_<ACCOUNT_ID>/insights'
date_preset
. Пользовательские диапазоны дат в нашей системе менее эффективны.Через 90 дней после выхода версии 3.3 максимальное количество обращений на уровне рекламного аккаунта для всех общедоступных версий изменится в соответствии с необходимым объемом вызовов API. Для каждого аккаунта ограничение вычисляется индивидуально, в зависимости от его уровня доступа к Marketing API и компании, которой принадлежит приложение. См. подробные сведения о доступе и аутентификации. Это изменение относится ко всем конечным точкам Ads Insights API: GET {adaccount_ID}/insights
, GET {campaign_ID}/insights
, GET {adset_ID}/insights
, GET {ad_ID}/insights
, POST {adaccount_ID}/insights
, POST {campaign_ID}/insights
, POST {adset_ID}/insights
, POST {ad_ID}/insights
.
Эти ограничения позволяют оптимизировать получение статистики. Мы измеряем частоту вызовов API, а также требуемые для них ресурсы. Мы допускаем фиксированную максимальную нагрузку на приложение в секунду. При превышении этого значения запросы не выполняются.
По заголовку HTTP x-fb-ads-insights-throttle
, который возвращается в каждом ответе API, можно понять, насколько ваше приложение приблизилось к ограничению, и оценить, насколько объемным может быть отдельный запрос. Для вызовов статистики также действуют ограничения по умолчанию на уровне рекламного аккаунта, указанные в заголовке HTTP x-ad-account-usage
. Подробные сведения см. в рекомендациях по Marketing API.
Когда приложение достигает ограничения, вызов возвращает сообщение об ошибке с error_code = 4, CodedException
. Следите за тем, чтобы не приближаться к пороговому значению. Если приложение достигнет его, от него будет проходить только определенная доля запросов в зависимости от самого запроса и частоты.
Ограничение количества обращений применяется ко всем приложениям, которые отправляют синхронные и асинхронные вызовы /insights
в любых сочетаниях. Действуют два основных ограничения: по приложению и по рекламному аккаунту.
Вот пример заголовка HTTP с накопленными баллами для приложения в виде процентной доли от пороговых значений:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }
Заголовок x-fb-ads-insights-throttle — это значение JSON, содержащее следующую информацию:
app_id_util_pct
— доля выделенного объема, использованная соответствующим app_id;acc_id_util_pct
— доля выделенного объема, использованная соответствующим account_id рекламного аккаунта.ads_api_access_tier
— уровни позволяют вашему приложению получить доступ к Marketing API. standard_access
задействует более низкое ограничение числа обращений.В период повышенной глобальной нагрузки на конечную точку /insights
система может регулировать запросы для защиты серверов. Это бывает нечасто и случается, если одновременно поступает слишком много запросов высокой сложности (большие временные диапазоны, сложные метрики и (или) большое количество ID рекламных объектов). Это приведет к следующей ошибке:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
В такие периоды рекомендуется сократить количество вызовов, подождать некоторое время и повторить запрос.
/insights
, оставляя между ними время на ожидание./insights
, когда до достижения ограничения по приложению или рекламному аккаунту остается совсем немного, добавьте механизм отсрочки.ads_api_access_tier
, который позволяет вам получить доступ к Marketing API. По умолчанию приложения находятся на уровне development_access
, а standard_access
позволяет уменьшить ограничение числа обращений. Чтобы увеличить ограничение числа обращений и перейти на стандартный уровень, вы можете подать заявку на расширенный доступа к функции Стандартный уровень доступа для управления рекламой.Мы упростили работу с асинхронными заданиями, и вы можете собирать статистику по множеству объектов и применять фильтры и сортировку.
POST
на конечную точку <AD_OBJECT>/insights
. В ответе вы получите id
для результата запуска отчета по рекламе.{ "report_run_id": 6023920149050, }
Срок действия report_run_id
составляет 30 дней.
async_status
. Опрашивайте это поле до тех пор, пока для async_status
не будет получено значение Job Completed
, а для async_percent_completion
— 100
. { "id": "6044775548468", "account_id": "1010035716096012", "time_ref": 1459788928, "time_completed": 1459788990, "async_status": "Job Completed", "async_percent_completion": 100 }
<AD_REPORT_RUN_ID>/insights
, чтобы получить конечный результат.{ "data": [ { "impressions": "9708", "date_start": "2009-03-28", "date_stop": "2016-04-04" }, { "impressions": "18841", "date_start": "2009-03-28", "date_stop": "2016-04-04" } ], "paging": { "cursors": { "before": "MAZDZD", "after": "MQZDZD" } } }
Это задание получает всю статистику для аккаунта и возвращает ID асинхронного задания:
curl \ -F 'level=campaign' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/<CAMPAIGN_ID>/insights curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000002 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000003/insights
Статус | Описание |
---|---|
| Задание не начато. |
| Задание начато, но ещё не выполняется. |
| Задание выполняется. |
| Задание успешно выполнено. |
| Не удалось выполнить задание. Проверьте запрос и повторите попытку. |
| Срок действия задания истек, задание пропущено. Снова отправьте задание и повторите попытку. |
Мы предлагаем конечную точку для экспорта <AD_REPORT_RUN_ID>
в локализованном удобном для чтения формате.
Примечание. Эта конечная точка не является частью API Graph разных версий, поэтому политика важных изменений Graph API на нее не распространяется. Скрипты и программы не должны опираться на этот формат результата, поскольку он может быть изменен без предупреждения.
curl -G \ -d 'report_run_id=<AD_REPORT_RUN_ID>' \ -d 'name=myreport' \ -d 'format=xls' \ 'https://www.facebook.com/ads/ads_insights/export_report/'
Имя | Описание |
---|---|
Строка | Имя скачанного файла. |
Тип enum{csv,xls} | Формат файла. |
Целое число | ID выполняемого отчета. |
Строка | Разрешения, которые предоставил пользователь, выполнивший вход. Они необходимы, чтобы экспортировать отчеты для другого пользователя. |