Pular para o conteúdo principal
Beta. A Automations API está em beta e estamos ativamente coletando feedback. Endpoints, payloads e limites podem mudar conforme iteramos. Envie feedback e relatórios de bugs para o suporte para que possamos priorizar as melhorias certas.
Os endpoints de Automations permitem definir regras que reagem automaticamente ao engajamento recebido no Instagram. Cada automação combina um ou mais triggers (o evento que dispara a regra) com uma ou mais actions (o que acontece quando ela é disparada). Uma única regra pode escutar múltiplos triggers e despachar múltiplas actions — disparar um webhook para seu pipeline de análises E enviar uma DM a partir do mesmo engajamento. O mecanismo é executado inteiramente dentro do envelope de políticas da Meta (sem DMs acionadas por follow, sem primeira mensagem a estranhos, sem envios em massa) e herda os limites de taxa por conta do Ayrshare, a desduplicação por destinatário e a ingestão idempotente de webhooks.

Como funciona

1

Criar uma automação

POST /automations com os triggers e actions desejados. A automação é ativada imediatamente.
2

Um usuário final se engaja

Alguém comenta na sua publicação, responde ao seu story, envia uma DM ou reage a uma DM. A Meta entrega o webhook ao Ayrshare.
3

Ayrshare faz match e despacha

O mecanismo procura todas as regras que correspondem ao evento, verifica a desduplicação por action e seu limite diário de DMs e, em seguida, executa cada action. Um jitter de 20–60 segundos é aplicado aos envios de DM para permanecer dentro das heurísticas antispam do Instagram.
4

Inspecionar o que foi disparado

GET /automations/:id/activity retorna o log de auditoria — cada tentativa de despacho, os resultados por action e quaisquer erros.

Triggers

Você pode anexar até 50 triggers a uma única automação. Cada trigger é uma union discriminada pelo campo type; os campos específicos do tipo ficam no mesmo nível. Todos os triggers são exclusivos do Instagram na v1.
TipoDispara quandoConfig
comment_keywordUm comentário que corresponde a uma palavra-chave chega em uma publicação específicapostId (obrigatório); keywords (obrigatório, ≥1 entrada)
story_replyUm usuário responde a um story via DMstoryId (opcional)
dm_reactionUm usuário reage a uma das suas DMs com um emojiemoji (opcional — omita para disparar em qualquer emoji)
dm_keywordUm usuário envia uma DM cujo texto corresponde a uma palavra-chavekeywords (obrigatório, ≥1 entrada)
A correspondência de palavras-chave não diferencia maiúsculas de minúsculas e é por palavra inteira. Um evento satisfaz um trigger filtrado por palavras-chave se contiver qualquer uma das palavras-chave configuradas. Omita storyId em um trigger de story para disparar em todos os stories da conta conectada.

Actions

Você pode anexar até 50 actions a uma única automação. Elas são executadas sequencialmente; cada resultado é registrado na linha de activity.
TipoEfeitoConfig
send_dmEnvia uma DM do Instagram para o usuário que disparou a regra, usando uma mensagem com template.message (obrigatório, com template)
fire_webhookFaz POST do contexto da automação para a URL de webhook em nível de conta (configure via POST /hook/webhook).(nenhuma — o formato do payload é fixo; veja abaixo)
send_emailColoca um e-mail na fila via o pipeline de e-mail da plataforma.to (obrigatório, e-mail); subject (opcional, com template); message (obrigatório, com template)

Janela de dedup por action

Toda action — independentemente do tipo — aceita adicionalmente um campo opcional de nível superior dedupWindowMinutes que substitui a janela de dedup por destinatário padrão de 7 dias apenas para aquela action.
  • Defina como 0 para desabilitar o dedup inteiramente para essa action (típico para fire_webhook / send_email, onde o receptor espera todos os eventos).
  • Limitado a 525600 (um ano).
Action with a 24h dedup override

Payload do fire_webhook

Quando fire_webhook é executado, ele faz POST de um corpo JSON para sua URL de webhook em nível de conta:
recipientUsername e keyword são null quando o trigger não os preenche (por exemplo, dm_keyword não carrega um username no payload da Meta; story_reply não tem uma palavra-chave).

Variáveis de template

send_dm.message, send_email.subject e send_email.message suportam substituição via {{placeholder}}. Placeholders desconhecidos são rejeitados no momento de criação/atualização (como erro de validação 473), para que um erro de digitação nunca vaze silenciosamente o literal {{foo}} em uma mensagem voltada ao cliente.
PlaceholderResolve para
{{recipient_username}}O @ do Instagram do usuário engajador (quando o webhook o carrega)
{{recipient_id}}O ID de participante do Instagram (IGSID) do usuário engajador
{{recipient_name}}Reservado; resolve para vazio até que uma fonte futura de enriquecimento o preencha
{{sender_username}}Seu username do Instagram vinculado
{{sender_name}}Seu nome de exibição do Instagram vinculado
{{comment_text}}O texto do comentário / DM / resposta de story que disparou o trigger
{{comment_id}}O ID da plataforma do comentário / mensagem que disparou
{{comment_sent_at}}Timestamp ISO 8601 do evento (quando disponível)
{{matched_keyword}}A palavra-chave que correspondeu (ou a string do emoji para dm_reaction)
{{platform}}Identificador da plataforma (por exemplo, instagram)
{{trigger_type}}Tipo de trigger (por exemplo, comment_keyword)
Sem sender_email / recipient_email. Estes não são expostos deliberadamente — seu e-mail de cobrança não tem lugar legítimo em uma DM para um estranho, e a Meta não fornece o e-mail do destinatário em nenhum webhook do IG. Evitar esses placeholders previne divulgação acidental.
Exemplo de template:

Limites de taxa e caps

PlanoAutomações ativas (por perfil)Cap diário de DMs (por conta)
Business101.000
Enterprise505.000
O cap de automações ativas é contado por User Profile, não por conta pai. Cada perfil da sua conta recebe seu próprio Business 10 / Enterprise 50, então uma conta com muitos perfis pode rodar essa quantidade de automações em cada um. Ele conta automações ativas e é aplicado tanto em POST (criar) quanto em reativações via PUT (active: false → true), cada um retornando o código de erro 470. Precisa de um limite maior por perfil? Entre em contato com o suporte para aumentá-lo em sua conta. O cap diário de DMs se aplica por conta pai do Ayrshare, compartilhado entre todos os seus perfis, com um subcap por perfil para que um perfil movimentado não consuma toda a cota da conta. Quando um cap de DM é atingido, a linha de activity registra o status rate_limited e nenhuma DM é enviada. Caps estruturais em uma única automação: 1–50 triggers, 1–50 actions. O próprio Instagram limita DMs a aproximadamente 200/hora por conta. O mecanismo faz o pacing do despacho com um jitter de 20–60 segundos para ficar seguramente abaixo desse limite.

Status de activity

Uma linha em GET /automations/:id/activity carrega um status de nível superior mais um status por action dentro de actionResults[]:
StatusSignificado
pendingRecém-gravado; o worker ainda não o pegou
in_flightO worker está despachando no momento
sentTodas as actions foram bem-sucedidas
failedPelo menos uma action falhou (e nenhuma teve erro de autenticação)
auth_errorO access token do Instagram era inválido; a DM não foi reenviada
rate_limitedO cap diário de DMs (por tier ou por perfil) foi atingido; nenhuma DM foi enviada
deduplicatedEsta action já foi disparada para este destinatário dentro da sua janela de dedup
skippedA automação ficou inativa ou foi excluída entre o fan-out e o despacho
pending e in_flight são transitórios; todos os outros são terminais.

Códigos de erro

A API retorna dois formatos de erro:
  • Erros de regra de negócio carregam um code de automação numerado (por exemplo, { "action": "automation", "code": 469, ... }).
  • Erros de validação — qualquer corpo de requisição malformado (campos ausentes ou inválidos, variáveis de template desconhecidas, chaves não reconhecidas) — são retornados como uma única resposta 473 com um objeto details que lista os campos problemáticos. details é a saída do validador (formErrors mais fieldErrors). Faça branching por details, não por um code por condição. Em fieldErrors, as chaves são os campos de nível superior da requisição (triggers, actions): um problema dentro de uma entrada específica, como um trigger sem seus keywords, é reportado sob esse campo (por exemplo, triggers), enquanto formErrors guarda problemas em nível de objeto, como chaves não reconhecidas.
CodeHTTPSignificado
468403Requer plano Business ou Enterprise
469404Automação não encontrada (também retornado quando o chamador não é dono)
470429Cap de automações ativas atingido para o seu tier de plano
471400Nenhuma conta social vinculada na plataforma solicitada para este perfil
472403Recurso ainda não disponível na sua conta — contate-nos para acesso antecipado
473400Falha de validação (corpo de requisição malformado) — inspecione details

O que a Meta NÃO permite

Algumas capacidades comumente solicitadas não são suportadas porque a Meta não as permite na API pública do Instagram:
  • Auto-DM para novos seguidores. O Instagram não publica um webhook de follow.
  • DMs de primeira mensagem para estranhos. A Meta exige que o destinatário inicie o contato (comentário, resposta, DM, reação) antes que uma conta business possa mandar mensagem — o que é exatamente o que cada trigger suportado aqui representa.
  • Campanhas de outbound em massa. Caps de DM por hora e heurísticas anti-abuso se aplicam no nível da plataforma.

Uso multi-perfil

Os endpoints respeitam o cabeçalho profileKey. Passe a chave de um perfil filho e a automação é criada/gerenciada sob esse perfil. Os limites de taxa são divididos entre perfis via um subcap por perfil, para que um perfil tagarela não drene a cota da conta pai.

Perguntas frequentes

Não. O Instagram não publica um webhook de follow, e a Meta não permite que apps de terceiros enviem uma DM para um usuário que não iniciou uma conversa. Cada trigger suportado (comment_keyword, story_reply, dm_reaction, dm_keyword) satisfaz o requisito de “o usuário te contatou primeiro”.
A linha de activity registra o status auth_error e a DM não é reenviada. Revincule a conta e o próximo engajamento correspondente disparará normalmente.
Cada despacho de send_dm é agendado 20–60 segundos após o engajamento para parecer orgânico aos sistemas antispam do Instagram. Actions fire_webhook e send_email NÃO têm jitter. O timestamp created da linha de activity é quando o trigger correspondeu; completedAt é quando o despacho terminou.
As linhas de activity são retidas indefinidamente para trace e análises. O endpoint GET /automations/:id/activity retorna linhas dos últimos 30 dias por questões de desempenho. (A guarda de dedup usa sua própria janela por action — padrão de 7 dias — que não está relacionada ao lookback de activity.)
Não. Delete é soft-delete: a linha mestre é marcada como deleted, nenhum novo despacho ocorre, mas as linhas de activity históricas permanecem legíveis via o endpoint de activity.

Endpoints