sent bedeutet, dass Meta die Nachricht akzeptiert hat, nicht dass der Empfänger sie erhalten hat. Die Zustellung wird letztlich durch die Instagram-Einstellung Message requests des Empfängers bestimmt: Wenn dieser keine Message Requests von allen zulässt, gibt Meta eine Erfolgsantwort zurück und verwirft die Nachricht stillschweigend – und das ist auf jeder API-Ebene unsichtbar. Selbst eine zugestellte, kommentar-getriggerte DM landet als Message Request, den der Empfänger akzeptieren muss (es sei denn, zwischen den beiden Konten besteht bereits eine Konversation). Die vollständige Erklärung finden Sie unter Automation-DM gesendet, aber nicht zugestellt.Funktionsweise
Automatisierung erstellen
POST /automations mit den gewünschten Triggern und Aktionen. Die Automatisierung wird sofort aktiviert.Ein Endnutzer interagiert
Ayrshare gleicht ab und versendet
Prüfen, was ausgelöst wurde
GET /automations/:id/activity gibt das Audit-Log zurück – jeden Versendungsversuch, die Ergebnisse pro Aktion und etwaige Fehler.Trigger
Sie können einer Automatisierung bis zu 50 Trigger hinzufügen. Jeder Trigger ist eine Discriminated Union über das Feldtype; typspezifische Felder befinden sich auf derselben Ebene. Alle Trigger sind in v1 ausschließlich für Instagram verfügbar.
storyId bei einem Story-Trigger weg, um bei jeder Story des verbundenen Kontos auszulösen.
Aktionen
Sie können einer Automatisierung bis zu 50 Aktionen hinzufügen. Sie werden sequentiell ausgeführt; jedes Ergebnis wird in der Activity-Zeile festgehalten.Dedup-Fenster pro Aktion
Jede Aktion – unabhängig vom Typ – akzeptiert zusätzlich ein optionales FelddedupWindowMinutes auf oberster Ebene, das das standardmäßige 7-Tage-Dedup-Fenster pro Empfänger nur für diese Aktion überschreibt.
- Setzen Sie den Wert auf
0, um die Deduplizierung für diese Aktion vollständig zu deaktivieren (üblich beifire_webhook/send_email, wenn der Empfänger jedes Ereignis erwartet). - Auf
525600(ein Jahr) begrenzt.
fire_webhook payload
Wenn fire_webhook ausgeführt wird, sendet es einen JSON-Body per POST an Ihre Webhook-URL auf Kontoebene:
recipientUsername und keyword sind null, wenn der Trigger sie nicht befüllt (z. B. enthält dm_keyword in der Meta-Payload keinen Benutzernamen; story_reply hat kein Schlüsselwort).
Template-Variablen
send_dm.message, send_email.subject und send_email.message unterstützen {{placeholder}}-Substitution. Unbekannte Platzhalter werden beim Erstellen/Aktualisieren abgelehnt (als Validierungsfehler 473), sodass ein Tippfehler nie unbemerkt das wörtliche {{foo}} in eine an Kunden gerichtete Nachricht durchsickern lässt.
sender_email / recipient_email. Diese werden bewusst nicht bereitgestellt – Ihre Abrechnungs-E-Mail hat in einer DM an einen Fremden nichts zu suchen, und Meta liefert die E-Mail-Adresse des Empfängers in keinem IG-Webhook. Der Verzicht auf die Platzhalter verhindert eine versehentliche Offenlegung.Ratenlimits und Obergrenzen
POST (Erstellung) als auch bei PUT-Reaktivierung (active: false → true) durchgesetzt und liefert jeweils den Fehlercode 470. Benötigen Sie ein höheres Limit pro Profil? Kontaktieren Sie den Support, um es für Ihr Konto anheben zu lassen.
Das tägliche DM-Limit gilt pro übergeordnetem Ayrshare-Konto und wird über alle Ihre Profile hinweg geteilt, mit einem Unterlimit pro Profil, sodass ein besonders aktives Profil das Kontingent des gesamten Kontos nicht aufbrauchen kann. Wird ein DM-Limit erreicht, erhält die Activity-Zeile den Status rate_limited und es wird keine DM gesendet.
Strukturelle Obergrenzen einer einzelnen Automatisierung: 1–50 Trigger, 1–50 Aktionen.
Instagram selbst begrenzt DMs auf etwa 200/Stunde pro Konto. Die Engine drosselt den Versand mit einem Jitter von 20–60 Sekunden, um sicher unter diesem Wert zu bleiben.
Activity-Status
Eine Zeile inGET /automations/:id/activity enthält einen status auf oberster Ebene sowie einen status pro Aktion innerhalb von actionResults[]:
pending und in_flight sind temporär; alles andere ist terminal.
Wenn eine Automatisierung mehr als eine Aktion hat, wird der status auf oberster Ebene in dieser Reihenfolge aus den Ergebnissen pro Aktion abgeleitet: auth_error, wenn eine Aktion einen Auth-Fehler ausgelöst hat, dann sent, wenn eine Aktion akzeptiert wurde, dann deduplicated, wenn jede Aktion dedupliziert wurde, dann skipped, wenn jede Aktion bewusst unterdrückt wurde (skipped oder deduplicated), andernfalls failed. Lesen Sie actionResults[] für die Details pro Aktion.
sent ist eine Empfangsbestätigung der Plattform, keine Zustellbestätigung. Instagram legt die Nachrichtenzustellung auf keiner API offen. Eine send_dm-Aktion wird in dem Moment als sent markiert, in dem Instagram die Nachricht akzeptiert; ob der Empfänger sie tatsächlich erhält, hängt von seiner Instagram-Einstellung Message requests ab, die Ayrshare weder auslesen noch beeinflussen kann. Siehe Automation-DM gesendet, aber nicht zugestellt.Fehlercodes
Die API gibt zwei Fehlerformen zurück:- Business-Regel-Fehler tragen einen nummerierten Automatisierungs-
code(z. B.{ "action": "automation", "code": 469, ... }). - Validierungsfehler – jeder fehlerhafte Request-Body (fehlende oder ungültige Felder, unbekannte Template-Variablen, unbekannte Schlüssel) – werden als einzelne
473-Antwort mit einemdetails-Objekt zurückgegeben, das die beanstandeten Felder auflistet.detailsist die Ausgabe des Validators (formErrorssowiefieldErrors). Verzweigen Sie anhand vondetails, nicht anhand eines bedingungsspezifischen Codes. InfieldErrorssind die Schlüssel die Top-Level-Request-Felder (triggers,actions): Ein Problem innerhalb eines bestimmten Eintrags, etwa ein Trigger ohnekeywords, wird unter diesem Feld (z. B.triggers) gemeldet, währendformErrorsProbleme auf Objektebene wie unbekannte Schlüssel enthält.
Was Meta NICHT erlaubt
Einige häufig nachgefragte Funktionen werden nicht unterstützt, weil Meta sie in der öffentlichen Instagram-API nicht zulässt:- Auto-DM bei neuen Followern. Instagram veröffentlicht keinen Follow-Webhook.
- Erstnachrichten-DMs an Fremde. Meta verlangt, dass der Empfänger zuvor interagiert hat (Kommentar, Antwort, DM, Reaktion), bevor ein Business-Konto ihm eine Nachricht senden darf. Jeder unterstützte Trigger ist an eine solche Interaktion gebunden – beachten Sie aber, dass das Senden erlaubt zu sein nicht dasselbe ist wie das Zustellen der Nachricht: Die Instagram-Einstellung Message requests des Empfängers kann weiterhin dazu führen, dass Meta die Nachricht akzeptiert und dann stillschweigend verwirft (siehe Automation-DM gesendet, aber nicht zugestellt).
- Bulk-Outbound-Kampagnen. Stündliche DM-Limits und Anti-Missbrauch-Heuristiken gelten auf Plattformebene.
Nutzung mit mehreren Profilen
Die Endpunkte berücksichtigen den HeaderprofileKey. Übergeben Sie den Schlüssel eines untergeordneten Profils, und die Automatisierung wird unter diesem Profil erstellt/verwaltet. Ratenlimits werden über ein Unterlimit pro Profil auf die Profile aufgeteilt, sodass ein besonders gesprächiges Profil das Kontingent des übergeordneten Kontos nicht aufbraucht.
FAQ
Kann ich bei einem neuen Follower auslösen?
Kann ich bei einem neuen Follower auslösen?
comment_keyword, story_reply, dm_reaction, dm_keyword) ist an eine solche Interaktion gebunden, und das ist es, was den Versand zulässig macht.Warum sagt eine Activity `sent`, aber der Empfänger hat die DM nie erhalten?
Warum sagt eine Activity `sent`, aber der Empfänger hat die DM nie erhalten?
sent bedeutet, dass Instagram die Nachricht akzeptiert hat, nicht dass sie zugestellt wurde. Die Zustellung hängt von der Instagram-Einstellung Message requests des Empfängers ab – wenn dieser keine Message Requests von allen zulässt, gibt Meta eine Erfolgsantwort zurück und verwirft die Nachricht stillschweigend, ohne Fehler, Webhook oder anderes Signal auf irgendeiner API-Oberfläche. Eine erfolgreich versendete, kommentar-getriggerte DM landet außerdem als Message Request, den der Empfänger akzeptieren muss (es sei denn, eine Konversation besteht bereits). Dies ist eine dauerhafte Einschränkung der Instagram-Plattform. Siehe Automation-DM gesendet, aber nicht zugestellt.Was passiert, wenn mein Access-Token beim Auslösen einer Automatisierung ungültig ist?
Was passiert, wenn mein Access-Token beim Auslösen einer Automatisierung ungültig ist?
auth_error und die DM wird nicht wiederholt. Nachdem der Kontostatus behoben wurde (erneutes Verknüpfen, Auswahl einer Page oder Aktivierung von Messaging), wird das nächste passende Engagement normal ausgelöst. Dies gilt nur für tatsächliche Fehler bei Anmeldedaten und Berechtigungen: Konnte eine bestimmte DM aus einem anderen Grund nicht zugestellt werden – zum Beispiel, weil der Empfänger nicht gefunden werden konnte oder das auslösende Engagement von dem Konto stammt, das die DM senden würde –, wird die Zeile mit dem Grund in actionResults[].errorDetails als failed oder skipped erfasst, und erneutes Verknüpfen ändert das Ergebnis nicht.Warum gibt es eine Verzögerung, bevor die DM gesendet wird?
Warum gibt es eine Verzögerung, bevor die DM gesendet wird?
send_dm-Versand wird 20–60 Sekunden nach dem Engagement geplant, damit er für die Anti-Spam-Systeme von Instagram organisch wirkt. Die Aktionen fire_webhook und send_email haben KEINEN Jitter. Der created-Zeitstempel der Activity-Zeile entspricht dem Zeitpunkt des Trigger-Matches; completedAt entspricht dem Abschluss des Versands.Werden Activity-Zeilen dauerhaft aufbewahrt?
Werden Activity-Zeilen dauerhaft aufbewahrt?
GET /automations/:id/activity gibt aus Performance-Gründen Zeilen der letzten 30 Tage zurück. (Der Dedup-Schutz nutzt sein eigenes Fenster pro Aktion – standardmäßig 7 Tage – das mit dem Activity-Rückblick nichts zu tun hat.)Entfernt das Löschen einer Automatisierung deren Activity-Historie?
Entfernt das Löschen einer Automatisierung deren Activity-Historie?
deleted markiert, es werden keine neuen Versendungen ausgeführt, aber historische Activity-Zeilen bleiben über den Activity-Endpunkt lesbar.Endpunkte
POST /automations– eine neue Automatisierung erstellenGET /automations– Ihre Automatisierungen auflistenGET /automations/:id– eine Automatisierung mit ihren Triggern und Aktionen abrufenPUT /automations/:id– Teilaktualisierung; überactive: falsepausierenDELETE /automations/:id– Soft-DeleteGET /automations/:id/activity– cursor-paginiertes Versand-Audit-Log