A partire dal 10 giugno 2025, per migliorare le prestazioni complessive dell'API, reach non verrà più restituito per le query che applicano breakdowns e usano start_date più vecchie di 13 mesi. (Nelle risposte a tali richieste, verranno omessi reach e campi correlati, come frequency e cpp).
Per applicare breakdowns e recuperare i valori reach più vecchi di 13 mesi, puoi usare processi asincroni per effettuare fino a 10 richieste per account pubblicitario al giorno. Controlla l'intestazione x-Fb-Ads-Insights-Reach-Throttle per monitorare quanto manca al raggiungimento del rate limit e tieni presente che, una volta superato, le richieste ometteranno reach e i campi correlati.
Quando la soglia del rate limit per i dettagli relativi alla copertura viene superata, viene restituito il seguente messaggio di errore:
Reach-related metric breakdowns are unavailable due to rate limit threshold.
L'API Insights di Facebook fornisce i dati sulle prestazioni delle campagne di marketing di Facebook. Per salvaguardare le prestazioni e la stabilità del sistema, abbiamo messo in campo misure protettive per distribuire equamente le risorse di sistema tra le app. Tutte le normative descritte di seguito sono soggette a variazioni.
Abbiamo previsto limiti ai dati per chiamata, allo scopo di evitare che le query recuperino una quantità di dati superiore alla capacità di gestione del sistema. Esistono 2 tipi di limiti ai dati:
Questi limiti valgono per le chiamate a /insights sincrone e asincrone, per cui restituiamo un errore:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id o product_id, e intervalli di date molto ampi come il lifetime value./insights direttamente con gli oggetti pubblicitari di livello inferiore per recuperare dati granulari per il livello interessato. Ad esempio, usa prima la query a livello di account per recuperare la lista di ID oggetto di livello inferiore con parametri level e filtering. In questo esempio, recuperiamo tutte le campagne che hanno registrato impression: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 ogni valore restituito per effettuare query e raggruppare in batch le richieste di dati statistici per tali campagne in un'unica chiamata:curl \
-F 'access_token=<ACCESS_TOKEN>' \
-F 'batch=[ \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_1>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
}, \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_2>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
}, \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_3>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
} \
]' \
'https://graph.facebook.com'
filtering solo per recuperare dati statistici per gli oggetti pubblicitari che contengono dati. Il valore del campo specificato in filtering usa la notazione DOT per denotare i campi sotto l'oggetto. L'applicazione del filtro con STARTS_WITH e CONTAIN non modifica i dati di riepilogo. In questo caso, usa l'operatore IN. Ecco un esempio di richiesta 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/v24.0/act_<ACCOUNT_ID>/insights'date_preset. Gli intervalli di date personalizzati vengono eseguiti con minore efficienza nel nostro sistema.Novanta giorni dopo il rilascio della versione 3.3 e valido per tutte le versioni pubbliche, il rate limiting al livello di account pubblicitario viene modificato per riflettere meglio il volume di chiamate API necessario. Viene calcolata la quota di rate limiting sul livello di accesso dell'API Marketing e sull'azienda proprietaria dell'app. Fai riferimento ad accesso e autenticazione. Questa modifica si applica a tutti gli endpoint dell'API Ads Insights: 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.
Limitiamo il carico per garantire un'esperienza ottimale in termini di report. Misuriamo le chiamate API per la frequenza e le risorse necessarie. Consentiamo un limite fisso al carico per app al secondo. Quando superi tale limite, le tue richieste non vanno a buon fine.
Controlla l'intestazione HTTP x-fb-ads-insights-throttle in ogni risposta API per sapere quanto la tua app è vicina al suo limite e stimare quanto può essere pesante una particolare query. Le chiamate per i dati statistici sono inoltre soggette ai limiti dell'account pubblicitario predefinito mostrati nell'intestazione HTTP x-ad-account-usage. Per maggiori dettagli, consulta le best practice per l'API Marketing.
Quando l'app raggiunge il limite, la chiamata riceve una risposta di errore con error_code = 4, CodedException. Dovresti rimanere ben sotto il limite. Se l'app raggiunge i limiti consentiti, solo una determinata percentuale di richieste verrà completata, in base alla query e alla frequenza.
Il rate limiting viene applicato a tutte le app che inviano chiamate /insights sincrone e asincrone combinate. I due parametri principali previsti per i limiti definiti fanno riferimento ad app e account pubblicitario.
Ecco un esempio dell'intestazione HTTP con un punteggio maturato di un'app come percentuale dei limiti:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }L'intestazione "x-fb-ads-insights-throttle" è un valore JSON che contiene le informazioni seguenti:
app_id_util_pct: la percentuale di capacità allocata per il campo app_id associato è stata esaurita.acc_id_util_pct: la percentuale di capacità allocata per il campo ad account_id associato è stata esaurita.ads_api_access_tier: i livelli consentono alla tua app di accedere all'API Marketing. standard_access consente un rate limiting inferiore.Durante i periodi di carico globale elevato sull'endpoint /insights, il sistema può eseguire il throttling delle richieste per proteggere il backend. Questo può verificarsi in rari casi in cui si ricevono contemporaneamente troppe richieste di elevata complessità (estesi intervalli temporali, metriche complesse e/o un numero elevato di ID dell'oggetto pubblicitario. Questo genererà un errore simile al seguente:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
In questi periodi, si consiglia di ridurre le chiamate, attendere un breve periodo e ripetere la query.
/insights, regolandone la distribuzione in base ai tempi di attesa del tuo processo./insights quando stai per raggiungere la soglia massima utile per la tua app o l'account pubblicitario.ads_api_access_tier che ti consente di accedere all'API Marketing. Per impostazione predefinita, le app sono nel livello development_access e standard_access consente un rate limiting inferiore. Per ottenere un rate limiting più alto e arrivare al livello standard, puoi richiedere l'"accesso avanzato" alla funzione Accesso standard a Gestione inserzioni.Recupera le statistiche su diversi oggetti e applica filtri e criteri di ordinamento. Abbiamo semplificato il flusso di lavoro asincrono:
POST all'endpoint <AD_OBJECT>/insights, che risponde con l'id dell'esecuzione di un report pubblicitario.{
"report_run_id": 6023920149050,
}
Non memorizzare report_run_id per un uso di lunga durata, poiché scade dopo 30 giorni.
async_status. Esegui il polling di questo campo finché async_status non corrisponde a Job Completed e async_percent_completion non corrisponde a 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 per recuperare il risultato finale.{
"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"
}
}
}
Il processo acquisisce tutte le statistiche relative all'account e restituisce un ID processo asincrono:
curl \ -F 'level=campaign' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/<CAMPAIGN_ID>/insights curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/1000002 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/1000003/insights
| Stato | Descrizione |
|---|---|
| Il processo non è stato ancora avviato. |
| Il processo è stato avviato ma l'esecuzione è in sospeso. |
| L'esecuzione del processo è iniziata. |
| Il processo è stato completato correttamente. |
| Il processo non è riuscito. Riesamina la query e riprova. |
| Il processo è scaduto ed è stato saltato. Invia di nuovo il processo e riprova. |
Forniamo un endpoint di comodità per l'esportazione di <AD_REPORT_RUN_ID> in un formato leggibile localizzato.
Nota: questo endpoint non fa parte della nostra API Graph con versione, pertanto non è conforme alla sua normativa sulle modifiche sostanziali. Gli script e i programmi non devono dipendere dal formato del risultato poiché quest'ultimo può cambiare in modo imprevisto.
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/'
| Nome | Descrizione |
|---|---|
stringa | Nome del file scaricato |
enum{csv,xls} | Formato del file |
intero | ID del report da eseguire |
stringa | Autorizzazioni concesse dall'utente che ha effettuato l'accesso. Forniscile per esportare i report per un altro utente. |