L'API réseaux sociaux pour publier, programmer et recevoir des webhooks

Publiez et programmez sur 13 réseaux avec une seule API REST. Lisez les statistiques, répondez aux commentaires et DM, et recevez un webhook signé dès qu'un post est publié, échoue ou est validé.

REST et JSON Clés API Bearer Webhooks signés Serveur MCP aussi
REST/api/v1+webhooks
  1. Vous programmez un post Vous → RobinReachPOST /api/v1/posts
    Authorization: Bearer YOUR_API_KEY
    {"content":"Our autumn menu lands on Friday.","social_profile_ids":[101,102],"publish_time":"2026-11-13T09:00","timezone":"America/New_York","status":"scheduled"}
  2. RobinReach le place dans le calendrier RobinReach → VousRéponse
    {"id":18342,"status":"scheduled","publish_time":"2026-11-13T09:00:00-05:00","timezone":"America/New_York","social_profiles":[{"name":"Northwind Instagram","platform":"instagram","status":"pending"},{"name":"Northwind LinkedIn","platform":"linkedin","status":"pending"}]}
  3. Vendredi à 9h00, il est publié et vous êtes prévenu RobinReach → Votre serveurPOST https://your-app.com/webhooks
    X-RobinReach-Event: post.published
    X-RobinReach-Signature: t=1794150000,v1=5257a869e7…
    {"id":"evt_1c626cf6bcb5","type":"post.published","data":{"post":{"id":18342,"status":"published","summary":{"total":2,"published":2,"failed":0}}}}

Un exemple d'échange avec des identifiants inventés. Les webhooks arrivent sous forme de POST signé sur votre endpoint HTTPS.

Démarrage rapide

Programmez votre premier post en une requête

Envoyez le texte, les profils et l'heure. RobinReach vérifie le post selon les règles de chaque réseau, le place dans le calendrier et le publie à l'heure.

  1. Générez une clé API sur la page Intégrations de votre tableau de bord.
  2. Appelez GET /api/v1/social_profiles pour obtenir les identifiants des comptes sur lesquels publier.
  3. Envoyez cette requête. L'heure est lue dans le timezone que vous indiquez : 09:00 signifie donc 9h00 pour votre audience.

Pas sûr qu'un post passe ? POST /api/v1/posts/validate lance les mêmes vérifications sans rien enregistrer.

Terminal
curl -X POST https://robinreach.com/api/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "Our autumn menu lands on Friday.",
  "social_profile_ids": [
    101,
    102
  ],
  "publish_time": "2026-11-13T09:00",
  "timezone": "America/New_York",
  "status": "scheduled"
}'
Endpoints

Tout RobinReach, en HTTP

L'API couvre le travail que votre équipe fait dans le tableau de bord, pour que votre code puisse le faire aussi.

  • Posts et programmation

    Créez, validez, publiez tout de suite, reprogrammez et supprimez des posts, avec les options propres à chaque réseau.

    /posts/posts/validate/posts/{id}/posts/{id}/publish_now/posts/{id}/reschedule
  • Médiathèque

    Importez images, vidéos et PDF, rangez-les dans des dossiers et réutilisez-les dans vos posts.

    /attachments/attachments/{id}/folders/folders/{id}
  • Marques et profils

    Listez les marques et les profils connectés, ainsi que les tableaux Pinterest, l'audio Instagram, les catégories et étiquettes WordPress, les lieux et les groupes de hashtags.

    /brands/brands/{id}/social_profiles/social_profiles/{id}/social_profiles/{id}/pinterest_boards/locations/hashtag_groups
  • Statistiques

    L'engagement par profil et par post, vos meilleurs posts, cette semaine face à la précédente, et le calendrier.

    /analytics/summary/analytics/top_posts/posts/{id}/analytics/social_profiles/{id}/analytics/calendar
  • Commentaires et messages

    Lisez les fils de commentaires, les DM Facebook et Instagram et les avis Google de vos profils, et répondez au nom de la marque.

    /comment_threads/comment_threads/{id}/reply
  • Automatisations

    Créez, mettez en pause et relancez les automatisations Comment to DM, les flux RSS et les tâches de recyclage. Vérifiez un flux avant de l'ajouter et lancez une tâche à la demande.

    /comment_automations/comment_automations/{id}/pause/rss_feeds/rss_feeds/validate/rss_feeds/{id}/sync/repurposing_tasks/repurposing_tasks/{id}/run
  • Page bio

    Modifiez la page bio de la marque et ses blocs, réorganisez-les, consultez les statistiques de la page et récupérez son QR code.

    /bio_page/bio_page/blocks/bio_page/blocks/{id}/bio_page/blocks/reorder/bio_page/analytics/bio_page/qr
  • Liens clients

    Les Connect Links permettent aux clients d'ajouter leurs propres comptes. Les Approval Links leur permettent de relire les posts sans se connecter.

    /connect_links/connect_links/{id}/approval_links/approval_links/{id}
  • Webhooks

    Ajoutez des endpoints, envoyez des événements de test, renouvelez les secrets de signature et consultez le journal des livraisons.

    /webhook_endpoints/webhook_endpoints/{id}/webhook_endpoints/{id}/test/webhook_endpoints/{id}/rotate_secret/webhook_endpoints/{id}/enable/webhook_endpoints/{id}/deliveries
Webhooks

Arrêtez d'interroger. Soyez prévenu quand ça arrive.

Ajoutez un endpoint HTTPS et RobinReach envoie un POST signé pour les événements choisis. Alertez votre équipe, synchronisez votre CRM ou répondez à un commentaire ou un DM à la seconde où il arrive.

8 événements à suivre

  • post.publishedUn post a été publié sur chaque profil sélectionné.
  • post.partially_publishedUn post a été publié sur certains profils et a échoué sur d'autres.
  • post.failedUn post a échoué sur chaque profil sélectionné, avec la raison pour chacun.
  • post.approvedUn post a été validé dans le tableau de bord ou via un Approval Link.
  • post.rejectedUn post a été refusé, avec la note du relecteur.
  • comment.receivedQuelqu'un d'autre a commenté sur un profil connecté. Vos propres réponses ne le déclenchent jamais.
  • review.receivedUn nouvel avis est arrivé sur votre Fiche d'établissement Google.
  • message.receivedQuelqu'un a envoyé un message privé à une Page Facebook ou un compte Instagram connecté.

Jusqu'à 10 endpoints par marque. Avec la clé principale, un endpoint sur votre marque par défaut peut écouter toutes les marques à la fois.

Ce qui arrive

POST vers votre endpoint
{
  "id": "evt_1c626cf6bcb54613a8053e24d5361527",
  "type": "post.published",
  "created_at": "2026-11-13T14:00:00Z",
  "api_version": "2026-11-01",
  "data": {
    "brand": {
      "id": "northwind",
      "name": "Northwind Coffee"
    },
    "post": {
      "id": 18342,
      "status": "published",
      "content": "Our autumn menu lands on Friday.",
      "social_profiles": [
        {
          "id": 101,
          "platform": "instagram",
          "status": "published",
          "remote_url": "https://www.instagram.com/p/C9xYz12AbCd/"
        },
        {
          "id": 102,
          "platform": "linkedin",
          "status": "published",
          "remote_url": "https://www.linkedin.com/feed/update/urn:li:share:7392018841650188288/"
        }
      ],
      "summary": {
        "total": 2,
        "published": 2,
        "failed": 0
      }
    }
  }
}

Vérifiez chaque requête

Chaque requête porte X-RobinReach-Signature: t=…,v1=…, un HMAC-SHA256 de l'horodatage et du corps brut, signé avec le secret de signature de votre endpoint. Vérifiez-le avant de faire confiance au contenu, et rejetez les horodatages de plus de cinq minutes.

robinreach_webhooks_controller.rb
class RobinreachWebhooksController < ActionController::API
  def create
    body = request.raw_post
    return head :unauthorized unless valid_signature?(body, request.headers["X-RobinReach-Signature"])

    event = JSON.parse(body)
    # Skip event["id"] if you have seen it, then queue the work.
    head :ok
  end

  private

  def valid_signature?(body, header, tolerance: 300)
    parts = header.to_s.split(",").map { |p| p.split("=", 2) }.select { |kv| kv.size == 2 }.to_h
    t = Integer(parts["t"].to_s, exception: false)
    return false unless t && parts["v1"] && (Time.now.to_i - t).abs <= tolerance

    expected = OpenSSL::HMAC.hexdigest("SHA256", ENV.fetch("ROBINREACH_WEBHOOK_SECRET"), "#{t}.#{body}")
    ActiveSupport::SecurityUtils.secure_compare(expected, parts["v1"])
  end
end
Fiable par défaut

Conçu pour le jour où votre serveur tombe

  • Relancé pendant environ un jour

    Une livraison échouée est relancée 7 fois sur environ 28 heures, avec des intervalles de plus en plus longs.

  • En pause, jamais muet

    Après 10 livraisons échouées d'affilée, l'endpoint se met en pause et l'administrateur de la marque reçoit un e-mail. Relancez-le en un clic.

  • Sans risque en double

    Chaque événement a un identifiant unique, pour que votre code puisse ignorer le rare doublon.

  • Un journal des livraisons

    Chaque tentative, code de statut et corps de réponse est conservé 30 jours, et vous pouvez envoyer un événement de test à tout moment.

Les détails

Ce que toute intégration doit savoir

URL de base
https://robinreach.com/api/v1. Tous les chemins de cette page sont relatifs à cette URL.
Authentification
Envoyez votre clé sous la forme Authorization: Bearer YOUR_API_KEY. Un paramètre api_key dans l'URL fonctionne aussi, mais il peut finir dans les journaux du serveur : préférez l'en-tête.
Clés principales et de marque
Une clé principale atteint toutes les marques du compte ; choisissez-en une avec brand_id. Une clé de marque n'atteint qu'une seule marque : vous pouvez la confier sans risque à un client ou à un outil dédié.
Format
Du JSON en entrée comme en sortie. Les heures sont en ISO 8601, lues dans le fuseau IANA que vous indiquez, par exemple America/New_York, ou dans celui de la marque si vous n'en indiquez pas.
Erreurs
401 pour une clé absente ou erronée, 404 pour tout ce qui sort de la portée de la clé, 422 avec un message clair quand un post enfreint les règles d'un réseau.
Limites de débit
Les requêtes sont limitées par clé. Une requête freinée reçoit 429 avec les en-têtes Retry-After et X-RateLimit-*, pour que votre client puisse ralentir de lui-même.
Versions
L'API REST est versionnée dans le chemin, /api/v1, et chaque webhook indique la version de son contenu dans api_version.
Formules
Incluse avec Bloom, Thrive et Scale. Générez vos clés sur la page Intégrations de votre tableau de bord.
Ce que les gens construisent

Une API, 13 réseaux

Chaque réseau garde ses propres options, comme les Reels Instagram, les titres YouTube, les tableaux Pinterest ou les posts document LinkedIn, définies post par post dans platform_options.

  • La programmation dans votre produit

    Offrez à vos utilisateurs la publication sur 13 réseaux sans construire ni maintenir vous-même l'API de chaque réseau.

  • Le travail client à grande échelle

    Gérez chaque marque cliente depuis un seul compte, avec une clé de marque et ses propres webhooks pour chaque client.

  • Des posts à partir de vos données

    Transformez les nouveaux produits, annonces, articles ou événements en posts programmés dès qu'ils existent.

  • Alertes et rapports

    Envoyez les posts en échec vers Slack, poussez les résultats dans votre CRM et récupérez les statistiques dans vos propres tableaux de bord.

Autres accès

Sans code, ou avec un agent IA ? Même plateforme.

  • Serveur MCP pour agents IA

    Claude, ChatGPT, Cursor et vos propres agents obtiennent les mêmes actions sous forme d'outils, via une URL et la même clé.

    Voir le serveur MCP
  • Nœud communautaire n8n

    Installez n8n-nodes-robinreach et programmez des posts depuis n'importe quel workflow n8n.

    Voir sur GitHub
  • Zapier et Make

    Appelez l'API depuis une étape webhook dans Zapier ou un module HTTP dans Make. La page Intégrations a les réglages prêts à copier.

    Ouvrir Intégrations
FAQ

Les questions des développeurs

Qu'est-ce que l'API RobinReach ?

Une API REST pour publier sur les réseaux sociaux. Avec une seule clé, vous créez, programmez et publiez des posts sur 13 réseaux, importez des médias, lisez les statistiques, répondez aux commentaires et DM, pilotez les automatisations et recevez des webhooks, avec les comptes que vous connectez dans RobinReach.

Quels réseaux sociaux l'API prend-elle en charge ?

Instagram, Facebook, TikTok, LinkedIn, YouTube, X (Twitter), Threads, Pinterest, Bluesky, Mastodon, Fiche d'établissement Google, Telegram et WordPress. Chacun garde ses propres options, comme les Reels, les titres YouTube ou les tableaux Pinterest.

Comment m'authentifier ?

Générez une clé sur la page Intégrations de votre tableau de bord et envoyez-la sous la forme Authorization: Bearer YOUR_API_KEY. Un paramètre api_key dans l'URL fonctionne aussi, mais l'en-tête garde la clé hors des journaux du serveur.

Puis-je limiter une clé API à une seule marque ?

Oui. La clé principale fonctionne sur toutes les marques de votre compte, et vous en choisissez une avec brand_id. Chaque marque peut aussi avoir sa propre clé de marque qui ne fonctionne que pour elle : elle n'a pas besoin de brand_id, ne voit pas vos autres marques et ne peut ni créer ni supprimer de marques.

Comment programmer un post avec l'API ?

Envoyez POST /api/v1/posts avec le content, les social_profile_ids, un publish_time en ISO 8601, un timezone comme America/New_York, et status à scheduled. Appelez d'abord POST /api/v1/posts/validate pour le vérifier selon les règles de chaque réseau sans l'enregistrer.

L'API prend-elle en charge les webhooks ?

Oui. Ajoutez jusqu'à 10 endpoints HTTPS par marque et choisissez parmi 8 événements : post publié, partiellement publié, en échec, validé et refusé, commentaire reçu, avis reçu et message Facebook ou Instagram reçu. Chaque requête est signée en HMAC-SHA256, et les livraisons échouées sont relancées pendant environ un jour.

Comment vérifier la signature d'un webhook ?

Lisez t et v1 dans l'en-tête X-RobinReach-Signature, calculez un HMAC-SHA256 de t.raw_body avec votre secret de signature et comparez les deux en temps constant. Rejetez les horodatages de plus de cinq minutes. Les exemples ci-dessus le font en Ruby, Node et Python.

Puis-je répondre aux commentaires et DM via l'API ?

Oui. GET /api/v1/comment_threads liste les fils de commentaires, les conversations Facebook et Instagram et les avis Google, et POST /api/v1/comment_threads/{id}/reply répond à l'un d'eux au nom de la marque : sous le commentaire, en privé pour un DM, ou publiquement sur Google pour un avis. Associez-le aux webhooks comment.received et message.received pour répondre dès qu'un élément arrive.

Quelles formules incluent l'accès à l'API ?

Bloom, Thrive et Scale. La même clé fonctionne aussi avec le serveur MCP. Consultez la page des tarifs pour les limites de chaque formule.

Puis-je l'utiliser sans code, ou depuis un agent IA ?

Oui. Le serveur MCP donne à Claude, ChatGPT et aux autres agents les mêmes actions sous forme d'outils, le nœud communautaire n8n fonctionne dans n'importe quel workflow n8n, et Zapier et Make peuvent appeler l'API depuis une étape webhook ou HTTP.

Puis-je gérer les automatisations et la page bio via l'API ?

Oui. Les endpoints couvrent les automatisations Comment to DM, les flux RSS (avec une étape de validation et une synchronisation à la demande), les tâches de recyclage (mettre en pause, relancer ou lancer tout de suite) et la page bio avec ses blocs, ses statistiques et son QR code. Mettre en pause et relancer peuvent être appelés deux fois sans risque : une nouvelle tentative ne peut pas annuler un réglage.

Livrez votre intégration cette semaine

Générez une clé, programmez un post en une requête et ajoutez un webhook. La référence contient chaque champ.

L'accès à l'API est inclus avec Bloom, Thrive et Scale.