sent означає, що Meta прийняла повідомлення, а не те, що отримувач його отримав. Доставка зрештою визначається параметром Message requests отримувача в Instagram: якщо він не дозволяє запити повідомлень від усіх, Meta повертає успішну відповідь і тихо відкидає повідомлення, і це невидимо на кожному рівні API. Навіть доставлений DM, спричинений коментарем, надходить як запит повідомлення, який отримувач має прийняти (якщо між двома акаунтами вже не існує розмови). Див. Automation DM Sent but Not Delivered для повного пояснення.Як це працює
Створіть автоматизацію
POST /automations з бажаними тригерами й діями. Автоматизація активується миттєво.Кінцевий користувач взаємодіє
Ayrshare зіставляє та диспетчеризує
Перегляньте, що спрацювало
GET /automations/:id/activity повертає журнал аудиту — кожну спробу диспетчеризації, результати кожної дії та будь-які помилки.Тригери
До однієї автоматизації можна приєднати до 50 тригерів. Кожен тригер є discriminated union по полюtype; поля, специфічні для типу, розташовані на тому ж рівні. У v1 усі тригери працюють лише для Instagram.
storyId у тригері історії, щоб він спрацьовував на кожну історію підключеного акаунта.
Дії
До однієї автоматизації можна приєднати до 50 дій. Вони виконуються послідовно; кожен результат записується у рядок активності.Вікно дедуплікації на дію
Кожна дія — незалежно від типу — додатково приймає необов’язкове поле верхнього рівняdedupWindowMinutes, яке перевизначає типове 7-денне вікно дедуплікації на отримувача лише для цієї дії.
- Установіть
0, щоб повністю вимкнути дедуплікацію для цієї дії (типово дляfire_webhook/send_email, де отримувач очікує кожну подію). - Обмеження —
525600(один рік).
Payload fire_webhook
Коли виконується fire_webhook, він надсилає POST з JSON-тілом на webhook-URL рівня акаунта:
recipientUsername і keyword мають значення null, коли тригер їх не заповнює (наприклад, dm_keyword не несе username у payload’і Meta; story_reply не має ключового слова).
Змінні шаблону
send_dm.message, send_email.subject і send_email.message підтримують підстановку {{placeholder}}. Невідомі placeholder’и відхиляються під час створення/оновлення (як помилка валідації 473), тож помилка друку ніколи мовчки не пропустить дослівний {{foo}} у повідомлення, яке бачить клієнт.
sender_email / recipient_email. Вони навмисно не надаються — вашому email для білінгу немає легітимного місця в DM незнайомій людині, і Meta не надає email отримувача в жодному IG-webhook. Відсутність placeholder’ів запобігає випадковому розкриттю.Обмеження швидкості та ліміти
POST (створення), так і при повторній активації через PUT (active: false → true), у кожному випадку повертаючи код помилки 470. Потрібен вищий ліміт на профіль? Зв’яжіться з підтримкою, щоб його підвищили для вашого акаунта.
Добовий ліміт DM застосовується на батьківський акаунт Ayrshare, спільно для всіх ваших профілів, з підлімітом на профіль, щоб один активний профіль не вичерпав квоту всього акаунта. Коли досягнуто ліміт DM, рядок активності отримує статус rate_limited і DM не надсилається.
Структурні ліміти на одну автоматизацію: 1–50 тригерів, 1–50 дій.
Сам Instagram обмежує DM приблизно 200/годину на акаунт. Двигун виконує диспетчеризацію з jitter 20–60 секунд, щоб залишатися в безпечних межах.
Статуси активності
Рядок уGET /automations/:id/activity має статус верхнього рівня status плюс статус кожної дії всередині actionResults[]:
pending і in_flight — перехідні; усі інші — термінальні.
sent — це квитанція про прийняття платформою, а не квитанція про доставку. Instagram не надає доставку повідомлень жодному API. Дію send_dm позначено як sent у той момент, коли Instagram прийме повідомлення; чи справді його отримає отримувач, залежить від параметра Message requests в Instagram, який Ayrshare не може ані прочитати, ані змінити. Див. Automation DM Sent but Not Delivered.Коди помилок
API повертає два види помилок:- Бізнес-правила несуть номерний
codeавтоматизації (наприклад,{ "action": "automation", "code": 469, ... }). - Помилки валідації — будь-яке некоректне тіло запиту (відсутні або невалідні поля, невідомі змінні шаблону, нерозпізнані ключі) — повертаються як єдина відповідь
473з об’єктомdetails, що містить перелік некоректних полів.details— це вивід валідатора (formErrorsплюсfieldErrors). Розгалужуйтеся заdetails, а не за окремим кодом умови. УfieldErrorsключі — це поля верхнього рівня запиту (triggers,actions): проблема всередині конкретного запису, наприклад відсутністьkeywordsу тригера, повідомляється під відповідним полем (наприклад,triggers), тоді якformErrorsмістить проблеми рівня об’єкта, як-от нерозпізнані ключі.
Що Meta НЕ дозволяє
Кілька часто запитуваних можливостей не підтримуються, оскільки Meta не дозволяє їх у публічному Instagram API:- Автоматичне DM новим підписникам. Instagram не публікує webhook на підписку.
- Перше DM-повідомлення незнайомцям. Meta вимагає, щоб отримувач попередньо взаємодіяв (коментар, відповідь, DM, реакція), перш ніж бізнес-акаунт зможе надіслати йому повідомлення. Кожен підтримуваний тригер прив’язаний саме до такої взаємодії — але зверніть увагу, що дозвіл надіслати не є тим самим, що й доставка повідомлення: параметр Message requests в Instagram отримувача все одно може змусити Meta прийняти та потім тихо відкинути повідомлення (див. Automation DM Sent but Not Delivered).
- Масові вихідні кампанії. Погодинні ліміти DM та антифрод-евристики застосовуються на рівні платформи.
Використання з кількома профілями
Ендпоінти враховують заголовокprofileKey. Передайте ключ дочірнього профілю — і автоматизація буде створена/керована в межах цього профілю. Обмеження швидкості поділяються між профілями через підліміт на профіль, щоб один активний профіль не вичерпав квоту батьківського акаунта.
FAQ
Чи можу я налаштувати тригер на нового підписника?
Чи можу я налаштувати тригер на нового підписника?
comment_keyword, story_reply, dm_reaction, dm_keyword) прив’язаний саме до такої взаємодії, що й робить надсилання допустимим.Чому в активності зазначено `sent`, але отримувач так і не отримав DM?
Чому в активності зазначено `sent`, але отримувач так і не отримав DM?
sent означає, що Instagram прийняв повідомлення, а не те, що воно було доставлене. Доставка залежить від параметра Message requests отримувача в Instagram — якщо він не дозволяє запити повідомлень від усіх, Meta повертає успішну відповідь і тихо відкидає повідомлення, без помилки, webhook чи іншого сигналу на жодному рівні API. Успішний DM, спричинений коментарем, також надходить як запит повідомлення, який отримувач має прийняти (якщо розмова вже не існує). Це постійне обмеження платформи Instagram. Див. Automation DM Sent but Not Delivered.Що станеться, якщо мій access-токен буде недійсним, коли автоматизація спрацює?
Що станеться, якщо мій access-токен буде недійсним, коли автоматизація спрацює?
auth_error, і DM не повторюється. Перепідключіть акаунт — і наступна відповідна взаємодія спрацює нормально.Чому є затримка перед надсиланням DM?
Чому є затримка перед надсиланням DM?
send_dm планується на 20–60 секунд після взаємодії, щоб виглядати органічно для антиспам-систем Instagram. Дії fire_webhook і send_email НЕ мають jitter. Timestamp created у рядку активності — це коли тригер збігся; completedAt — коли диспетчеризація завершилася.Чи зберігаються рядки активності назавжди?
Чи зберігаються рядки активності назавжди?
GET /automations/:id/activity повертає рядки за останні 30 днів для продуктивності. (Захист від дедуплікації використовує власне вікно на дію — типово 7 днів — яке не пов’язане з періодом перегляду активності.)Чи видалення автоматизації прибирає її історію активності?
Чи видалення автоматизації прибирає її історію активності?
deleted, нові диспетчеризації не виконуються, але історичні рядки активності залишаються доступними для читання через ендпоінт активності.Ендпоінти
POST /automations— створити нову автоматизаціюGET /automations— переглянути список ваших автоматизаційGET /automations/:id— отримати одну автоматизацію з її тригерами та діямиPUT /automations/:id— часткове оновлення; призупиніть за допомогоюactive: falseDELETE /automations/:id— soft-deleteGET /automations/:id/activity— журнал аудиту диспетчеризацій із пагінацією через курсор