sent signifie que Meta a accepté le message, pas que le destinataire l’a reçu. La livraison est en fin de compte dictée par le paramètre Instagram Message requests du destinataire : s’il n’autorise pas les demandes de message de tout le monde, Meta renvoie une réponse de succès et supprime silencieusement le message, ce qui est invisible à chaque couche d’API. Même un DM déclenché par un commentaire et effectivement livré arrive sous forme de demande de message que le destinataire doit accepter (sauf si une conversation existe déjà entre les deux comptes). Voir Automation DM Sent but Not Delivered pour l’explication complète.Fonctionnement
Créer une automatisation
POST /automations avec les déclencheurs et les actions souhaités. L’automatisation est activée immédiatement.Un utilisateur final s'engage
Ayrshare fait la correspondance et lance
Vérifier ce qui a été déclenché
GET /automations/:id/activity retourne le journal d’audit — chaque tentative d’envoi, les résultats par action et toute erreur.Déclencheurs
Vous pouvez attacher jusqu’à 50 déclencheurs à une automatisation. Chaque déclencheur est une union discriminée sur le champtype ; les champs spécifiques au type se trouvent au même niveau. Tous les déclencheurs sont uniquement Instagram en v1.
storyId sur un déclencheur de story pour qu’il se déclenche sur chaque story du compte connecté.
Actions
Vous pouvez attacher jusqu’à 50 actions à une automatisation. Elles s’exécutent séquentiellement ; chaque résultat est enregistré sur la ligne d’activité.Fenêtre de déduplication par action
Chaque action — quel que soit son type — accepte également un champ optionnel de premier niveaudedupWindowMinutes qui remplace la fenêtre de déduplication par destinataire par défaut de 7 jours pour cette action uniquement.
- Définissez-le à
0pour désactiver entièrement la déduplication pour cette action (typique pourfire_webhook/send_emailoù le destinataire attend chaque événement). - Plafonné à
525600(un an).
Charge utile fire_webhook
Lorsque fire_webhook s’exécute, il POSTe un corps JSON sur votre URL de webhook au niveau du compte :
recipientUsername et keyword valent null lorsque le déclencheur ne les renseigne pas (p. ex. dm_keyword ne comporte pas de nom d’utilisateur dans la charge utile de Meta ; story_reply n’a pas de mot-clé).
Variables de modèle
send_dm.message, send_email.subject et send_email.message prennent en charge la substitution {{placeholder}}. Les placeholders inconnus sont rejetés au moment de la création/mise à jour (sous forme d’erreur de validation 473) afin qu’une faute de frappe ne laisse jamais fuiter en silence le littéral {{foo}} dans un message destiné au client.
sender_email / recipient_email. Ceux-ci ne sont délibérément pas exposés — votre e-mail de facturation n’a aucune raison légitime d’apparaître dans un DM à un inconnu, et Meta ne fournit pas l’e-mail du destinataire dans les webhooks IG. Éviter ces placeholders empêche la divulgation accidentelle.Limites de débit et plafonds
POST (création) et de la réactivation PUT (active: false → true), faisant apparaître le code d’erreur 470. Besoin d’une limite par profil plus élevée ? Contactez le support pour qu’elle soit augmentée pour votre compte.
Le plafond quotidien de DM s’applique par compte parent Ayrshare, partagé entre tous vos profils, avec un sous-plafond par profil pour qu’un profil très actif ne draine pas tout le quota du compte. Lorsqu’un plafond de DM est atteint, la ligne d’activité enregistre le statut rate_limited et aucun DM n’est envoyé.
Plafonds structurels sur une seule automatisation : 1 à 50 déclencheurs, 1 à 50 actions.
Instagram lui-même plafonne les DM à environ 200/heure par compte. Le moteur régule les envois avec une gigue de 20 à 60 secondes pour rester bien en dessous.
Statuts d’activité
Une ligne dansGET /automations/:id/activity porte un status de premier niveau plus un status par action à l’intérieur d’actionResults[] :
pending et in_flight sont transitoires ; tout le reste est terminal.
sent est un accusé d’acceptation par la plateforme, pas un accusé de livraison. Instagram n’expose la livraison des messages à aucune API. Une action send_dm est marquée sent au moment où Instagram accepte le message ; la réception effective par le destinataire dépend de son paramètre Instagram Message requests, qu’Ayrshare ne peut ni lire ni influencer. Voir Automation DM Sent but Not Delivered.Codes d’erreur
L’API renvoie deux formes d’erreur :- Erreurs de règle métier portent un
codenuméroté d’automatisation (p. ex.{ "action": "automation", "code": 469, ... }). - Erreurs de validation — tout corps de requête mal formé (champs manquants ou invalides, variables de modèle inconnues, clés non reconnues) — sont retournées comme une seule réponse
473avec un objetdetailsqui liste les champs fautifs.detailsest la sortie du validateur (formErrorsplusfieldErrors). Faites vos branchements surdetails, et non sur un code par condition. DansfieldErrors, les clés sont les champs de premier niveau de la requête (triggers,actions) : un problème à l’intérieur d’une entrée spécifique, comme un déclencheur auquel il manque sonkeywords, est signalé sous ce champ (p. ex.triggers), tandis queformErrorscontient les problèmes de niveau objet tels que les clés non reconnues.
Ce que Meta N’AUTORISE PAS
Quelques capacités fréquemment demandées ne sont pas prises en charge car Meta ne les autorise pas sur l’API publique d’Instagram :- Auto-DM aux nouveaux abonnés. Instagram ne publie pas de webhook de suivi.
- Premiers DM à des inconnus. Meta exige que le destinataire ait interagi en premier (commentaire, réponse, DM, réaction) avant qu’un compte pro puisse lui envoyer un message. Chaque déclencheur pris en charge est ancré à un tel engagement — mais notez qu’être autorisé à envoyer n’est pas la même chose que le message soit livré : le paramètre Instagram Message requests du destinataire peut toujours conduire Meta à accepter puis supprimer silencieusement le message (voir Automation DM Sent but Not Delivered).
- Campagnes de sortie en masse. Les plafonds horaires de DM et les heuristiques anti-abus s’appliquent au niveau de la plateforme.
Utilisation multi-profil
Les points de terminaison respectent l’en-têteprofileKey. Passez la clé d’un profil enfant et l’automatisation est créée/gérée sous ce profil. Les limites de débit se répartissent entre les profils via un sous-plafond par profil afin qu’un profil bavard ne draine pas le quota du compte parent.
FAQ
Puis-je déclencher sur un nouvel abonné ?
Puis-je déclencher sur un nouvel abonné ?
comment_keyword, story_reply, dm_reaction, dm_keyword) est ancré à un tel engagement, ce qui rend l’envoi permissible.Pourquoi une activité indique-t-elle `sent` alors que le destinataire n'a jamais reçu le DM ?
Pourquoi une activité indique-t-elle `sent` alors que le destinataire n'a jamais reçu le DM ?
sent signifie qu’Instagram a accepté le message, pas qu’il a été livré. La livraison dépend du paramètre Instagram Message requests du destinataire — s’il n’autorise pas les demandes de message de tout le monde, Meta renvoie une réponse de succès et supprime silencieusement le message, sans erreur, webhook ou autre signal sur aucune surface d’API. Un DM déclenché par un commentaire, même livré avec succès, arrive également sous forme de demande de message que le destinataire doit accepter (sauf si une conversation existe déjà). Il s’agit d’une limitation permanente de la plateforme Instagram. Voir Automation DM Sent but Not Delivered.Que se passe-t-il si mon jeton d'accès est invalide lorsqu'une automatisation se déclenche ?
Que se passe-t-il si mon jeton d'accès est invalide lorsqu'une automatisation se déclenche ?
auth_error et le DM n’est pas retenté. Reconnectez le compte, puis le prochain engagement correspondant se déclenchera normalement.Pourquoi y a-t-il un délai avant l'envoi du DM ?
Pourquoi y a-t-il un délai avant l'envoi du DM ?
send_dm est planifié 20 à 60 secondes après l’engagement pour paraître organique aux systèmes anti-spam d’Instagram. Les actions fire_webhook et send_email n’ont PAS de gigue. L’horodatage created de la ligne d’activité est le moment où le déclencheur a correspondu ; completedAt est le moment où l’envoi s’est terminé.Les lignes d'activité sont-elles conservées indéfiniment ?
Les lignes d'activité sont-elles conservées indéfiniment ?
GET /automations/:id/activity renvoie les lignes des 30 derniers jours pour des raisons de performance. (La protection contre la dédup utilise sa propre fenêtre par action — par défaut 7 jours — qui est indépendante de la période de consultation des activités.)La suppression d'une automatisation supprime-t-elle son historique d'activité ?
La suppression d'une automatisation supprime-t-elle son historique d'activité ?
deleted, aucun nouvel envoi ne se produit, mais les lignes d’activité historiques restent consultables via le point de terminaison d’activité.Points de terminaison
POST /automations— créer une nouvelle automatisationGET /automations— lister vos automatisationsGET /automations/:id— récupérer une automatisation avec ses déclencheurs et actionsPUT /automations/:id— mise à jour partielle ; mettre en pause viaactive: falseDELETE /automations/:id— suppression logiqueGET /automations/:id/activity— journal d’audit d’envoi paginé par curseur
