La API de estadísticas de Facebook proporciona datos sobre el rendimiento de las campañas de marketing de Facebook. Para proteger el rendimiento y la estabilidad del sistema, aplicamos medidas de protección que garantizan que los recursos del sistema se distribuyan de manera equitativa entre las apps. Todas las políticas que se describen a continuación están sujetas a cambios.
Usamos límites de datos por llamada para evitar que en una sola consulta se recupere una cantidad de datos superior a la que el sistema puede manejar. Hay dos tipos de límites de datos:
Estos límites se aplican a las llamadas /insights
tanto sincrónicas como asincrónicas, y se devuelve este error:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id
o product_id
, e intervalos de fechas más extensos, por ejemplo, de un largo plazo./insights
directamente con objetos de anuncio de nivel inferior para obtener datos detallados de ese nivel. Por ejemplo, usa primero una consulta de nivel de cuenta para obtener la lista de los identificadores de objeto de niveles más bajos con los parámetros level
y filtering
. En este ejemplo, recuperamos la información de todas las campañas que registraron impresiones: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
con los valores devueltos en relación con la consulta y agrupar por lotes las solicitudes de estadísticas de estas campañas en una sola llamada: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
solo para obtener estadísticas de objetos de anuncio con datos. El valor de campo especificado en filtering
usa la notación de PUNTO para indicar los campos contenidos en el objeto. Ten en cuenta que el filtrado con STARTS_WITH
y CONTAIN
no cambia los datos del resumen. En este caso, utiliza el operador IN
. Este es un ejemplo de una solicitud 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
. Los intervalos de fechas personalizados ofrecen un rendimiento menos eficaz en nuestro sistema.90 días después del lanzamiento de la versión 3.3 y con efecto en todas las versiones públicas, cambiamos la limitación de frecuencia en el nivel de la cuenta publicitaria para reflejar mejor el volumen de llamadas a la API necesarias. Calculamos el cupo de la limitación de frecuencia en tu nivel de acceso a la API de marketing y la empresa que es dueña de la app. Consulta Acceso y autenticación. Este cambio se aplica a todos los puntos de conexión de la API de estadísticas de anuncios: 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
y POST {ad_ID}/insights
.
Usamos límites de carga para ofrecer una experiencia de informes óptima. Medimos tanto la frecuencia de las llamadas de API como los recursos que necesiten. Admitimos un límite de carga fijo por app por segundo. Si se supera ese límite, las solicitudes fallan.
Controla el encabezado de HTTP x-fb-ads-insights-throttle
en cada respuesta de la API para ver qué tan cerca de su límite está tu app y para calcular el peso estimado de una consulta concreta. Las llamadas de estadísticas también están sujetas a los límites de la cuenta publicitaria predeterminados que se muestran en el encabezado de HTTP x-ad-account-usage
. Puedes obtener más detalles en API de marketing, Prácticas recomendadas
Cuando una app alcanza su límite, la llamada recibe una respuesta de error con error_code = 4, CodedException
. Procura mantenerte lejos del límite. Si una app alcanza sus límites permitidos, solo se procesa un porcentaje determinado de solicitudes, dependiendo de la consulta y la frecuencia.
Aplicamos la limitación de frecuencia a cada app que envíe llamadas /insights
sincrónicas y asincrónicas combinadas. Los dos límites de parámetros principales se cuentan a efectos de cada app y cada cuenta publicitaria.
Este es un ejemplo de encabezado de HTTP con la puntuación acumulada de una app como porcentaje de los límites:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }
El encabezado "X-FB-Ads-Insights-Throttle" es un valor JSON, que contiene la siguiente información:
app_id_util_pct
: el porcentaje de la capacidad asignada que consumió el app_id asociado.acc_id_util_pct
: el porcentaje de la capacidad asignada que consumió el account_id del anuncio asociado.ads_api_access_tier
: los niveles permiten que tu app acceda a la API de marketing. standard_access
logra una limitación de frecuencia menor.Durante los períodos de carga global elevada en el punto de conexión /insights
, el sistema puede acelerar las solicitudes con el fin de proteger el backend. Esto puede ocurrir en casos poco habituales, cuando llegan demasiadas consultas de alta complejidad al mismo tiempo (grandes intervalos de tiempo, métricas complejas y/o alto número de identificadores de objetos publicitarios). El error se verá de la siguiente manera:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
Durante estos períodos, se aconseja reducir las llamadas, esperar un momento y volver a realizar la consulta.
/insights
mediante la asignación de una frecuencia con tiempo de espera en tu trabajo./insights
o de ponerlas en pausa cuando te aproximes al 100% de tu capacidad en tu app o en tu cuenta publicitaria.ads_api_access_tier
que te permite acceder a la API de marketing. De modo predeterminado, las apps se ubican en el nivel development_access
, y el standard_access
permite lograr una limitación de frecuencia menor. Para obtener un límite de frecuencia más alto y llegar al nivel estándar, puedes solicitar el "acceso avanzado" a la función Acceso estándar a administración de anuncios.Busca estadísticas en muchos objetos, filtra los resultados y ordénalos. El flujo de trabajo asincrónico ahora es más sencillo:
POST
al punto de conexión <AD_OBJECT>/insights
y responderá con el id
para la ejecución del informe publicitario.{ "report_run_id": 6023920149050, }
No guardes el report_run_id
para usarlo a largo plazo, ya que caducará después de 30 días.
async_status
. Consulta este campo hasta que async_status
sea Job Completed
y async_percent_completion
sea 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
para obtener el resultado final.{ "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" } } }
Este trabajo obtiene todas las estadísticas de la cuenta y devuelve un identificador de trabajo asincrónico:
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
Estado | Descripción |
---|---|
| El trabajo aún no se inició. |
| El trabajo se inició, pero aún no se ejecutó. |
| El trabajo ya está en ejecución. |
| El trabajo se completó con éxito. |
| Ocurrió un error al ejecutar el trabajo. Revisa la consulta y vuelve a intentarlo. |
| El trabajo caducó y se omitió. Vuelve a enviarlo e inténtalo nuevamente. |
Proporcionamos un práctico extremo para exportar <AD_REPORT_RUN_ID>
a un formato localizado y fácil de leer.
Nota: Este extremo no forma parte de nuestra versión de la API Graph y, por lo tanto, no se incluye en la política de cambios radicales. Los scripts y los programas no deben depender del formato del resultado, ya que este puede cambiar sin previo aviso.
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/'
Nombre | Descripción |
---|---|
Cadena | Nombre del archivo descargado |
Enumeración {csv,xls} | Formato del archivo |
Número entero | Identificador del informe que se va a ejecutar |
Cadena | Permisos que otorgó el usuario con la sesión iniciada. Proporciona esta información para exportar los informes de otro usuario. |