Vai al contenuto principale
Ogni giorno, molte migliaia di sviluppatori inviano richieste alla X API. Per gestire l’enorme volume di queste richieste, vengono imposti limiti al numero di richieste che è possibile effettuare. Questi limiti contribuiscono a garantire un’API affidabile e scalabile su cui la nostra community di sviluppatori fa affidamento. Il numero massimo di richieste consentite si basa su un intervallo di tempo, in genere un periodo o una finestra temporale specifica. L’intervallo più comune è di quindici minuti. Ad esempio, un endpoint con un limite di 900 richieste per 15 minuti consente fino a 900 richieste in qualsiasi intervallo di 15 minuti. I limiti di velocità dipendono dal metodo di autenticazione. Ad esempio, se si utilizza il Contesto utente OAuth 1.0a, ogni set di Access Tokens degli utenti ha il proprio limite di velocità per periodo. In alternativa, se si utilizza l’OAuth 2.0 Bearer Token, la tua App avrà un proprio limite separato per intervallo di tempo. Quando questi limiti vengono superati, viene restituito un errore.

Sommario

Limiti di velocità di X API v2

La tabella seguente elenca i limiti di velocità per ciascun piano a pagamento di X API. Questi limiti sono disponibili anche nella sezione Prodotti del developer portal.
EndpointLimite Pro Limite Basic Limite Free
Tweet
DELETE /2/tweets/:id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
17 richieste / 24 ore
PER UTENTE
17 richieste / 24 ore
PER APP
DELETE /2/users/:id/likes/:tweet_id50 richieste / 15 min
PER UTENTE
100 richieste / 24 ore
PER UTENTE
1 richiesta / 15 min
PER UTENTE
DELETE /2/users/:id/retweets/:tweet_id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
GET /2/tweets900 richieste/15 min
PER UTENTE
450 richieste/15 min
PER APP
15 richieste/15 min
PER UTENTE
15 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/tweets/:id900 richieste/15 min
PER UTENTE
450 richieste/15 min
PER APP
15 richieste/15 min
PER UTENTE
15 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/tweets/:id/liking_users75 richieste/15 min
PER UTENTE
75 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
25 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/tweets/:id/quote_tweets75 richieste / 15 min
PER UTENTE
75 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/tweets/:id/retweeted_by75 richieste/15 min
PER UTENTE
75 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
5 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/tweets/counts/all300 richieste / 15 min
PER APP
GET /2/tweets/counts/recent300 richieste/15 min
PER APP
5 richieste/15 min
PER APP
1 richiesta/15 min
PER APP
GET /2/tweets/search/all1 richiesta/secondo
PER UTENTE
1 richiesta/secondo
PER APP
GET /2/tweets/search/recent300 richieste/15 min
PER UTENTE
450 richieste/15 min
PER APP
60 richieste/15 min
PER UTENTE
60 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/tweets/search/stream50 richieste/15 min
PER APP
GET /2/tweets/search/stream/rules450 richieste/15 min
PER APP
GET /2/users/:id/liked_tweets75 richieste/15 min
PER UTENTE
75 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
5 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/users/:id/mentions300 richieste/15 min
PER UTENTE
450 richieste/15 min
PER APP
10 richieste/15 min
PER UTENTE
15 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/users/:id/timelines/reverse_chronological180 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
GET /2/users/:id/tweets900 richieste/15 min
PER UTENTE
1500 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
10 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/users/reposts_of_me75 richieste / 15 min
PER UTENTE
75 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
POST /2/tweets100 richieste / 15 min
PER UTENTE
10.000 richieste / 24 ore
PER APP
100 richieste / 24 ore
PER UTENTE
1.667 richieste / 24 ore
PER APP
17 richieste / 24 ore
PER UTENTE
17 richieste / 24 ore
PER APP
POST /2/tweets/search/stream/rules100 richieste / 15 min
PER APP
POST /2/users/:id/likes1000 richieste / 24 ore
PER UTENTE
200 richieste / 24 ore
PER UTENTE
1 richiesta / 15 minuti
PER UTENTE
POST /2/users/:id/retweets50 richieste/15 min
PER UTENTE
5 richieste/15 min
PER UTENTE
1 richiesta/15 min
PER UTENTE
PUT /2/tweets/:tweet_id/hidden50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
Users
DELETE /2/users/:source_user_id/following/:target_user_id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
DELETE /2/users/:source_user_id/muting/:target_user_id50 richieste/15 min
PER UTENTE
5 richieste/15 min
PER UTENTE
1 richiesta/15 min
PER UTENTE
GET /2/users900 richieste / 15 min
PER UTENTE
300 richieste / 15 min
PER APP
100 richieste / 24 ore
PER UTENTE
500 richieste / 24 ore
PER APP
1 richiesta / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER APP
GET /2/users/:id900 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
100 richieste/24 ore
PER UTENTE
500 richieste/24 ore
PER APP
1 richiesta/24 ore
PER UTENTE
1 richiesta/24 ore
PER APP
GET /2/users/:id/blocking15 richieste/15 min
PER UTENTE
5 richieste/15 min
PER UTENTE
1 richiesta/15 min
PER UTENTE
GET /2/users/:id/muting15 richieste / 15 min
PER UTENTE
100 richieste / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER UTENTE
GET /2/users/by900 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
100 richieste/24 ore
PER UTENTE
500 richieste/24 ore
PER APP
1 richiesta/24 ore
PER UTENTE
1 richiesta/24 ore
PER APP
GET /2/users/by/username/:username900 richieste / 15 min
PER UTENTE
300 richieste / 15 min
PER APP
100 richieste / 24 ore
PER UTENTE
500 richieste / 24 ore
PER APP
3 richieste / 15 min
PER UTENTE
3 richieste / 15 min
PER APP
GET /2/users/me75 richieste / 15 min
PER UTENTE
250 richieste / 24 ore
PER UTENTE
25 richieste / 24 ore
PER UTENTE
GET /2/users/search900 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
POST /2/users/:id/following50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
POST /2/users/:id/muting50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
Spaces
GET /2/spaces300 richieste / 15 min
PER UTENTE
300 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/spaces/:id300 richieste / 15 min
PER UTENTE
300 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/spaces/:id/buyers300 richieste / 15 min
PER UTENTE
300 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/spaces/:id/tweets300 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
25 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/spaces/by/creator_ids300 richieste / 15 min
PER UTENTE
1 richiesta/secondo
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste/secondo
PER APP
1 richiesta/secondo
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/spaces/search300 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
25 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
Messaggi Diretti
DELETE /2/dm_events/:id1500 richieste/24 ore
PER UTENTE
4000 richieste/24 ore
PER APP
200 richieste/15 minuti
PER UTENTE
2500 richieste/24 ore
PER APP
GET /2/dm_conversations/:dm_conversation_id/dm_events15 richieste / 15 min
PER UTENTE
1 richiesta / 24 ore
PER UTENTE
GET /2/dm_conversations/with/:participant_id/dm_events15 richieste / 15 minuti
PER UTENTE
1 richiesta / 24 ore
PER UTENTE
GET /2/dm_events15 richieste / 15 min
PER UTENTE
1 richiesta / 24 ore
PER UTENTE
GET /2/dm_events/:id15 richieste / 15 minuti
PER UTENTE
5 richieste / 24 ore
PER UTENTE
POST /2/dm_conversations15 richieste / 15 min
PER UTENTE
1440 richieste / 24 ore
PER APP
1 richiesta / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER APP
POST /2/dm_conversations/:dm_conversation_id/messages15 richieste / 15 min
PER UTENTE
1440 richieste / 24 ore
PER APP
1 richiesta / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER APP
POST /2/dm_conversations/with/:participant_id/messages1440 richieste / 24 ore
PER UTENTE
1440 richieste / 24 ore
PER APP
1 richiesta / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER APP
Lists
DELETE /2/lists/:id300 richieste/15 min
PER UTENTE
5 richieste/15 min
PER UTENTE
1 richiesta/15 min
PER UTENTE
DELETE /2/lists/:id/members/:user_id300 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
DELETE /2/users/:id/followed_lists/:list_id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
DELETE /2/users/:id/pinned_lists/:list_id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
GET /2/lists/:id75 richieste / 15 min
PER UTENTE
75 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/lists/:id/members900 richieste / 15 min
PER UTENTE
900 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/lists/:id/tweets900 richieste/15 min
PER UTENTE
900 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
25 richieste/15 min
PER APP
GET /2/users/:id/list_memberships75 richieste / 15 min
PER UTENTE
75 richieste / 15 min
PER APP
5 richieste / 15 min
PER UTENTE
25 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 15 min
PER APP
GET /2/users/:id/owned_lists15 richieste/15 min
PER UTENTE
15 richieste/15 min
PER APP
100 richieste/24 ore
PER UTENTE
500 richieste/24 ore
PER APP
1 richiesta/24 ore
PER UTENTE
1 richiesta/24 ore
PER APP
GET /2/users/:id/pinned_lists15 richieste / 15 min
PER UTENTE
15 richieste / 15 min
PER APP
100 richieste / 24 ore
PER UTENTE
500 richieste / 24 ore
PER APP
1 richiesta / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER APP
POST /2/lists300 richieste / 15 minuti
PER UTENTE
100 richieste / 24 ore
PER UTENTE
1 richiesta / 24 ore
PER UTENTE
POST /2/lists/:id/members300 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
POST /2/users/:id/followed_lists50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
POST /2/users/:id/pinned_lists50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
PUT /2/lists/:id300 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
Preferiti
DELETE /2/users/:id/bookmarks/:tweet_id50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
GET /2/users/:id/bookmarks180 richieste / 15 min
PER UTENTE
10 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
GET /2/users/:id/bookmarks/folders50 richieste/15 min
PER UTENTE
50 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
5 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/users/:id/bookmarks/folders/:folder_id50 richieste/15 min
PER UTENTE
50 richieste/15 min
PER APP
5 richieste/15 min
PER UTENTE
5 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
POST /2/users/:id/bookmarks50 richieste / 15 min
PER UTENTE
5 richieste / 15 min
PER UTENTE
1 richiesta / 15 min
PER UTENTE
Conformità
GET /2/compliance/jobs150 richieste / 15 min
PER APP
5 richieste / 15 min
PER APP
1 richiesta / 15 min
PER APP
GET /2/compliance/jobs/:job_id150 richieste/15 minuti
PER APP
5 richieste/15 minuti
PER APP
1 richiesta/15 minuti
PER APP
POST /2/compliance/jobs150 richieste / 15 min
PER APP
15 richieste / 15 min
PER APP
1 richiesta / 15 min
PER APP
Uso
GET /2/usage/tweets50 richieste / 15 min
PER APP
50 richieste / 15 min
PER APP
1 richiesta / 15 min
PER APP
Tendenze
GET /2/trends/by/woeid/:id75 richieste / 15 min
PER APP
15 richieste / 15 min
PER APP
GET /2/users/personalized_trends10 richieste / 15 min
PER UTENTE
200 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
20 richieste / 15 min
PER APP
1 richiesta / 15 min
PER UTENTE
1 richiesta / 24 ore
PER APP
Comunità
GET /2/communities/:id300 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
25 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP
GET /2/communities/search300 richieste/15 min
PER UTENTE
300 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
25 richieste/15 min
PER APP
1 richiesta/15 min
PER UTENTE
1 richiesta/15 min
PER APP

Limiti di velocità e metodo di autenticazione

I limiti di velocità sono impostati sia a livello di App sviluppatore sia a livello di access token utente:
  • OAuth 2.0 Bearer Token: limite di velocità dell’App Questo metodo consente di effettuare un certo numero di richieste per conto della tua App sviluppatore. Quando utilizzi questo metodo di autenticazione, i limiti sono determinati dalle richieste effettuate con un Bearer Token.
    • Esempio: con un limite di 450 richieste per intervallo di 15 minuti, puoi effettuare 450 richieste per conto della tua App entro tale intervallo.
  • OAuth 1.0a User Context: limite di velocità utente Questo metodo consente di effettuare richieste per conto di un utente di X identificato dall’Access Token utente. Ad esempio, se recuperi metriche private dai Post, esegui l’autenticazione con Access Tokens utente per quell’utente, generati utilizzando il flusso OAuth a 3 vie.
    • Esempio: con un limite di 900 richieste per 15 minuti per utente, puoi effettuare fino a 900 richieste per utente in quel periodo di tempo.

Intestazioni HTTP e codici di risposta

Usa le intestazioni HTTP per capire a che punto si trova la tua applicazione rispetto a un determinato limite di velocità, in base all’ultima richiesta effettuata.
  • x-rate-limit-limit: limite massimo (rate limit) per l’endpoint
  • x-rate-limit-remaining: richieste rimanenti nella finestra di 15 minuti
  • x-rate-limit-reset: tempo rimanente prima del reset del limite di velocità (in secondi epoch UTC)

Risposte di errore

Se un’applicazione supera il limite di velocità per un endpoint, l’API restituirà una risposta HTTP 429 “Too Many Requests” con il seguente messaggio di errore nel corpo della risposta:
{ "errors": [ { "code": 88, "message": "Limite di velocità superato" } ] }

Ripristinare dopo un limite di velocità

Quando questi limiti di velocità vengono superati, l’endpoint restituisce un errore 429 “Too Many Requests”. Come discusso di seguito, quando si verificano errori di limite di velocità, una buona pratica è esaminare le intestazioni HTTP che indicano quando il limite verrà reimpostato e sospendere le richieste fino ad allora.
Quando si verifica un errore “Too Many Requests” o di rate limiting, è necessario ridurre la frequenza delle richieste. In caso di errore di limite di velocità, è possibile consultare l’intestazione HTTP x-rate-limit-reset: per sapere quando il rate limiting verrà reimpostato.

Un altro modello comune è il backoff esponenziale, in cui l’intervallo tra le richieste parte da un valore ridotto (ad esempio, pochi secondi) e raddoppia prima di ogni nuovo tentativo. Si continua così fino a quando una richiesta va a buon fine, oppure si raggiunge un intervallo massimo ragionevole tra le richieste (ad esempio, alcuni minuti).

Idealmente, il client è consapevole dei limiti di velocità esistenti e può mettere in pausa le richieste fino alla scadenza della finestra attualmente ecceduta. Se superi un limite di 15 minuti, ha senso attendere un minuto o due prima di riprovare.

Nota che, oltre a questi limiti sul numero di richieste, il livello di accesso Standard Basic fornisce fino a 500.000 Post al mese dagli endpoint di ricerca recente e filtered stream. Se hai superato il limite mensile sul numero di Post, ha più senso che la tua App generi una notifica, tenga traccia del giorno di attivazione dell’iscrizione mensile e sospenda le richieste fino a quel giorno.

Suggerimenti per evitare di incorrere nel limite di velocità

I suggerimenti riportati di seguito servono ad aiutarti a programmare in modo difensivo e a ridurre la possibilità di incorrere nel limite di velocità. Alcune funzionalità dell’applicazione che potresti voler offrire sono semplicemente irrealizzabili a causa del limite di velocità, soprattutto in relazione all’aggiornamento dei risultati. Se l’obiettivo della tua applicazione è fornire informazioni in tempo reale, prendi in considerazione gli endpoint di stream filtrati e campionati.

Caching

Memorizza le risposte dell’API se prevedi un utilizzo frequente. Invece di chiamare l’API a ogni caricamento della pagina, memorizza la risposta in locale.

Dai priorità agli utenti attivi

Se il tuo sito monitora molti utenti di X (ad esempio recuperando il loro stato attuale o statistiche sul loro utilizzo di X), prendi in considerazione la possibilità di richiedere dati solo per gli utenti che hanno effettuato l’accesso al tuo sito di recente.

Adatta la ricerca ai risultati

Se la tua applicazione monitora un elevato numero di termini di ricerca, esegui meno query per le ricerche senza risultati rispetto a quelle che ne producono. Usando un back-off puoi restare aggiornato sulle query popolari senza sprecare risorse effettuando richieste per query che cambiano molto raramente. In alternativa, prendi in considerazione l’uso dell’endpoint filtered stream e applica filtri con le tue query di ricerca.

Denylist

Se un’applicazione viola i limiti di velocità, verrà messa in denylist. Le App in denylist non possono ottenere risposte dalla X API. Se tu o la tua applicazione siete stati inseriti in denylist e ritieni che si tratti di un errore, puoi utilizzare i nostri moduli di supporto della piattaforma per richiedere assistenza. Includi le seguenti informazioni:
  1. Spiega perché ritieni che la tua applicazione sia stata inserita in denylist.
  2. Se non sei più soggetto a limiti di velocità, descrivi nel dettaglio come hai risolto il problema.
I