KKreatoAI/Documentation API

Publier sur les réseaux sociaux depuis Make

Un scénario Make peut publier sur Instagram, les Pages Facebook, TikTok, les profils LinkedIn et YouTube sans parler à chacun de ces réseaux : il envoie une seule requête à KreatoAI, qui publie partout où vous le demandez. Vous n'avez aucune application à créer chez Meta, TikTok ou Google, ni aucune revue à passer.

Le principe

Déclencheur (une ligne dans un tableur, un formulaire, un flux RSS, un horaire…)
  → HTTP > Make a request : POST https://api.kreatoai.com/v1/posts
  → Webhooks > Custom webhook (facultatif) : le résultat, réseau par réseau

Tout passe par l'application HTTP de Make, incluse dans Make : il n'y a rien à installer.

Avant de commencer

Reliez vos réseaux à KreatoAI depuis Comptes connectés, puis créez une clé dans Réglages → Claude et API → Clés API. Elle commence par sk-kre-v1- et ne s'affiche qu'une fois : gardez-la de côté. Créez-en une pour Make seul, vous pourrez la révoquer sans rien casser ailleurs.

Sans formule, un espace publie trois fois gratuitement. Au-delà, l'API répond 402 subscription_required jusqu'à ce qu'une formule soit choisie.

Ranger la clé dans Make

Ajoutez le module Make a request, choisissez API key dans Authentication type, puis créez un trousseau (Create a keychain) avec ces valeurs :

Champ de MakeValeur
NameKreatoAI
Keysk-kre-v1-votre_cle
API key placementIn the header
API key parameter namex-api-key

La clé n'est plus recopiée dans chaque module : tous les modules qui utilisent ce trousseau la lisent, et elle se change à un seul endroit (Keys, dans le menu de Make).

Pour vérifier la clé sans rien publier, faites un premier appel en GET sur https://api.kreatoai.com/v1/accounts : la réponse liste vos comptes reliés, avec leur réseau et leur nom.

Publier depuis un scénario

Champ de MakeValeur
URLhttps://api.kreatoai.com/v1/posts
MethodPOST
Body content typeapplication/JSON
Body input methodData structure (voir plus bas), ou JSON string pour un texte fixe
Parse responseYes

Avec un texte écrit à la main, le corps en JSON string ressemble à ceci :

{
  "targets": ["facebook", "linkedin"],
  "content": "Notre nouvelle offre est en ligne",
  "idempotencyKey": "offre-octobre"
}

Cette requête publie vraiment, tout de suite, sur la première Page Facebook et le premier profil LinkedIn reliés. La réponse arrive aussitôt (202) avec l'identifiant de la publication (id) et une ligne par réseau :

{
  "id": "9f1c8b2e-…",
  "status": "processing",
  "targets": [
    { "platform": "facebook", "accountName": "Ma Page", "status": "pending", … },
    { "platform": "linkedin", "accountName": "Mon profil", "status": "pending", … }
  ]
}

Les réseaux possibles sont facebook, instagram, tiktok, linkedin et youtube. Si vous avez relié plusieurs comptes d'un même réseau, une cible peut désigner le compte exact : { "platform": "facebook", "channelId": "…" }, avec l'identifiant lu dans /v1/accounts (voir Comptes connectés). Tous les champs sont décrits dans Publication multi-réseaux.

Un texte venu d'un autre module

Un texte de publication contient presque toujours des retours à la ligne, des guillemets ou des émojis. En JSON string, Make colle la valeur telle quelle : un seul guillemet casse la requête, qui revient en 400. Choisissez plutôt Data structure : Make protège alors lui-même ces caractères. Créez la structure une fois, puis mappez vos valeurs dans chaque champ :

Champ et type dans MakeContenu
targetsArray, éléments TextLes réseaux visés, par exemple instagram et facebook
contentTextLe texte, mappé depuis le module précédent
mediaUrlsArray, éléments TextLes adresses des images ou de la vidéo (facultatif pour Facebook et LinkedIn)
scheduledAtTextFacultatif : la date de publication
idempotencyKeyTextFacultatif : un identifiant stable de la ligne source

idempotencyKey vaut la peine d'être rempli. Si Make rejoue une exécution après une erreur, la même clé empêche une double publication : KreatoAI renvoie la publication déjà créée au lieu d'en créer une seconde. Prenez l'identifiant de la ligne ou de l'élément qui a déclenché le scénario.

Joindre une image ou une vidéo

mediaUrls attend des adresses https publiques qui renvoient directement le fichier. Si votre fichier est ailleurs (un lien qui ouvre une page de partage, un stockage privé), envoyez d'abord son adresse à POST /v1/media avec le même trousseau et le corps { "url": "https://…" } : la réponse contient une adresse https://media.kreatoai.com/… à mettre dans mediaUrls. Une image peut peser 20 Mo, une vidéo 128 Mo (voir Médias).

Instagram et TikTok exigent au moins un média, YouTube une vidéo. De deux à dix images forment un carrousel sur Instagram, TikTok et LinkedIn ; Facebook ne prend que la première.

Programmer à une date

Ajoutez scheduledAt au format ISO 8601 avec le fuseau, par exemple 2026-10-02T08:30:00+02:00. Depuis une date de Make, la fonction {{formatDate(1.date; "YYYY-MM-DDTHH:mm:ssZ")}} donne ce format. La publication attend alors dans KreatoAI (status: "scheduled") et part seule à l'heure dite, même si Make est arrêté. Une date passée est refusée (400 scheduled_at_in_past). Pour décaler ou annuler, appelez PATCH ou DELETE sur /v1/posts/{id}.

Savoir quand c'est parti

Chaque réseau publie à son rythme, et TikTok ne confirme qu'une fois la vidéo ou le carrousel réellement en ligne. Plutôt que d'attendre dans le scénario, faites-vous prévenir :

1. Dans un second scénario, placez le déclencheur Webhooks, module Custom webhook, et copiez l'adresse que Make génère. 2. Collez-la dans Réglages → Claude et API → Webhooks et envoyez un test : Make reçoit un premier message. 3. Faites une vraie publication pendant que le module écoute (Detect new values) pour que Make connaisse tous les champs.

Chaque réseau envoie son propre message : type vaut publish.completed ou publish.failed, et data porte postId, platform, postUrl (le lien de la publication) ou failReason. Un filtre sur type suffit pour séparer les réussites des échecs (voir Webhooks).

L'adresse d'un webhook Make est publique : quiconque la connaît peut y écrire. Avant d'agir sur un message (prévenir un client, remplir un tableur), relisez la publication avec GET /v1/posts/{{data.postId}} et votre trousseau : seule la réponse de l'API fait foi.

Quand la requête échoue

Dans les réglages avancés du module, passez Return error if HTTP request fails à Yes : le scénario s'arrête sur une erreur au lieu de continuer avec une réponse vide. Les cas les plus courants :

RéponseCe qu’il faut faire
401 invalid_api_keyLa clé est mal copiée ou révoquée : recréez-en une et mettez à jour le trousseau.
400 invalid_targetsdetails dit quel réseau refuse et pourquoi : compte non relié, média manquant, texte trop long.
402 subscription_requiredLes trois publications offertes sont prises : il faut une formule.
402 channel_limit_exceededPlus de comptes reliés que la formule n’en permet : retirez-en un ou changez de formule.
429 rate_limit_exceededPlus de 30 requêtes par minute avec la même clé : attendez une minute avant de relancer.

Tous les codes sont dans Erreurs et les plafonds dans Limites. Vous préférez n8n ou Zapier ? Les mêmes appels y sont décrits : n8n, Zapier.