curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25"
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25&next=eyJ0aW1lIjoiMjAyNi0wNS0xMlQw..."
const API_KEY = "API_KEY";
const id = "auto_9xKp2Lm4nQ";
// Paginate through every page
let next;
do {
const url = new URL(`https://api.ayrshare.com/api/automations/${id}/activity`);
url.searchParams.set("limit", "25");
if (next) url.searchParams.set("next", next);
const res = await fetch(url, {
headers: { "Authorization": `Bearer ${API_KEY}` },
});
const json = await res.json();
console.log(json.activity);
next = json.meta?.pagination?.hasMore ? json.meta.pagination.next : undefined;
} while (next);
import requests
headers = {"Authorization": "Bearer API_KEY"}
automation_id = "auto_9xKp2Lm4nQ"
params = {"limit": 25}
while True:
r = requests.get(
f"https://api.ayrshare.com/api/automations/{automation_id}/activity",
params=params,
headers=headers,
).json()
print(r["activity"])
pagination = r.get("meta", {}).get("pagination", {})
if not pagination.get("hasMore"):
break
params["next"] = pagination["next"]
$id = "auto_9xKp2Lm4nQ";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/automations/" . $id . "/activity?limit=25",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => ["Authorization: Bearer API_KEY"],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"status": "success",
"automationId": "auto_9xKp2Lm4nQ",
"activity": [
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678901234",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841401234567890",
"recipientUsername": "jane_doe",
"eventId": "comment.received:18012345678901234",
"commentId": "18012345678901234",
"platform": "instagram",
"status": "sent",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "sent",
"errorDetails": null,
"messageSource": "template",
"config": { "message": "Hi {{recipient_username}}, here's the link: https://example.com" },
"sent": { "message": "Hi jane_doe, here's the link: https://example.com" },
"completedAt": "2026-05-12T09:14:48.000Z"
}
],
"keyword": "LINK",
"commentText": "Send me the LINK please!",
"created": "2026-05-12T09:14:22.000Z",
"completedAt": "2026-05-12T09:14:48.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678905555",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841405555555555",
"recipientUsername": "late_commenter",
"eventId": "comment.received:18012345678905555",
"commentId": "18012345678905555",
"platform": "instagram",
"status": "failed",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "failed",
"errorDetails": "Cannot send private reply: This comment is no longer eligible for a private reply.",
"completedAt": "2026-05-12T09:12:03.000Z"
}
],
"keyword": "LINK",
"commentText": "LINK please!",
"created": "2026-05-12T09:12:01.000Z",
"completedAt": "2026-05-12T09:12:03.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678900000",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841409876543210",
"recipientUsername": "repeat_user",
"eventId": "comment.received:18012345678900000",
"commentId": "18012345678900000",
"platform": "instagram",
"status": "deduplicated",
"actionResults": [],
"keyword": "LINK",
"commentText": "LINK again please",
"created": "2026-05-12T09:00:11.000Z",
"completedAt": "2026-05-12T09:00:34.000Z"
}
],
"meta": {
"pagination": {
"hasMore": true,
"limit": 25,
"next": "eyJ0aW1lIjoiMjAyNi0wNS0xMlQwOTowMDoxMS4wMDBaIiwiaWQiOiJhdXRvXzl4S3AyTG00blE6dHJnX2ExYjJjMzoxODAxMjM0NTY3ODkwMDAwMCJ9"
}
}
}
{
"status": "error",
"message": "limit must be a positive integer"
}
{
"status": "error",
"message": "'previous' pagination is not supported by this endpoint"
}
{
"action": "automation",
"status": "error",
"code": 469,
"message": "Automation not found"
}
Automations
Automatisierungs-Activity abrufen
Cursor-paginiertes Audit-Log für eine Automatisierung
GET
/
automations
/
:id
/
activity
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25"
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25&next=eyJ0aW1lIjoiMjAyNi0wNS0xMlQw..."
const API_KEY = "API_KEY";
const id = "auto_9xKp2Lm4nQ";
// Paginate through every page
let next;
do {
const url = new URL(`https://api.ayrshare.com/api/automations/${id}/activity`);
url.searchParams.set("limit", "25");
if (next) url.searchParams.set("next", next);
const res = await fetch(url, {
headers: { "Authorization": `Bearer ${API_KEY}` },
});
const json = await res.json();
console.log(json.activity);
next = json.meta?.pagination?.hasMore ? json.meta.pagination.next : undefined;
} while (next);
import requests
headers = {"Authorization": "Bearer API_KEY"}
automation_id = "auto_9xKp2Lm4nQ"
params = {"limit": 25}
while True:
r = requests.get(
f"https://api.ayrshare.com/api/automations/{automation_id}/activity",
params=params,
headers=headers,
).json()
print(r["activity"])
pagination = r.get("meta", {}).get("pagination", {})
if not pagination.get("hasMore"):
break
params["next"] = pagination["next"]
$id = "auto_9xKp2Lm4nQ";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/automations/" . $id . "/activity?limit=25",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => ["Authorization: Bearer API_KEY"],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"status": "success",
"automationId": "auto_9xKp2Lm4nQ",
"activity": [
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678901234",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841401234567890",
"recipientUsername": "jane_doe",
"eventId": "comment.received:18012345678901234",
"commentId": "18012345678901234",
"platform": "instagram",
"status": "sent",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "sent",
"errorDetails": null,
"messageSource": "template",
"config": { "message": "Hi {{recipient_username}}, here's the link: https://example.com" },
"sent": { "message": "Hi jane_doe, here's the link: https://example.com" },
"completedAt": "2026-05-12T09:14:48.000Z"
}
],
"keyword": "LINK",
"commentText": "Send me the LINK please!",
"created": "2026-05-12T09:14:22.000Z",
"completedAt": "2026-05-12T09:14:48.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678905555",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841405555555555",
"recipientUsername": "late_commenter",
"eventId": "comment.received:18012345678905555",
"commentId": "18012345678905555",
"platform": "instagram",
"status": "failed",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "failed",
"errorDetails": "Cannot send private reply: This comment is no longer eligible for a private reply.",
"completedAt": "2026-05-12T09:12:03.000Z"
}
],
"keyword": "LINK",
"commentText": "LINK please!",
"created": "2026-05-12T09:12:01.000Z",
"completedAt": "2026-05-12T09:12:03.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678900000",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841409876543210",
"recipientUsername": "repeat_user",
"eventId": "comment.received:18012345678900000",
"commentId": "18012345678900000",
"platform": "instagram",
"status": "deduplicated",
"actionResults": [],
"keyword": "LINK",
"commentText": "LINK again please",
"created": "2026-05-12T09:00:11.000Z",
"completedAt": "2026-05-12T09:00:34.000Z"
}
],
"meta": {
"pagination": {
"hasMore": true,
"limit": 25,
"next": "eyJ0aW1lIjoiMjAyNi0wNS0xMlQwOTowMDoxMS4wMDBaIiwiaWQiOiJhdXRvXzl4S3AyTG00blE6dHJnX2ExYjJjMzoxODAxMjM0NTY3ODkwMDAwMCJ9"
}
}
}
{
"status": "error",
"message": "limit must be a positive integer"
}
{
"status": "error",
"message": "'previous' pagination is not supported by this endpoint"
}
{
"action": "automation",
"status": "error",
"code": 469,
"message": "Automation not found"
}
Beta. Die vollständige Funktionsbeschreibung finden Sie in der Automations-Übersicht.
Status der Activity-Zeile
Jede Zeile hat einenstatus auf oberster Ebene sowie einen status pro Aktion innerhalb von actionResults[].
| Status | Wann er erfasst wird |
|---|---|
pending | Zeile wurde gerade geschrieben; der Worker hat sie noch nicht aufgenommen |
in_flight | Der Worker versendet gerade |
sent | Mindestens eine Aktion wurde von der Plattform akzeptiert, und keine hat einen Auth-Fehler ausgelöst. Bei send_dm bedeutet das, dass Meta die Nachricht akzeptiert hat – nicht, dass der Empfänger sie erhalten hat (siehe den Hinweis unten) |
failed | Keine Aktion wurde akzeptiert und mindestens eine wurde von der Plattform abgelehnt oder konnte nicht ausgeführt werden (und keine hat einen Auth-Fehler ausgelöst). Der Grund steht in actionResults[].errorDetails |
auth_error | Die Instagram- oder Facebook-Seiten-Anmeldedaten oder Messaging-Berechtigungen des Kontos konnten nicht verwendet werden – zum Beispiel ein abgelaufenes oder widerrufenes Access-Token, eine fehlende Facebook-Page-Auswahl oder für das Profil nicht aktiviertes Messaging. Die DM wurde nicht erneut versucht. Zustellfehler pro Empfänger werden als failed erfasst, nicht hier |
rate_limited | Das tägliche DM-Limit (Tarif oder pro Profil) wurde erreicht. Es wurde keine DM gesendet |
deduplicated | Diese Aktion wurde für diesen Empfänger bereits innerhalb ihres Dedup-Fensters ausgeführt (Standard 7 Tage, pro Aktion konfigurierbar) |
skipped | Die Automatisierung wurde vor dem Versand unterdrückt – sie wurde zwischen Fan-out und Versand inaktiv oder gelöscht, sie hat keine konfigurierten Aktionen, oder das Engagement, das sie ausgelöst hat, kam vom eigenen Konto der Automatisierung – am häufigsten ein Kommentar zu einem eigenen Beitrag. Im letzten Fall wird keine Aktion ausgeführt: keine DM (ein Konto kann sich nicht selbst anschreiben) und auch kein fire_webhook oder send_email. Eine Automatisierung, die automation.completed aktiviert hat, erhält dieses Ereignis weiterhin, mit diesem Status |
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 bestätigt, dass Meta die Nachricht akzeptiert hat, nicht dass der Empfänger sie erhalten hat. Das gilt für Instagram-DMs und für Messenger-DMs von einer Facebook-Seite: Die Automatisierung erfasst nur die Annahme und verfolgt die Zustellung nicht. Instagram stellt auf keiner API-Oberfläche ein Zustellsignal bereit, und wenn die Message requests-Einstellung des Empfängers Fremde blockiert, akzeptiert Meta den Versand und verwirft ihn stillschweigend. Siehe Automation-DM gesendet, aber nicht zugestellt.Ergebnisfelder pro Aktion
Jeder Eintrag inactionResults[] beschreibt das Ergebnis einer Aktion:
| Feld | Typ | Beschreibung |
|---|---|---|
actionId | string | Die stabile ID der Aktion innerhalb der Automatisierung |
type | string | Der Aktionstyp (send_dm, fire_webhook, send_email) |
status | string | Status pro Aktion, mit demselben Vokabular wie der oben beschriebene Zeilen-status |
errorDetails | string | null | Menschlich lesbarer Fehlergrund, wenn die Aktion nicht erfolgreich war; null (oder nicht vorhanden) bei Erfolg. Bei einem abgelehnten send_dm steht hier die zugeordnete Fehlermeldung (z. B. Fenster für die Private-Reply ist geschlossen oder der Kommentar hat bereits eine Antwort erhalten). Eine Ausnahme von null bei Erfolg: Ein send_dm mit messageSource: "fallback" ist sent und enthält den Grund, warum sein Callback nicht verwendet wurde. Ein fallback, dessen Versand anschließend fehlgeschlagen ist, enthält den Sendefehler, gefolgt von diesem Grund |
messageSource | string | Nur bei send_dm. Aus welchem Text die DM erstellt wurde: template (die statische message), callback (Ihre messageUrl hat geantwortet und ihr Text wurde verwendet) oder fallback (messageUrl war gesetzt, aber nicht verwendbar, daher wurde stattdessen message verwendet, mit dem Grund in errorDetails). Es gibt nicht an, ob die DM zugestellt wurde; das zeigt status. Vorhanden, sobald der DM-Text feststeht, auch bei Versänden, die anschließend fehlgeschlagen sind. Nicht vorhanden, wenn die Aktion vorher beendet wurde (eine skipped-DM an Ihr eigenes Konto, eine deduplicated-Aktion oder ein failed-Konfigurationsfehler wie eine fehlende Kommentar-ID), sowie bei anderen Aktionstypen |
config | object (optional) | Die Konfiguration der Aktion zum Zeitpunkt dieser Auslösung, zum Beispiel das send_dm-message-Template. Bleibt unverändert, wenn Sie die Automatisierung später bearbeiten, sodass jede Zeile zeigt, was zu diesem Zeitpunkt konfiguriert war. Nicht vorhanden in Zeilen, die geschrieben wurden, bevor dieses Feld hinzugefügt wurde, sowie wenn es entfernt wurde, um die Größenbegrenzung einzuhalten (truncated ist dann true) |
sent | object (optional) | Was die Aktion bei dieser Auslösung gesendet hat oder zu senden versucht hat. Wird erfasst, sobald die Aktion ihre Nachricht oder Payload erstellt hat, auch wenn der Versand anschließend fehlgeschlagen ist: status gibt an, ob sie verschickt wurde. Nicht vorhanden, wenn die Aktion vor dem Versand beendet wurde, zum Beispiel bei einem skipped-Ergebnis für einen Kommentar von Ihrem eigenen Konto, sowie bei deduplicated-Ergebnissen. Siehe was sent enthält |
truncated | boolean (optional) | true, wenn der Eintrag gekürzt wurde, um seine Größenbegrenzung einzuhalten: Ein langer Textwert wurde verkürzt, oder config und anschließend sent wurden vollständig weggelassen. Andernfalls nicht vorhanden |
completedAt | string | ISO-8601-Zeitstempel, wann die Aktion abgeschlossen wurde |
Was sent enthält
| Aktionstyp | sent-Felder |
|---|---|
send_dm | message: der Text, mit dem die DM gesendet wurde. Das ist Ihr message-Template mit den für diesen Empfänger ausgefüllten Platzhaltern oder, wenn messageSource callback ist, der Text, den Ihre messageUrl zurückgegeben hat. fallbackMessage: nur vorhanden, wenn messageSource callback ist; Ihr ausgefülltes Template, so wie es ohne den Callback gesendet worden wäre |
send_email | to, subject und message: die E-Mail, wie sie in die Warteschlange gestellt wurde, mit ausgefüllten Platzhaltern |
fire_webhook | payload: die an Ihren Webhook gesendeten Ereignisfelder. Der zugestellte Body enthält zusätzlich die Standard-Webhook-Felder (action, created, hookId, refId, url sowie timeStamp, wenn der Webhook signiert ist). hookId: die ID der Zustellung, vorhanden, wenn der Webhook in die Warteschlange gestellt wurde |
truncated gesetzt. Werte, die unter Schlüsselnamen gespeichert sind, die wie Zugangsdaten aussehen, etwa token, secret, password oder apiKey, werden als "[redacted]" erfasst. Die messageUrl einer send_dm-Aktion wird ebenfalls immer als "[redacted]" erfasst, da eine URL in ihrem Pfad oder Query-String ein Geheimnis enthalten kann.
Bei kommentar-getriggerten Automatisierungen (comment_keyword) trägt die Zeile zusätzlich ein commentId auf oberster Ebene – die rohe Instagram-Kommentar-ID, an die die DM angehängt wurde. Bei nachrichten-getriebenen Triggern (dm_keyword, story_reply, dm_reaction) ist sie null.
Zeilen tragen außerdem ein postId (der Beitrag, auf dem ein comment_keyword-Kommentar hinterlassen wurde) und ein storyId (die Story bei story_reply und story_comment). Jedes der beiden Felder ist bei den anderen Triggern null und fehlt in Zeilen, die geschrieben wurden, bevor diese Felder hinzugefügt wurden.
Header-Parameter
Pfad-Parameter
string
erforderlich
Die Automatisierungs-ID, die von
POST /automations zurückgegeben wurde.Query-Parameter
number
Standard:25
Seitengröße. Standard
25, Maximum 100. Werte außerhalb von [1, 100] werden gekappt; Nicht-Ganzzahlen oder ≤0 liefern HTTP 400.string
Opaker Cursor aus dem
meta.pagination.next einer vorhergehenden Antwort. Bei der ersten Anfrage weglassen.Nur vorwärts – die Übergabe von ?previous= liefert HTTP 400.Antwortformat
Die Antwort verpackt die Ergebnisliste inactivity[] und die Cursor-Informationen in meta.pagination:
{
"status": "success",
"automationId": "auto_9xKp2Lm4nQ",
"activity": [ /* …rows, newest first… */ ],
"meta": {
"pagination": {
"hasMore": true,
"limit": 25,
"next": "eyJ0aW1lIjoiMjAyNi0wNS0xMlQwOTowMDoxMS4wMDBaIiwiaWQiOiJhdXRvXzl4S3AyTG00blE6dHJnX2ExYjJjMzpjb21tZW50X3JlY2VpdmVkOjE4MDEyMzQ1Njc4OTAwMDAwIn0="
}
}
}
meta.pagination.next ist ein base64-kodierter, opaker Blob – behandeln Sie ihn als Black Box und übergeben Sie ihn in der nächsten Anfrage unverändert im ?next=. meta.pagination.hasMore ist true, wenn mindestens eine weitere Seite existiert.
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25"
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/automations/auto_9xKp2Lm4nQ/activity?limit=25&next=eyJ0aW1lIjoiMjAyNi0wNS0xMlQw..."
const API_KEY = "API_KEY";
const id = "auto_9xKp2Lm4nQ";
// Paginate through every page
let next;
do {
const url = new URL(`https://api.ayrshare.com/api/automations/${id}/activity`);
url.searchParams.set("limit", "25");
if (next) url.searchParams.set("next", next);
const res = await fetch(url, {
headers: { "Authorization": `Bearer ${API_KEY}` },
});
const json = await res.json();
console.log(json.activity);
next = json.meta?.pagination?.hasMore ? json.meta.pagination.next : undefined;
} while (next);
import requests
headers = {"Authorization": "Bearer API_KEY"}
automation_id = "auto_9xKp2Lm4nQ"
params = {"limit": 25}
while True:
r = requests.get(
f"https://api.ayrshare.com/api/automations/{automation_id}/activity",
params=params,
headers=headers,
).json()
print(r["activity"])
pagination = r.get("meta", {}).get("pagination", {})
if not pagination.get("hasMore"):
break
params["next"] = pagination["next"]
$id = "auto_9xKp2Lm4nQ";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/automations/" . $id . "/activity?limit=25",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => ["Authorization: Bearer API_KEY"],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"status": "success",
"automationId": "auto_9xKp2Lm4nQ",
"activity": [
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678901234",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841401234567890",
"recipientUsername": "jane_doe",
"eventId": "comment.received:18012345678901234",
"commentId": "18012345678901234",
"platform": "instagram",
"status": "sent",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "sent",
"errorDetails": null,
"messageSource": "template",
"config": { "message": "Hi {{recipient_username}}, here's the link: https://example.com" },
"sent": { "message": "Hi jane_doe, here's the link: https://example.com" },
"completedAt": "2026-05-12T09:14:48.000Z"
}
],
"keyword": "LINK",
"commentText": "Send me the LINK please!",
"created": "2026-05-12T09:14:22.000Z",
"completedAt": "2026-05-12T09:14:48.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678905555",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841405555555555",
"recipientUsername": "late_commenter",
"eventId": "comment.received:18012345678905555",
"commentId": "18012345678905555",
"platform": "instagram",
"status": "failed",
"actionResults": [
{
"actionId": "act_d4e5f6",
"type": "send_dm",
"status": "failed",
"errorDetails": "Cannot send private reply: This comment is no longer eligible for a private reply.",
"completedAt": "2026-05-12T09:12:03.000Z"
}
],
"keyword": "LINK",
"commentText": "LINK please!",
"created": "2026-05-12T09:12:01.000Z",
"completedAt": "2026-05-12T09:12:03.000Z"
},
{
"id": "auto_9xKp2Lm4nQ:trg_a1b2c3:comment.received:18012345678900000",
"automationId": "auto_9xKp2Lm4nQ",
"triggerId": "trg_a1b2c3",
"triggerType": "comment_keyword",
"recipientId": "17841409876543210",
"recipientUsername": "repeat_user",
"eventId": "comment.received:18012345678900000",
"commentId": "18012345678900000",
"platform": "instagram",
"status": "deduplicated",
"actionResults": [],
"keyword": "LINK",
"commentText": "LINK again please",
"created": "2026-05-12T09:00:11.000Z",
"completedAt": "2026-05-12T09:00:34.000Z"
}
],
"meta": {
"pagination": {
"hasMore": true,
"limit": 25,
"next": "eyJ0aW1lIjoiMjAyNi0wNS0xMlQwOTowMDoxMS4wMDBaIiwiaWQiOiJhdXRvXzl4S3AyTG00blE6dHJnX2ExYjJjMzoxODAxMjM0NTY3ODkwMDAwMCJ9"
}
}
}
{
"status": "error",
"message": "limit must be a positive integer"
}
{
"status": "error",
"message": "'previous' pagination is not supported by this endpoint"
}
{
"action": "automation",
"status": "error",
"code": 469,
"message": "Automation not found"
}