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
Lấy Activity của Automation
Nhật ký kiểm toán được phân trang theo cursor cho một automation
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. Xem Tổng quan về Automations để biết mô tả đầy đủ về tính năng.
Trạng thái hàng Activity
Mỗi hàng có mộtstatus cấp cao nhất cộng với một status theo action bên trong actionResults[].
| Trạng thái | Khi nào được ghi lại |
|---|---|
pending | Hàng vừa mới được ghi; worker chưa nhận nó |
in_flight | Worker hiện đang điều phối |
sent | Ít nhất một action đã được nền tảng chấp nhận, và không có action nào gặp lỗi xác thực. Với send_dm điều này có nghĩa là Meta đã chấp nhận tin nhắn — không phải là người nhận đã nhận được (xem ghi chú bên dưới) |
failed | Không có action nào được chấp nhận, và ít nhất một action đã bị nền tảng từ chối hoặc không thể chạy (và không có action nào gặp lỗi xác thực). Lý do nằm ở actionResults[].errorDetails |
auth_error | Thông tin xác thực Instagram hoặc Trang Facebook, hoặc quyền nhắn tin của tài khoản không thể được sử dụng — ví dụ access token đã hết hạn hoặc bị thu hồi, thiếu lựa chọn Facebook Page, hoặc Messaging chưa được kích hoạt cho profile. DM không được thử lại. Các thất bại chuyển tin theo từng người nhận được ghi là failed, không phải ở đây |
rate_limited | Đã đạt đến giới hạn DM hàng ngày (theo gói hoặc theo profile). Không có DM nào được gửi |
deduplicated | Action này đã kích hoạt tới người nhận này trong cửa sổ dedup của nó (mặc định 7 ngày, có thể cấu hình theo action) |
skipped | Automation đã bị chặn trước khi điều phối — nó trở nên không hoạt động hoặc đã bị xóa giữa fan-out và điều phối, nó không có action nào được cấu hình, hoặc tương tác kích hoạt nó đến từ chính tài khoản của automation — thường gặp nhất là một bình luận trên chính bài đăng của bạn. Trong trường hợp cuối cùng đó, không có action nào chạy: không có DM (một tài khoản không thể tự nhắn tin cho chính mình), và cũng không có fire_webhook hay send_email. Một automation đã chọn tham gia automation.completed vẫn nhận sự kiện đó, với trạng thái này |
pending và in_flight là tạm thời; mọi trạng thái khác là cuối cùng.
Khi một automation có nhiều hơn một action, status cấp cao nhất được suy ra từ các kết quả theo từng action theo thứ tự này: auth_error nếu bất kỳ action nào gặp lỗi xác thực, sau đó sent nếu bất kỳ action nào được chấp nhận, sau đó deduplicated nếu mọi action đều bị deduplicated, sau đó skipped nếu mọi action đều bị chặn có chủ đích (skipped hoặc deduplicated), nếu không thì failed. Đọc actionResults[] để biết chi tiết theo từng action.
sent xác nhận Meta đã chấp nhận tin nhắn, chứ không phải người nhận đã nhận được. Điều này áp dụng cho DM Instagram và DM Messenger từ một Trang Facebook: automation chỉ ghi lại việc chấp nhận và không theo dõi việc chuyển tin. Instagram không cung cấp bất kỳ tín hiệu delivery nào trên bất kỳ bề mặt API nào, và nếu thiết lập Message requests của người nhận chặn người lạ, Meta sẽ chấp nhận việc gửi rồi âm thầm loại bỏ. Xem Automation DM đã Gửi nhưng Không được Chuyển.Các trường kết quả theo action
Mỗi mục trongactionResults[] mô tả kết quả của một action:
| Trường | Kiểu | Mô tả |
|---|---|---|
actionId | string | ID ổn định của action trong automation |
type | string | Loại action (send_dm, fire_webhook, send_email) |
status | string | Trạng thái theo action, dùng cùng bộ từ vựng với status của hàng ở trên |
errorDetails | string | null | Lý do thất bại có thể đọc được khi action không thành công; null (hoặc vắng) khi thành công. Với send_dm bị từ chối, trường này mang thông báo lỗi đã được ánh xạ (ví dụ: cửa sổ private reply đã đóng, hoặc bình luận đã nhận được một reply trước đó). Một ngoại lệ đối với null khi thành công: một send_dm có messageSource: "fallback" là sent và mang lý do callback của nó không được sử dụng. Một fallback sau đó gửi thất bại sẽ mang lỗi gửi, theo sau là lý do đó |
messageSource | string | Chỉ dành cho send_dm. Văn bản mà DM được tạo từ đó: template (message tĩnh), callback (messageUrl của bạn đã trả lời và văn bản của nó đã được sử dụng) hoặc fallback (messageUrl đã được đặt nhưng không dùng được, nên message đã được sử dụng thay thế, với lý do trên errorDetails). Trường này không cho biết DM đã được chuyển hay chưa; status mới cho biết điều đó. Có mặt khi văn bản DM đã được xác định, kể cả các lần gửi sau đó thất bại. Không có mặt khi action dừng trước bước đó (một DM skipped tới chính tài khoản của bạn, một action deduplicated, hoặc một lỗi cấu hình failed như thiếu comment id), và đối với các loại action khác |
config | object (tùy chọn) | Cấu hình của action tại thời điểm lần kích hoạt này chạy, ví dụ template message của send_dm. Giữ nguyên nếu sau đó bạn chỉnh sửa automation, nên mỗi hàng cho thấy những gì đã được cấu hình vào thời điểm đó. Không có mặt trên các hàng được ghi trước khi trường này được thêm vào, và khi nó bị loại bỏ để vừa giới hạn kích thước (khi đó truncated là true) |
sent | object (tùy chọn) | Những gì action đã gửi, hoặc đã cố gắng gửi, cho lần kích hoạt này. Được ghi lại khi action đã tạo tin nhắn hoặc payload của nó, kể cả khi lần gửi sau đó thất bại: status cho biết nó đã được gửi đi hay chưa. Không có mặt khi action dừng trước khi gửi, ví dụ một kết quả skipped cho bình luận từ chính tài khoản của bạn, và đối với các kết quả deduplicated. Xem những gì sent chứa |
truncated | boolean (tùy chọn) | true khi mục bị cắt bớt để vừa giới hạn kích thước của nó: một giá trị văn bản dài đã bị rút ngắn, hoặc config và sau đó sent đã bị lược bỏ hoàn toàn. Không có mặt trong các trường hợp khác |
completedAt | string | Timestamp ISO 8601 khi action hoàn tất |
Những gì sent chứa
| Loại action | Các trường sent |
|---|---|
send_dm | message: văn bản mà DM đã được gửi. Đó là template message của bạn với các placeholder đã được điền cho người nhận này hoặc, khi messageSource là callback, văn bản mà messageUrl của bạn trả về. fallbackMessage: chỉ xuất hiện khi messageSource là callback; template của bạn, đã được điền, đúng như nội dung sẽ được gửi nếu không có callback |
send_email | to, subject và message: email như khi được đưa vào hàng đợi, với các placeholder đã được điền |
fire_webhook | payload: các trường sự kiện được gửi tới webhook của bạn. Body được chuyển đi cũng mang các trường webhook tiêu chuẩn (action, created, hookId, refId, url, và timeStamp khi webhook được ký). hookId: id của lần chuyển, có mặt khi webhook đã được đưa vào hàng đợi |
truncated được đặt khi điều đó xảy ra. Các giá trị được lưu dưới tên khóa trông giống thông tin xác thực, như token, secret, password hoặc apiKey, được ghi lại là "[redacted]". messageUrl của một action send_dm cũng luôn được ghi lại là "[redacted]", vì một URL có thể mang bí mật trong path hoặc query string của nó.
Với các automation kích hoạt theo bình luận (comment_keyword), hàng cũng mang một commentId cấp cao nhất — ID bình luận Instagram gốc mà DM được neo vào. Nó là null với các trigger được dẫn dắt bởi tin nhắn (dm_keyword, story_reply, dm_reaction).
Các hàng cũng mang postId (bài đăng mà một bình luận comment_keyword được để lại trên đó) và storyId (story cho story_reply và story_comment). Mỗi trường là null với các trigger còn lại, và vắng mặt trên các hàng được ghi trước khi các trường này được thêm vào.
Tham số Header
Tham số Path
string
bắt buộc
ID automation được trả về từ
POST /automations.Tham số Query
number
mặc định:25
Kích thước trang. Mặc định
25, tối đa 100. Các giá trị ngoài [1, 100] được cắt lại; không phải số nguyên hoặc ≤0 trả về HTTP 400.string
Cursor không rõ ràng từ
meta.pagination.next của phản hồi trước đó. Bỏ qua trên yêu cầu đầu tiên.Chỉ tiến về phía trước — truyền ?previous= trả về HTTP 400.Hình dạng Phản hồi
Phản hồi bọc danh sách kết quả trongactivity[] và thông tin cursor trong meta.pagination:
{
"status": "success",
"automationId": "auto_9xKp2Lm4nQ",
"activity": [ /* …rows, newest first… */ ],
"meta": {
"pagination": {
"hasMore": true,
"limit": 25,
"next": "eyJ0aW1lIjoiMjAyNi0wNS0xMlQwOTowMDoxMS4wMDBaIiwiaWQiOiJhdXRvXzl4S3AyTG00blE6dHJnX2ExYjJjMzpjb21tZW50X3JlY2VpdmVkOjE4MDEyMzQ1Njc4OTAwMDAwIn0="
}
}
}
meta.pagination.next là một blob không rõ ràng được mã hóa base64 — coi nó như hộp đen và truyền lại nguyên trạng trong ?next= của yêu cầu tiếp theo. meta.pagination.hasMore là true khi ít nhất một trang nữa tồn tại.
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"
}