REST APIPOST

Planification en masse

Planifiez jusqu'à 100 publications à la fois avec des paramètres spécifiques par plateforme via l'API AdaptlyPost.

POSThttps://post.adaptlypost.com/post/api/v1/social-posts/bulk

Programmez jusqu'à 100 publications à la fois. Chaque publication peut avoir son propre contenu, ses médias et son heure programmée tout en partageant les mêmes connexions de plateforme.

Clé API (jeton Bearer)
Permission:posts.scheduleRôles et permissions

posts.schedule quand chaque élément a un scheduledAt futur. Si un élément est daté de maintenant ou du passé, il est publié tout de suite et la clé exige en plus posts.publish. Les clés Contributeur et Lecteur ne peuvent pas planifier en masse.

Paramètres du corps

ParamètreTaperDescription
platformsREQUISPlatformType[]Plateformes cibles pour toutes les publications
timezoneREQUISstringFuseau horaire IANA pour la programmation
postsREQUISPostItem[]Tableau de publications à programmer (1-100)
twitterConnectionIdsstring[]IDs de connexion du compte Twitter
linkedinConnectionIdsstring[]IDs de connexion du compte LinkedIn
instagramConnectionIdsstring[]IDs de connexion du compte Instagram
tiktokConnectionIdsstring[]IDs de connexion du compte TikTok
youtubeConnectionIdsstring[]IDs de connexion de la chaîne YouTube
pinterestConnectionIdsstring[]IDs de connexion du compte Pinterest
blueskyConnectionIdsstring[]IDs de connexion du compte Bluesky
mastodonConnectionIdsstring[]IDs de connexion du compte Mastodon
googleBusinessConnectionIdsstring[]IDs de connexion des établissements de la fiche Google
tumblrConnectionIdsstring[]ID de connexion des blogs Tumblr
telegramConnectionIdsstring[]ID de connexion des canaux et groupes Telegram
threadsConnectionIdsstring[]IDs de connexion du compte Threads
pageIdsstring[]Pages Facebook sur lesquelles publier. Accepte soit l'id du compte, soit le pageId de /social-accounts
pinterestConfigsPinterestConfig[]Paramètres Pinterest au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
tiktokConfigsTikTokConfig[]Paramètres TikTok au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
instagramConfigsInstagramConfig[]Paramètres Instagram au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
facebookConfigsFacebookConfig[]Paramètres Facebook au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
youtubeConfigsYouTubeConfig[]Paramètres YouTube au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
googleBusinessConfigsGoogleBusinessConfig[]Paramètres de la fiche d'établissement Google au niveau du lot appliqués à toutes les publications. Consultez Configurations des plateformes pour le schéma
tumblrConfigsTumblrConfig[]Paramètres Tumblr au niveau du lot appliqués à tous les posts. Voir Configurations des plateformes pour le schéma

Champs de l'élément de publication

Chaque publication du tableau peut avoir son propre contenu, ses médias et son horaire de programmation.

Paramètres de l’élément de publication

ParamètreTaperDescription
contentTypeREQUISContentTypeType de contenu (requis)
textstringContenu texte de la publication. Sur LinkedIn, mentionnez une page entreprise avec @[Nom de la page](urn:li:organization:<id>), en écrivant le nom exactement comme LinkedIn l'affiche. LinkedIn n'autorise que les mentions de pages entreprise, pas de personnes
platformTextsPlatformText[]Remplacements de texte par plateforme
mediaUrlsstring[]URLs des fichiers médias
mediaAltTextsstring[]Texte alternatif de chaque image, dans le même ordre que mediaUrls. 1000 caractères maximum par entrée ; une chaîne vide ignore une image. Envoyé à X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram et Threads. Pinterest utilise le premier, tronqué à 500 caractères. TikTok, YouTube, la fiche d'établissement Google et les vidéos l'ignorent.
thumbnailUrlstringURL de miniature pour les publications vidéo
thumbnailTimestampMsnumberImage de la vidéo à utiliser comme miniature, en millisecondes depuis le début
platformThumbnailsPlatformThumbnail[]Une miniature différente pour une plateforme d'une publication vidéo, sous la forme { platform, thumbnailUrl?, thumbnailTimestampMs? }. YOUTUBE, FACEBOOK, LINKEDIN et TELEGRAM acceptent une image, INSTAGRAM et PINTEREST une image ou une image de la vidéo, TIKTOK seulement une image de la vidéo. Les plateformes sans entrée utilisent thumbnailUrl et thumbnailTimestampMs
platformAspectRatiosPlatformAspectRatio[]Recadre chaque image d'une publication IMAGE ou CAROUSEL dans un format sur une plateforme, sous la forme { platform, aspectRatio, fit? }. aspectRatio vaut SQUARE, PORTRAIT, VERTICAL ou LANDSCAPE : INSTAGRAM accepte SQUARE, PORTRAIT ou LANDSCAPE, TIKTOK les quatre. fit vaut CROP (par défaut) ou PAD. Consultez Créer une publication
firstCommentsPlatformFirstComment[]Un commentaire publié sous la publication depuis le même compte, sous la forme { platform, text }. Une entrée par plateforme. LINKEDIN accepte jusqu'à 1250 caractères, TWITTER 280, THREADS 500, BLUESKY 300, MASTODON 500, YOUTUBE 10000 (pas sur les vidéos privées ou conçues pour les enfants), FACEBOOK 8000 et INSTAGRAM 2200 (pas sur les stories). Les autres plateformes renvoient une erreur 400. Une page Facebook ou un compte Instagram connecté avant l'arrivée des premiers commentaires doit être reconnecté une fois ; d'ici là, son commentaire échoue avec firstCommentError
threadRepliesPlatformThreadReplies[]Transforme la publication en fil, sous la forme { platform, texts } : la publication l'ouvre et chaque texte part en réponse au précédent, depuis le même compte. Une entrée par plateforme, jusqu'à 25 textes. TWITTER accepte 280 caractères par réponse (plus avec X Premium), THREADS 500, BLUESKY 300 et MASTODON 500 (ou la limite de l'instance). Les autres plateformes, une réponse vide ou trop longue et une plateforme qui a aussi un premier commentaire renvoient une 400
scheduledAtREQUISstringDate de programmation (requis, ISO 8601)
pinterestConfigsPinterestConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
tiktokConfigsTikTokConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
instagramConfigsInstagramConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
facebookConfigsFacebookConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
youtubeConfigsYouTubeConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
googleBusinessConfigsGoogleBusinessConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication
tumblrConfigsTumblrConfig[]Remplacement par publication. Lorsqu'il est défini, il a priorité sur la configuration au niveau du lot pour cette publication

Remplacements de configuration de plateforme par publication

Les configurations de plateforme peuvent être définies à deux niveaux : au niveau du lot (appliquées à toutes les publications par défaut) et par publication (remplacent le niveau du lot pour cette publication spécifique). Si une publication inclut sa propre configuration de plateforme, elle remplace complètement la configuration au niveau du lot pour cette plateforme.

Limite de débit

Maximum 100 publications par requête. Chaque publication est traitée indépendamment. Si l’une échoue à la validation, les autres seront quand même programmées.

Un compte par plateforme

Un seul compte par plateforme est autorisé. Toutes les publications du lot partagent les mêmes connexions, vous ne pouvez donc pas inclure plusieurs identifiants de connexion pour la même plateforme. Cette restriction est appliquée pour respecter les conditions d'utilisation des plateformes.

Vérifiez d'abord le lot

Envoyez le même corps à Vérifier une programmation en masse (POST /api/v1/social-posts/bulk/validate) pour obtenir un rapport par publication avant que quoi que ce soit ne soit programmé.
Programmer des publications en masse
curl --request POST \
  --url https://post.adaptlypost.com/post/api/v1/social-posts/bulk \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "platforms": ["YOUTUBE", "PINTEREST"],
    "timezone": "America/New_York",
    "youtubeConnectionIds": ["conn_yt123"],
    "pinterestConnectionIds": ["conn_pin456"],
    "youtubeConfigs": [{
      "connectionId": "conn_yt123",
      "postType": "SHORTS",
      "privacyStatus": "public"
    }],
    "pinterestConfigs": [{
      "connectionId": "conn_pin456",
      "boardId": "board_abc",
      "title": "Default pin title"
    }],
    "posts": [
      {
        "contentType": "VIDEO",
        "text": "First video!",
        "mediaUrls": ["https://cdn.adaptlypost.com/uploads/video1.mp4"],
        "scheduledAt": "2026-03-15T10:00:00Z"
      },
      {
        "contentType": "VIDEO",
        "text": "Second video with custom config",
        "mediaUrls": ["https://cdn.adaptlypost.com/uploads/video2.mp4"],
        "scheduledAt": "2026-03-15T14:00:00Z",
        "youtubeConfigs": [{
          "connectionId": "conn_yt123",
          "postType": "VIDEO",
          "videoTitle": "Full tutorial",
          "privacyStatus": "unlisted"
        }]
      }
    ]
  }'
201
{
  "totalScheduled": 2,
  "totalFailed": 0,
  "results": [
    {
      "postId": "post_abc001",
      "success": true,
      "isScheduled": true,
      "scheduledAt": "2026-03-15T10:00:00Z",
      "errorMessage": null
    },
    {
      "postId": "post_abc002",
      "success": true,
      "isScheduled": true,
      "scheduledAt": "2026-03-15T14:00:00Z",
      "errorMessage": null
    }
  ]
}