Puoi utilizzare l'API Content Publishing per pubblicare immagini, video o reel singoli (ovvero post con contenuto multimediale singolo) oppure post contenenti più immagini e video (post carosello) sugli account Instagram per professionisti.
A partire dal 1° luglio 2023, tutti i video del feed singoli pubblicati tramite l'API Content Publishing di Instagram saranno condivisi come reel.
Tutte le richieste devono includere il token d'accesso dell'utente dell'utente dell'app.
La pubblicazione si basa su una combinazione delle seguenti autorizzazioni. La combinazione esatta dipende dagli endpoint utilizzati dall'app. Consulta i riferimenti dei nostri endpoint per conoscere le autorizzazioni necessarie per ogni endpoint.
Se la tua app sarà utilizzata da utenti che non hanno un ruolo al suo interno o in un Business Manager che ha reclamato l'app, devi richiedere l'approvazione per ogni autorizzazione tramite l'analisi dell'app prima che gli utenti senza un ruolo possano concedere le autorizzazioni all'app.
Nei tentativi di pubblicazione, usiamo con il contenuto multimediale la funzione cURL, quindi al momento del tentativo il contenuto deve essere su un server pubblicamente accessibile.
Non è possibile pubblicare su account Instagram per professionisti collegati a una Pagina che richiede l'autorizzazione alla pubblicazione sulle Pagine (PPA) fino al completamento della procedura PPA.
È possibile che un utente dell'app sia in grado di eseguire attività su una Pagina che inizialmente non richiede PPA, ma che la richiede in un secondo momento. In questo scenario, l'utente dell'app non potrebbe pubblicare contenuti sul proprio account Instagram per professionisti fino al completamento della procedura PPA. Poiché non esiste un modo per sapere se la Pagina di un utente dell'app richiede la PPA, ti consigliamo di richiedere agli utenti di completare preventivamente questa procedura.
Per ulteriori limitazioni, consulta il riferimento di ogni endpoint.
Gli account Instagram hanno un limite di pubblicazione di 50 post tramite API in un periodo continuativo di 24 ore. I caroselli vengono considerati come un singolo post. Questo limite viene applicato sull'endpoint POST /{ig-user-id}/media_publish
quando si tenta di pubblicare un contenitore multimediale. Ti consigliamo di configurare l'app in modo che applichi il rate limiting di pubblicazione, soprattutto se consente agli utenti di programmare la pubblicazione futura dei post.
Per controllare l'utilizzo del rate limiting corrente di un account Instagram per professionisti, interroga l'endpoint GET /{ig-user-id}/content_publishing_limit
.
L'API si compone degli endpoint seguenti. Consulta ciascun documento di riferimento dell'endpoint per le istruzioni sull'utilizzo.
POST /{ig-user-id}/media
: carica contenuti multimediali e crea contenitori di oggetti multimediali.POST /{ig-user-id}/media_publish
: pubblica contenuti multimediali caricati utilizzando i relativi contenitori.GET /{ig-container-id}?fields=status_code
: verifica l'idoneità alla pubblicazione e lo stato dei contenitori di contenuti multimediali.GET /{ig-user-id}/content_publishing_limit
: verifica l'utilizzo del rate limiting di pubblicazione corrente dell'utente dell'app.La procedura di pubblicazione di immagini, video, storie o reel singoli si compone di due passaggi:
POST /{ig-user-id}/media
per creare un contenitore da un'immagine o un video ospitati sul tuo server pubblico.POST /{ig-user-id}/media_publish
per pubblicare il contenitore.Passaggio 1 di 2: creazione del contenitore
Ipotizziamo che tu abbia un'immagine all'indirizzo...
https://www.example.com/images/bronz-fonz.jpg
... che desideri pubblicare con l'hashtag "#BronzFonz" come didascalia. Invia una richiesta all'endpoint POST /{ig-user-id}/media
:
POST https://graph.facebook.com/v21.0
/17841400008460056/media
?image_url=https://www.example.com/images/bronz-fonz.jpg
&caption=#BronzFonz
Viene restituito un ID contenitore per l'immagine.
{ "id": "17889455560051444" // IG Container ID }
Passaggio 2 di 2: pubblicazione del contenitore
Usa l'endpoint POST /{ig-user-id}/media_publish
per pubblicare l'ID contenitore restituito nel corso del passaggio precedente.
POST https://graph.facebook.com/v21.0
/17841400008460056/media_publish ?creation_id=17889455560051444
{ "id": "17920238422030506" // IG Media ID }
Puoi pubblicare fino a 10 immagini, video o un mix di immagini e video in un unico post (un post carosello). La procedura di pubblicazione di caroselli si compone di tre passaggi:
POST /{ig-user-id}/media
per creare singoli contenitori di elementi per ogni immagine o video che saranno inclusi nel carosello.POST /{ig-user-id}/media
per creare un singolo contenitore carosello per gli elementi.POST /{ig-user-id}/media_publish
per pubblicare il contenitore carosello.Ai fini del rate limiting dell'account, i post carosello vengono conteggiati come un singolo post.
Limitazioni
Passaggio 1 di 3: creazione del contenitore di elementi
Usa l'endpoint POST /{ig-user-id}/media
per la creazione di un contenitore di elementi per un'immagine o un video che saranno inclusi in un carosello. I caroselli possono avere in totale un massimo di 10 immagini, video o un mix di immagini e video.
POST /{ig-user-id}/media
I parametri seguenti sono obbligatori. Consulta il riferimento per l'endpoint POST /{ig-user-id}/media
per ulteriori parametri supportati.
is_carousel_item
: impostato su true
. Indica che l'immagine o il video sarà visibile in un carosello.image_url
(solo immagini): il percorso all'immagine. Useremo la funzione cURL con l'immagine utilizzando l'URL passato, quindi l'immagine deve trovarsi su un server pubblico.media_type
(solo video): impostato su VIDEO
. Indica che il contenuto multimediale è un video.video_url
(solo video): percorso al video. Useremo la funzione cURL con il video utilizzando l'URL passato, quindi il video deve trovarsi su un server pubblico.Se l'operazione va a buon fine, l'API restituirà un ID contenitore elementi che può essere utilizzato durante la creazione del contenitore carosello.
Ripeti questa procedura per ogni immagine o video da includere nel carosello.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media?image_url=https%3A%2F%2Fsol...&is_carousel_item=true&access_token=EAAOc..."
{ "id": "17899506308402767" }
Passaggio 2 di 3: creazione del contenitore carosello
Usa l'endpoint POST /{ig-user-id}/media
per creare un contenitore carosello.
POST /{ig-user-id}/media
I parametri seguenti sono obbligatori. Consulta il riferimento per l'endpoint POST /{ig-user-id}/media
per ulteriori parametri supportati.
media_type
: impostato su CAROUSEL
. Indica che il contenitore è per un carosello.children
: un array di 10 ID contenitore massimo di ogni immagine e video che deve essere visibile nel carosello pubblicato. I caroselli possono avere in totale un massimo di 10 immagini, video o un mix di immagini e video.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media?caption=Fruit%20candies&media_type=CAROUSEL&children=17899506308402767%2C18193870522147812%2C17853844403701904&access_token=EAAOc..."
{ "id": "18000748627392977" }
Passaggio 3 di 3: pubblicazione del contenitore carosello
Usa l'endpoint POST /{ig-user-id}/media_publish
per pubblicare un contenitore carosello (un post carosello). Gli account hanno un limite di pubblicazione di 50 post in un periodo di 24 ore. La pubblicazione di un carosello viene conteggiata come un singolo post.
POST /{ig-user-id}/media_publish
I parametri seguenti sono obbligatori.
creation_id
: l'ID del contenitore carosello.Se l'operazione va a buon fine, l'API restituirà un ID contenuto multimediale di IG dell'album carosello.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media_publish?creation_id=18000748627392977&access_token=EAAOc..."
{ "id": "90010778390276" }
I reel sono brevi video idonei a essere mostrati nella tab Reels dell'app Instagram se soddisfano determinate specifiche e vengono selezionati dal nostro algoritmo. Per pubblicare un reel, segui la procedura per la pubblicazione di un post con contenuto multimediale singolo e includi il parametro media_type=REELS
insieme al percorso al video usando il parametro video_url
.
I reel non sono un nuovo tipo di contenuto multimediale, anche se imposti media_type=REELS
quando pubblichi un reel. Se pubblichi un reel e poi ne richiedi il campo media_type
, il valore restituito sarà VIDEO
. Per determinare se un video pubblicato è stato approvato come reel, richiedine il campo media_product_type
.
Puoi utilizzare l'esempio di codice su GitHub (insta_reels_publishing_api_sample) per scoprire come pubblicare reel su Instagram.
Per renderlo più comodo per gli sviluppatori, Meta ha pubblicato il set completo di chiamate API Graph per Instagram Reels nella piattaforma dell'API Postman. Per maggiori informazioni, consulta Raccolte Postman per Facebook Reels e Instagram Reels.
Per maggiori informazioni sui reel, consulta la documentazione sui reel per gli sviluppatori.
Solo gli account business possono pubblicare storie con l'API Content Publishing al momento.
Le storie sono video e immagini pubblicati come Instagram Stories su Instagram. Per pubblicare una storia, segui la stessa procedura per la pubblicazione di un post con contenuto multimediale singolo e includi il parametro media_type=STORIES
insieme al percorso all'immagine/al video usando il parametro image_url
o video_url
.
Nota: le storie non sono un nuovo tipo di contenuto multimediale, anche se imposti media_type=STORIES
quando pubblichi una storia. Se pubblichi una storia e poi ne richiedi il campo media_type
, il valore sarà restituito come IMAGE/VIDEO
. Per determinare se un'immagine o un video pubblicati sono stati approvati come storia, richiedine invece il campo media_product_type
.
Il Protocollo di caricamento ripristinabile è un nuovo flusso per la pubblicazione di contenuti multimediali di Instagram che supporta i caricamenti video per i media_types
reel, storie con video e caroselli con video.
Questo nuovo protocollo supporta la creazione di contenuti multimediali di Instagram sia dai video locali che dai video URL ospitati pubblici. Il protocollo ti permette di riprendere un'operazione di caricamento di file in locale dopo un'interruzione di rete o un altro errore di trasmissione, risparmiando tempo e larghezza di banda in caso di errori di rete. Mantiene le stesse specifiche dei contenuti multimediali.
POST https://graph.facebook.com/{api-version}/{ig-user-id}/media
: inizializza contenitori di creazioni video impostando upload_type=resumable.POST https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}
: carica video da un file video in locale o un URL ospitato in modo più sicuro utilizzando il protocollo di caricamento ripristinabile. POST https://graph.facebook.com/{api-version}/{ig-user-id}/media_publish
: pubblica contenuti multimediali caricati utilizzando i relativi contenitori.GET /{ig-container-id}?fields=status_code
: verifica l'idoneità alla pubblicazione e lo stato dei contenitori di contenuti multimediali.user_tags=[{username:’ig_user_name’}]
è codificato in user_tags=%5B%7Busername:ig_user_name%7D%5D
dove [
è codificato in %5B
e {
è codificato in %7B
. Per altre conversioni, consulta lo standard di codifica URL HTML.curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=REELS" \ -d "upload_type=resumable" \ -d "caption={caption}"\ -d "collaborators={collaborators-username}" -d "cover_url={cover-url}" \ -d "audio_name={audio-name}" \ -d "user_tags={user-tags}" \ -d "location_id={location-id}" \ -d "thumb_offset={thumb-offset}" \ -H "Authorization: OAuth {access-token}"
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=STORIES" \ -d "upload_type=resumable" \ -H "Authorization: OAuth {access-token}"
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=VIDEO" \ -d "is_carousel_item=true" \ -d "upload_type=resumable" \ -H "Authorization: OAuth {access-token}"
{ "id": "{ig-container-id}", "uri": "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" }
La maggior parte delle chiamate API Graph usa l'host graph.facebook.com
, tuttavia, le chiamate per il caricamento di video per reel usano rupload.facebook.com
.
Sono supportate le seguenti sorgenti di file per i file video caricati:
Con l'ig-container-id
restituito da una chiamata di sessione di caricamento ripristinabile, carica il video.
rupload.facebook.com
.media_type
condividono lo stesso flusso per il caricamento di video.ig-container-id
è l'ID restituito dalle chiamate di sessione di caricamento ripristinabili. access-token
è lo stesso token usato nei passaggi precedenti.offset
è impostato sul primo byte caricato, generalmente 0
.file_size
è impostato sulla dimensione del file in byte.Your_file_local_path
è impostato sul percorso del file in locale, ad esempio, se carichi un file dalla cartella dei Download su un macOS, il percorso è @Downloads/example.mov.curl -X POST "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" \ -H "Authorization: OAuth {access-token}" \ -H "offset: 0" \ -H "file_size: Your_file_size_in_bytes" \ --data-binary "@my_video_file.mp4"
curl -X POST "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" \ -H "Authorization: OAuth {access-token}" \ -H "file_url: https://example_hosted_video.com"
// Success Response Message { "success":true, "message":"Upload successful." } // Failure Response Message { "debug_info":{ "retriable":false, "type":"ProcessingFailedError", "message":"{\"success\":false,\"error\":{\"message\":\"unauthorized user request\"}}" } }
Puoi ripetere i passaggi 1 e 2 per creare più ig-container-ids
con il parametro is_carousel_item
impostato su true
. Quindi crea un contenitore carosello per includere tutti gli elementi carosello; gli elementi carosello possono essere combinati con immagini e video.
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=CAROUSEL" \ -d "caption={caption}"\ -d "collaborators={collaborator-usernames}" \ -d "location_id={location-id}" \ -d "product_tags={product-tags}" \ -d "children=[{ig-container-id},{ig-container-id}...]" \ -H "Authorization: OAuth {access-token}"
Per reel e storie con video, per pubblicare il video viene utilizzato il parametro {ig-container-id}
creato nel passaggio 1, mentre per pubblicare il contenitore carosello viene utilizzato il parametro {ig-container-id}
creato nel passaggio 3.
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media_publish" \ -d "creation_id={ig-container-id}" \ -H "Authorization: OAuth {access-token}"
graph.facebook.com
fornisce un endpoint GET
per la lettura dello stato del caricamento e il campo video_status
contiene i dettagli relativi alla procedura di caricamento in locale.
uploading_phase
indica se il file è stato caricato correttamente e quanti byte sono stati trasferiti. processing_phase
contiene i dettagli relativi allo stato dell'elaborazione video dopo il caricamento del file video.// GET status from graph.facebook.com curl -X GET "https://graph.facebook.com/v19.0/{ig-container-id}?fields=id,status,status_code,video_status" \ -H "Authorization: OAuth {access-token}"
graph.facebook.com
// A successfully created ig container { "id": "{ig-container-id}", "status": "Published: Media has been successfully published.", "status_code": "PUBLISHED", "video_status": { "uploading_phase": { "status": "complete", "bytes_transferred": 37006904 }, "processing_phase": { "status": "complete" } } } // An interrupted ig container creation, from here you can resume your upload in step 2 with offset=50002. { "id": "{ig-container-id}", "status": "Published: Media has been successfully published.", "status_code": "PUBLISHED", "video_status": { "uploading_phase": { "status": "in_progress", "bytes_transferred": 50002 }, "processing_phase": { "status": "not_started" } } }
Puoi aggiungere utenti pubblici di Instagram in un'immagine, un carosello e un reel come collaboratori; riceveranno un invito a collaborare per quel particolare contenuto multimediale. Per taggare gli utenti in un'immagine, segui la procedura precedente riportata in Post con contenuto multimediale singolo ma, alla creazione del contenitore del contenuto multimediale, includi il parametro collaborators e un array di stringhe indicante i nomi utente degli utenti Instagram che vuoi invitare come collaboratori sul contenuto multimediale.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &collaborators= [‘username1’,’username2’]
Puoi usare l' API Pages Search : assicurati di includere il campo `location` nella query per cercare le Pagine i cui nomi corrispondono a una stringa di ricerca. Quindi, analizza i risultati per identificare eventuali Pagine create per una posizione fisica. Se includi l'ID di una Pagina quando pubblichi un'immagine o un video, tale contenuto sarà taggato con la posizione associata alla Pagina.
Per essere idonea a essere taggata, una Pagina deve contenere dati relativi a latitudine e longitudine.
Verifica che la Pagina che desideri utilizzare abbia i dati relativi a latitudine e longitudine nella risposta. Qualsiasi tentativo di creare un contenitore usando una Pagina senza dati sulla posizione non riuscirà, restituendo l'eccezione codificata INSTAGRAM_PLATFORM_API__INVALID_LOCATION_ID
.
Dopo aver ottenuto l'ID Pagina, assegnalo al parametro location_id
quando pubblichi contenitori con contenuto multimediale singolo o carosello.
Puoi pubblicare sia post con contenuto multimediale singolo sia post carosello taggati con prodotti Shopping su Instagram. Per scoprire come fare, consulta la guida sui Tag dei prodotti.
Puoi taggare utenti Instagram pubblici in un'immagine. Gli utenti taggati riceveranno una notifica.
Per taggare gli utenti in un'immagine, segui la procedura precedente riportata in Post con contenuto multimediale singolo ma, alla creazione del contenitore del contenuto multimediale, includi il parametro user_tags
e un array di oggetti indicando gli utenti Instagram nell'immagine e le relative coordinate x/y all'interno dell'immagine.
Nota: i tag degli utenti non sono supportati sui contenuti multimediali video nei caroselli.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &user_tags= [ { username:'kevinhart4real', x: 0.5, y: 0.8 }, { username:'therock', x: 0.3, y: 0.2 } ]
Viene restituito un ID contenitore da pubblicare usando l'endpoint per la pubblicazione di contenuti multimediali utente di IG.
user_tags
deve essere un array di oggetti in formato JSON.username
, x
e y
) per ciascun utente.x
e y
devono essere numeri float
che si originano dalla parte in alto a sinistra dell'immagine, con intervallo 0.0
-1.0
.Se riesci a creare un contenitore per un video, ma l'endpoint POST /{ig-user-id}/media_publish
non restituisce l'ID del contenuto multimediale pubblicato, puoi richiedere lo stato di pubblicazione del contenitore interrogando l'endpoint GET /{ig-container-id}?fields=status_code
. Questo endpoint restituirà uno dei seguenti risultati:
EXPIRED
: il contenitore non è stato pubblicato entro 24 ore ed è scaduto.ERROR
: il contenitore non è riuscito a completare la procedura di pubblicazione.FINISHED
: il contenitore e il relativo oggetto multimediale sono pronti per essere pubblicati.IN_PROGRESS
: il contenitore è ancora in fase di pubblicazione.PUBLISHED
: l'oggetto multimediale del contenitore è stato pubblicato.Ti consigliamo di interrogare lo stato di un contenitore una volta al minuto, per non più di 5 minuti.
Consulta il riferimento Codici di errore.