Publication

L’API Video vous permet de publier des vidéos sur des Pages et des Groupes. La publication sur des Utilisateur·ices n’est pas prise en charge.

Vous pouvez également publier des reels sur des Pages. Pour plus d’informations, consultez l’API Reels Publishing.

Pour le processus de publication des vidéos, vous choisissez un protocole d’importation et vous envoyez une requête POST à l’arête /videos de la Page ou du Groupe cible. L’API est compatible avec les protocoles d’importation avec reprise et sans reprise. Nous vous recommandons d’utiliser le protocole Importation avec reprise, car il offre davantage de souplesse et permet de traiter efficacement les interruptions de connexion.

Notez que les exemples de ce document utilisent un nœud Page, mais s’appliquent de la même manière aux nœuds Groupe.

Conditions requises

Toutes les actions de publication nécessitent un token d’accès et des autorisations adaptés en fonction du nœud que vous ciblez. Pendant que vous testez, vous pouvez facilement générer des tokens et accorder à votre application des autorisations à l’aide de l’Explorateur de l’API Graph. Consultez notre guide Premiers pas pour en savoir plus à ce sujet. Lorsque votre application est prête à être utilisée en production, vous devrez probablement implémenter Facebook Login pour obtenir les tokens et les autorisations des utilisateurs de votre app.

Publication sur des Pages

L’utilisateur de l’app doit être un admin de la Page que vous ciblez. Vous aurez besoin du token d’accès de Page de l’utilisateur de l’app et vous devrez accorder à l’application les autorisations pages_show_list, pages_read_engagement et pages_manage_posts.

Publication sur des Groupes

L’utilisateur de l’app doit être un admin du Groupe que vous ciblez. Vous aurez besoin du token d’accès utilisateur de l’utilisateur de l’app et vous devrez accorder à l’application l’autorisation publish_to_groups.

Importation avec reprise

Le protocole d’importation avec reprise est le protocole de publication recommandé, car vous pouvez fractionner les vidéos volumineuses en segments de plus petite taille afin d’éviter les délais d’expiration. Cela est particulièrement utile pour les vidéos de très grande taille qui risquent davantage de générer des erreurs de connexion. Si vous rencontrez des problèmes de connexion pendant l’importation d’une vidéo volumineuse, vous devez normalement réimporter la totalité de la vidéo. Toutefois, grâce au protocole d’importation avec reprise, vous n’avez besoin de réimporter que le segment concerné.

Vous pouvez publier une vidéo sur une Page ou un Groupe. Le processus de publication se déroule de la manière suivante :

  1. Initialisez et importez une session sur la Page ou le Groupe,
  2. téléchargez les segments individuels dans l’ordre dans lequel ils doivent être assemblés, puis
  3. mettez fin à la session.

Une fois la session d’importation terminée, nous réassemblerons la vidéo, nous l’encoderons, puis nous la publierons.

Limites

Les vidéos ne doivent pas dépasser 10 Go et 4 heures.

Étape 1 : Initialiser une session d’importation

Si vous souhaitez initialiser une session d’importation d’une vidéo, envoyez une requête POST au point de terminaison Vidéos de Page :

POST /v19.0/{page-id}/videos
  ?upload_phase=start
  &access_token={access-token}
  &file_size={file-size}

Indiquez les paramètres suivants :

Nom du paramètreValeur

upload_phase

start

access_token

Token d’accès de Page si vous publiez sur une Page, ou token d’accès d’utilisateur si vous publiez sur un Groupe.

file_size

Taille totale de votre fichier vidéo en octets.

Exemple de requête

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=start" \
  -F "access_token=EAADI..." \
  -F "file_size=22420886"

Exemple de réponse

{
  "video_id":"2918040888250909",          //Capture this value (optional)
  "start_offset":"0",                     //Capture this value
  "end_offset":"1048576",
  "upload_session_id":"2918040901584241"  //Capture this value
}

Prenez note des valeurs start_offset et upload_session_id renvoyées par l’API. Vous en aurez besoin à l’étape suivante d’importation de votre premier segment vidéo. Vous pouvez également noter la valeur video_id. Celle-ci n’a pas d’utilité pour la publication, mais il s’agit de l’ID final de la vidéo publiée.

Étape 2 : Importer des segments individuellement

Téléchargez chacun des segments de votre vidéo dans l’ordre dans lequel ils seront assemblés en envoyant des requêtes POST consécutives au point de terminaison Vidéos de Page :

POST /v19.0/{page-id}/videos
  ?upload_phase=transfer
  &access_token={access-token}
  &upload_session_id={upload-session-id}
  &start_offset={start-offset}
  &video_file_chunk={video-file-chunk}

Incluez les données suivantes au format multipart/form-data dans le corps de la requête :

Nom des données de formulaireValeur

upload_phase

transfer

access_token

Token d’accès de Page si vous publiez sur une Page, ou token d’accès d’utilisateur si vous publiez sur un Groupe.

upload_session_id

ID de votre session d’importation.

start_offset

Valeur start_offset renvoyée dans la réponse précédente.

video_file_chunk

Nom du segment vidéo à importer.

Chaque fois que vous importez un segment, une nouvelle valeur start_offset est renvoyée. Répétez cette requête à l’aide de la dernière valeur start_offset renvoyée et du nom du prochain segment vidéo à importer (associé à video_file_chunk) jusqu’à ce que tous les segments vidéo aient été importés.

Sample Request for First Chunk

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=0" \
  -F "video_file_chunk=@/Users/...xaa"

Exemple de réponse

{
  "start_offset":"10485760",  //Value for second chunk
  "end_offset":"15728640"
}

Exemple de requête pour le deuxième segment

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=10485760" \
  -F "video_file_chunk=@/Users/...xab"

Exemple de réponse

{
  "start_offset":"20971520",  //Value for third chunk
  "end_offset":"22420886"
}

Après avoir importé le dernier segment, l’API doit renvoyer les valeurs start_offset et end_offset correspondantes, ce qui indique que vous pouvez mettre fin à la session d’importation.

Exemple de réponse finale

{
  "start_offset":"22420886",  //When values match you can
  "end_offset":"22420886"     //end the upload session
}

Étape 3 : Terminer la session d’importation

Lorsque vous mettez fin à la session d’importation, nous réassemblons la vidéo complète, nous l’encodons puis nous la publions sur la Page. Pour terminer la session d’importation, envoyez une requête POST finale au point de terminaison Vidéos de Page :

POST /v19.0/{page-id}/videos
  ?upload_phase=finish
  &access_token={access-token}
  &upload_session_id={upload-session-id}

Indiquez les paramètres suivants :

Nom du paramètreValeur

upload_phase

finish

access_token

Token d’accès de Page si vous publiez sur une Page, ou token d’accès d’utilisateur si vous publiez sur un Groupe.

upload_session_id

ID de votre session d’importation.

Vous pouvez également inclure des paramètres supplémentaires compatibles avec le point de terminaison Vidéos de Page, tels que title, description et thumb.

Exemple de requête

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"

Exemple de réponse JSON

{
  "success":true
}

Lorsque vous recevez cette réponse, cela signifie que nous avons commencé à assembler et à encoder la vidéo complète. Vous devriez être en mesure de voir la vidéo publiée dans la minute qui suit.

Importation sans reprise

Nous vous recommandons d’importer les fichiers avec le protocole Importation avec reprise, car il gère plus efficacement les interruptions de connexion et prend en charge des fichiers plus volumineux. Toutefois, si vous préférez utiliser le protocole d’importation sans reprise, vous pouvez le faire en envoyant une requête POST à l’arête Vidéos de Page et en incluant le paramètre source (pour les fichiers vidéo en local) ou le paramètre file_url (pour les fichiers hébergés sur un serveur public) dans le corps de la requête au format multipart/form-data. Vous pouvez également inclure des paramètres supplémentaires compatibles avec le point de terminaison Vidéos de Page, tels que title, description et thumb.

Limites

Les vidéos ne doivent pas dépasser 1 Go et 20 minutes. Si votre fichier est plus volumineux, fractionnez-le en segments et publiez-le en utilisant le protocole Importation avec reprise.

Exemple de requête pour un fichier local

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"

Exemple de requête pour un fichier hébergé

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "file_url=https://socialsizz.../incredible.mov"

En cas de réussite, l’API répond avec l’ID de la vidéo publiée.

Exemple de réponse

{
  "id":"287788272232962"  //ID of the published Video
}

Miniatures vidéo

Nous générons automatiquement des images miniatures à l’aide de photos des vidéos publiées. Les miniatures générées peuvent être retouchées afin d’améliorer la luminosité, la couleur et le contraste. Vous pouvez fournir votre propre image miniature en incluant le champ thumb avec le protocole avec reprise ou sans reprise. Si vous choisissez l’importation avec reprise, incluez le champ thumb lors de l’Étape 3 : Terminer la session d’importation. Les images miniatures que vous fournissez ne seront pas modifiées.

Critères à respecter pour les images miniatures

Format : BMP, GIF, JPEG, PNG,TIFF
Taille de fichier : 10 Mo ou moins.

Aucune restriction de dimension ne s’applique, mais l’image doit conserver les mêmes proportions que votre vidéo.

Exemple de requête d’importation avec reprise utilisant une miniature

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"
  -F "thumb=@/Users/...thumbnail_image.png"

Exemple de réponse JSON

{
  "success":true
}

Exemple de requête d’importation sans reprise utilisant une miniature

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"
  -F "thumb=@/Users/...thumbnail_image.png"

Exemple de réponse

{
  "id":"287788272232962"
}