> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatiser la publication sur les réseaux sociaux avec Zapier

> Créez et programmez des publications Social media studio depuis n'importe quel Zap avec l'API REST, et déclenchez des Zaps depuis des webhooks signés lorsque des publications sont publiées ou échouent.

Il n'existe **pas encore d'application Social media studio native sur Zapier**. Vous pouvez néanmoins relier les deux avec l'application intégrée de Zapier, **Webhooks by Zapier** :

* **Zapier → Social media studio :** une action Webhooks by Zapier appelle l'API REST pour créer ou programmer une publication.
* **Social media studio → Zapier :** un déclencheur Webhooks by Zapier reçoit les événements envoyés par Social media studio (publication publiée, publication en échec, nouveau commentaire, etc.).

> [!NOTE]
>
> Webhooks by Zapier peut nécessiter un forfait Zapier payant. Vérifiez votre forfait Zapier avant de construire votre automatisation. Côté Social media studio, l'API REST nécessite un forfait **Standard**, **Advanced** ou **Lifetime** (Lite ne l'inclut pas). Le nombre de points de terminaison webhook que vous pouvez créer dépend de votre forfait ; voir [Présentation des webhooks](/fr/webhooks/overview.md).

## Avant de commencer

**1. Créer une clé d'API**

Dans Social media studio, ouvrez **Paramètres → API** ([app.so-me.studio/settings?tab=api](https://app.so-me.studio/settings?tab=api)) et créez une clé. Elle commence par `sk_live_` et n'est affichée qu'une seule fois. Voir [Authentification](/fr/authentication.md).

**2. Trouver les identifiants de vos comptes (facultatif)**

Si vous avez connecté plusieurs comptes sur la même plateforme, chaque publication doit indiquer lequel utiliser. Listez vos comptes une fois et notez l'`id` de chacun :

```bash theme={null}
curl https://api.so-me.studio/v1/accounts \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
```

Avec un seul compte sur une plateforme, vous pouvez omettre `accountId`.

## Créer ou programmer une publication depuis un Zap

Ajoutez une étape d'action : **Webhooks by Zapier → POST**.

| Champ | Valeur |
| - | - |
| URL | `https://api.so-me.studio/v1/posts` |
| Payload Type | `json` |
| Data | Une ligne par champ du corps (tableau ci-dessous), mappée depuis les étapes précédentes |
| Headers | `X-API-Key` → votre clé `sk_live_...` |

Zapier construit et échappe le JSON pour vous : un texte contenant des guillemets ou des sauts de ligne ne pose donc aucun problème.

| Champ du corps | Obligatoire | Valeur |
| - | - | - |
| `text` | Oui | Le texte de la publication. |
| `socialMedia` | Oui | Une plateforme par requête : `TWITTER`, `LINKEDIN`, `LINKEDIN_PAGE`, `FACEBOOK`, `INSTAGRAM`, `THREADS`, `TIKTOK`, `YOUTUBE`, `PINTEREST`, `BLUESKY`, `MASTODON`, `REDDIT`, `GOOGLE_MY_BUSINESS`, `WORDPRESS`, `DEV_TO`, `DRIBBBLE`, `DISCORD` ou `SLACK`. Il est impossible de publier sur `WHATSAPP` et `TELEGRAM`. |
| `postType` | Oui | `TEXT`, `IMAGE`, `MULTIPLE_IMAGES`, `VIDEO`, `CAROUSEL`, `REEL` ou `STORY`. |
| `scheduledAt` | Non | Heure au format ISO 8601, par exemple `2026-11-02T09:00:00Z`. Omettez-la pour publier immédiatement. L'étape **Formatter → Date / Time → Format** de Zapier peut convertir une date dans ce format. |
| `accountId` | Si nécessaire | L'`id` du compte issu de `GET /v1/accounts`. Nécessaire lorsque plusieurs comptes sont connectés sur cette plateforme ; sinon l'API répond `400` avec la liste des comptes parmi lesquels choisir. |
| `firstComment` | Non | Un commentaire publié sous la publication juste après sa mise en ligne (Facebook, Instagram, X, LinkedIn, LinkedIn Page, Threads, YouTube). |
| `fileIds` | Non | Identifiants de fichiers de la bibliothèque de médias à joindre, sous forme de liste. Téléversez d'abord les médias dans Social media studio, ou consultez le [Démarrage rapide](/fr/quickstart.md#téléverser-des-médias) pour les téléversements présignés. |

Pour publier sur plusieurs plateformes, ajoutez une étape POST par plateforme.

La requête équivalente, pour tester en dehors de Zapier :

```bash theme={null}
curl -X POST https://api.so-me.studio/v1/posts \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "New on the blog: how we plan a month of posts in an afternoon",
    "socialMedia": "LINKEDIN",
    "postType": "TEXT",
    "scheduledAt": "2026-11-02T09:00:00Z"
  }'
```

Un appel réussi renvoie `201` avec la publication, dont son `id` et `postStatus: "SCHEDULED"`. Mappez l'`id` dans les étapes suivantes si vous voulez modifier ou supprimer la publication.

> **Champs imbriqués : options TikTok et fils**
>
> Les publications TikTok nécessitent `tiktok.privacyLevel`, et les fils utilisent un tableau `threadParts`. L'action POST envoie des données clé-valeur à plat ; utilisez donc **Webhooks by Zapier → Custom Request** pour ces cas, avec la méthode `POST`, la même URL et les mêmes en-têtes plus `Content-Type: application/json`, et le corps JSON saisi dans **Data** :
>
> ```json theme={null}
> {
>   "text": "First post of the thread",
>   "socialMedia": "TWITTER",
>   "postType": "TEXT",
>   "threadParts": [{ "text": "Second post" }, { "text": "Third post" }]
> }
> ```
>
> Custom Request envoie le corps tel que saisi et n'échappe pas les valeurs mappées. Un champ mappé contenant un guillemet double ou un saut de ligne produit un JSON invalide, que l'API rejette avec `400`.

> **Erreurs**
>
> | Statut | Signification |
> | - | - |
> | `400` | Un champ est invalide, ou `accountId` est manquant alors que plusieurs comptes sont connectés sur cette plateforme. Le message indique le problème. |
> | `401` | La clé d'API est absente, incorrecte ou révoquée. |
> | `403` | Votre forfait n'inclut pas l'API REST, ou une limite du forfait a été atteinte. |
> | `429` | Limite de débit atteinte. La limite s'applique par espace de travail et dépend de votre forfait. |

## Déclencher un Zap depuis un événement Social media studio

**1. Créer le déclencheur dans Zapier**

Choisissez **Webhooks by Zapier → Catch Hook** comme déclencheur et copiez l'URL de webhook fournie par Zapier.

**2. Abonner cette URL dans Social media studio**

Ouvrez **Paramètres → Webhooks** ([app.so-me.studio/settings?tab=webhooks](https://app.so-me.studio/settings?tab=webhooks)), ajoutez un point de terminaison avec l'URL Zapier et choisissez les événements. Ou créez-le avec l'API :

```bash theme={null}
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
    "categories": ["post"],
    "events": ["post.published", "post.failed"],
    "description": "Zapier"
  }'
```

La réponse inclut le `secret` de signature de l'abonnement.

**3. Envoyer un événement de test**

Cliquez sur **Test** sur l'abonnement dans Paramètres → Webhooks, puis sur **Test trigger** dans Zapier pour qu'il apprenne les champs.

Chaque livraison est un `POST` JSON avec cette enveloppe :

```json theme={null}
{
  "event": "post.published",
  "category": "post",
  "timestamp": "2026-11-02T09:00:04.000Z",
  "data": { "postId": "6f1c2a9e-...", "platform": "LINKEDIN" }
}
```

Dans Zapier, les champs apparaissent sous les noms `Event`, `Data Post Id`, `Data Platform`, etc. Le bloc `data` contient des identifiants plutôt que le contenu complet ; pour une publication, appelez `GET https://api.so-me.studio/v1/posts/{postId}` avec une étape **Webhooks by Zapier → GET** afin de lire son texte, son lien en ligne (`shareUrl`) ou son `failureReason`.

Parmi les événements utiles pour les Zaps : `post.published`, `post.failed`, `post.scheduled`, `inbox.message_received`, `inbox.comment_received`, `social.account_disconnected` et `quota.limit_reached`. Voir [Présentation des webhooks](/fr/webhooks/overview.md) pour la liste complète et [Format des charges utiles](/fr/webhooks/payloads.md) pour des exemples de charges utiles.

> [!WARNING]
>
> Chaque livraison porte un en-tête `X-Webhook-Signature` : un HMAC-SHA256 hexadécimal du corps brut, calculé avec le secret de l'abonnement. Catch Hook ne le vérifie pas ; traitez donc l'URL Zapier comme un secret. Pour vérifier, utilisez **Catch Raw Hook** (qui transmet le corps non analysé et les en-têtes) et une étape **Code by Zapier** qui calcule le HMAC du corps brut et le compare à l'en-tête. Détails : [Vérification de la signature](/fr/webhooks/payloads.md#vérification-de-la-signature).

Social media studio attend une réponse pendant 10 secondes et relance une livraison en échec jusqu'à 4 fois. Un abonnement qui échoue 10 fois de suite est désactivé ; réactivez-le dans Paramètres → Webhooks.

## Autres outils

* [n8n](/fr/integrations/n8n.md) propose un nœud communautaire et des modèles de workflows prêts à l'emploi.
* [Make](/fr/integrations/make.md) fonctionne comme Zapier, avec ses modules HTTP et Webhooks.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.