Pubblicare su Threads richiede due chiamate API, non una: crei un container multimediale, poi lo pubblichi. I profili sono limitati a 250 post pubblicati via API ogni 24 ore, i post di testo hanno un tetto di 500 caratteri, e ogni permesso usato dalla tua app deve superare l’App Review di Meta prima che chiunque al di fuori della tua lista di tester possa connettersi.
Cosa può pubblicare l’API di Threads, e cosa no?
I post singoli supportano tre tipi di media: TEXT, IMAGE e VIDEO. I caroselli supportano figli IMAGE e VIDEO, da 2 a 20, e un carosello conta come un singolo post rispetto al tuo limite di pubblicazione.
Le specifiche, dalla documentazione ufficiale di Meta:
| Vincolo | Valore |
|---|---|
| Lunghezza testo | 500 caratteri |
| Figli del carosello | da 2 a 20 |
| Formati immagine | JPEG, PNG |
| Dimensione file immagine | 8 MB massimo |
| Larghezza immagine | da 320 a 1440 pixel |
| Rapporto d’aspetto immagine | 10:1 massimo |
| Contenitore video | MOV o MP4 |
| Codec video | video H264 o HEVC, audio AAC |
| Frame rate video | da 23 a 60 FPS |
| Durata video | 300 secondi (5 minuti) |
| Dimensione file video | 1 GB massimo |
| Bitrate video | 100 Mbps video, 128 kbps audio |
Un dettaglio che sorprende: le emoji contano rispetto ai 500 caratteri per valore in byte UTF-8, non come singoli caratteri. Una didascalia che nel tuo editor sembra di 480 caratteri può essere rifiutata. Se stai contando lato client, conta i byte per le emoji. Il post sul limite di caratteri di Threads e il contatore gratuito di caratteri Threads gestiscono entrambi questo caso.
Nota: i dati qui riportati sono stati verificati rispetto a developers.facebook.com/docs/threads/posts e /docs/threads/overview, aggiornati a settembre 2026. Le piattaforme cambiano questi dati senza preavviso.
Qual è il modello di autenticazione?
Threads gira sull’infrastruttura app di Meta ma con credenziali proprie. Crei un’app Meta con il caso d’uso Threads, e quell’app emette un ID app e un secret specifici per Threads, distinti da quelli mostrati altrove nella dashboard. Usare la coppia sbagliata è un errore comune nella prima ora.
Gli scope sono granulari:
threads_basic(richiesto da ogni endpoint)threads_content_publish(pubblicazione)threads_manage_repliesethreads_read_repliesthreads_manage_insightsthreads_deletethreads_location_tagging
L’App Review non è opzionale. Ogni permesso deve essere approvato tramite App Review, e l’app deve essere pubblicata in produzione, prima che chiunque non sia un tester possa concederlo. Fino ad allora puoi pubblicare solo su profili Threads che hai esplicitamente invitato come tester tramite la dashboard dell’app, e che hanno accettato l’invito dalle loro impostazioni Threads. La documentazione di Meta non indica quanto duri la revisione, quindi non lo indoviniamo.
Il ciclo di vita del token che devi costruire
Questa è la parte che diventa un processo in background.
- La finestra di autorizzazione restituisce un codice.
- Scambialo per un token di accesso a breve durata, valido 1 ora.
- Scambia quello per un token a lunga durata via
GET /access_tokencongrant_type=th_exchange_token. Valido 60 giorni. - Rinnovalo via
GET /refresh_access_tokencongrant_type=th_refresh_token. Un token deve avere almeno 24 ore e non essere ancora scaduto per poter essere rinnovato. Un token rinnovato è valido per altri 60 giorni.
Un token che resta 60 giorni senza rinnovo scade e l’utente deve riautorizzare. I permessi concessi da utenti app con profili privati sono validi 90 giorni.
Nota: i dati qui riportati sono stati verificati rispetto a developers.facebook.com/docs/threads/get-started e /get-started/long-lived-tokens, aggiornati a settembre 2026. Le piattaforme cambiano questi dati senza preavviso.
Qual è la sequenza di pubblicazione effettiva?
Per un post singolo:
POST /{threads-user-id}/threadsconmedia_typee il tuo testo o URL media. Restituisce un ID container.- Attendi. Meta consiglia in media 30 secondi prima di pubblicare, per lasciare che il server finisca di elaborare il media.
POST /{threads-user-id}/threads_publishcon quell’ID container.
Per un carosello, inserisci un passaggio: crea un container per ogni figlio, poi crea un container carosello che li referenzia, poi pubblicalo.
# 1. create the container
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads" \
-d "media_type=IMAGE" \
-d "image_url=https://example.com/photo.jpg" \
-d "text=Shipping notes for this week." \
-d "access_token=$TOKEN"
# -> {"id":"1789..."}
# 2. wait ~30s for processing, then publish
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads_publish" \
-d "creation_id=1789..." \
-d "access_token=$TOKEN"
Nota che immagini e video vengono passati tramite URL pubblico, non caricati come byte. I server di Meta li recuperano. Questo significa che il tuo media deve essere raggiungibile pubblicamente, senza autenticazione, e ancora attivo quando avviene il recupero, un requisito di hosting che la maggior parte delle persone non pianifica.
Quali sono i limiti di frequenza?
| Azione | Limite |
|---|---|
| Post pubblicati | 250 per periodo mobile di 24 ore |
| Risposte | 1.000 ogni 24 ore |
| Eliminazioni | 100 ogni 24 ore |
| Ricerche di posizione | 500 ogni 24 ore |
| Chiamate API generali | 4800 x numero di impression, ogni 24 ore (minimo 10 impression) |
La formula delle impression vale la pena leggerla due volte. Il tuo budget di chiamate generali scala con quanta copertura ottiene davvero il profilo, con un minimo garantito. Un profilo nuovo di zecca ha il budget minimo.
Nota: i dati qui riportati sono stati verificati rispetto a developers.facebook.com/docs/threads/overview, aggiornati a settembre 2026. Le piattaforme cambiano questi dati senza preavviso.
Cosa ti costerà davvero tre settimane?
L’App Review. Preparare screencast, un’informativa sulla privacy, un percorso demo funzionante e una verifica aziendale, poi iterare sui rifiuti. La durata non è pubblicata, quindi pianifica considerandola un rischio di programmazione, non un’attività.
Il processo di rinnovo del token. I token a lunga durata scadono in 60 giorni e sono rinnovabili solo dopo 24 ore. Serve un processo pianificato, un archivio di token cifrati, un percorso di avviso quando il rinnovo fallisce e un flusso di riconnessione nella tua interfaccia.
Fallimenti asincroni. La chiamata al container che restituisce 200 non significa che il tuo media sia valido. La chiamata di pubblicazione è dove emerge un video difettoso, circa 30 secondi dopo, in una richiesta diversa. Il tuo modello di post ha bisogno di uno stato processing e di un modo per segnalare un errore arrivato dopo che l’utente ha chiuso la scheda.
Hosting pubblico dei media. Poiché Meta recupera tramite URL, servono URL pubblici durevoli con un comportamento di cache sensato, e un piano per quando il recupero viene limitato o bloccato dalla protezione anti-bot della tua CDN.
Conteggio in byte per le emoji. Economico da correggere, costoso da scoprire in produzione.
La versione breve
- Due chiamate per pubblicare: crea un container, attendi circa 30 secondi, pubblicalo. Tre per un carosello.
- Il media viene passato tramite URL pubblico. Meta lo recupera.
- 500 caratteri. Le emoji contano come byte UTF-8.
- 250 post pubblicati via API per profilo ogni 24 ore.
- I token a breve durata durano 1 ora, quelli a lunga durata 60 giorni, rinnovabili dopo 24 ore.
- L’App Review è richiesta per ogni permesso prima che chi non è tester possa connettersi. Nessuna durata è pubblicata.
Programmare Threads insieme a tutto il resto
Se Threads è una piattaforma tra tante piuttosto che l’intero prodotto, gran parte del lavoro descritto sopra si ripete per ogni rete con forme diverse. X usa OAuth 2.0 PKCE e upload a byte in blocchi. Bluesky non richiede alcuna App Review. LinkedIn richiede due app separate: i profili personali usano w_member_social, le pagine aziendali usano r_organization_social, w_organization_social e rw_organization_admin, riviste separatamente.
BulkPublish copre 15 piattaforme dietro un’unica API REST, incluso Threads, con la sequenza container, il rinnovo a 60 giorni e il polling asincrono dello stato gestiti lato server. La documentazione per sviluppatori e il riferimento API REST elencano gli endpoint, e programmare post su Threads copre il percorso non sviluppatore.