{"openapi":"3.0.0","paths":{"/partners/accounts":{"get":{"description":"Primeiro pedido de toda integração. Devolve as contas do time da chave; o `id` de cada uma é o que vai em `contaInstagram` ao criar automações.\n\n**Limite:** 60 pedidos por minuto por chave.","operationId":"Partners_listarContas","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContaResposta"}}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 60 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Listar as contas Instagram da chave","tags":["Contas e posts"],"x-limite-por-minuto":60}},"/partners/accounts/{instagramId}/posts":{"get":{"description":"Para mirar a automação num post que já existe: use o `id` do post em `posts: [\"<id>\"]`.\n\n**Limite:** 30 pedidos por minuto por chave.","operationId":"Partners_listarPosts","parameters":[{"name":"instagramId","required":true,"in":"path","description":"O `id` da conta (de `GET /partners/accounts`).","schema":{"example":"17841405503524573","type":"string"}},{"name":"limite","required":false,"in":"query","description":"Quantos posts (1 a 50).","schema":{"example":25,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PostResposta"}}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"403":{"description":"Conta desconectada ou com a conexão expirada — reconecte no painel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"404":{"description":"A conta não existe ou não é do time da chave.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 30 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Listar os posts recentes de uma conta","tags":["Contas e posts"],"x-limite-por-minuto":30}},"/partners/automations":{"get":{"description":"Da criada mais recente para a mais antiga (ordem estável). O total vem no header `X-Total-Count` — pagine enquanto `offset + limite < X-Total-Count`.\n\n**Limite:** 60 pedidos por minuto por chave.","operationId":"Partners_listarAutomacoes","parameters":[{"name":"limite","required":false,"in":"query","description":"1 a 100 (padrão 100).","schema":{"example":100,"type":"string"}},{"name":"offset","required":false,"in":"query","description":"Quantos itens pular (padrão 0).","schema":{"example":0,"type":"string"}},{"name":"conta","required":false,"in":"query","description":"Só as automações desta conta Instagram (o `id`).","schema":{"type":"string"}}],"responses":{"200":{"headers":{"X-Total-Count":{"description":"Total de automações do filtro.","schema":{"type":"integer"}}},"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutomacaoResumoResposta"}}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 60 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Listar as automações","tags":["Automações"],"x-limite-por-minuto":60},"post":{"description":"Alguém comenta no post → recebe uma resposta pública → recebe a 1ª mensagem no direct. Você manda a \"receita\" (o que dispara e o que enviar) e a plataforma monta o fluxo. A API não envia mensagem: quem dispara é o comentário real.\n\nPara cards (carrossel de produtos), basta o link de afiliado: a foto e o nome saem da própria página do link, e a resposta mostra o que foi extraído em `carrosseis`.\n\n**Limite:** 30 pedidos por minuto por chave.","operationId":"Partners_criarAutomacao","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CriarAutomacaoDto"},"examples":{"comentaQuero":{"summary":"Comenta QUERO no próximo post (o clássico)","value":{"nome":"Comenta QUERO — Planner","contaInstagram":"17841405503524573","palavras":["quero","eu quero"],"posts":"proximo","respostaPublica":["Te enviei no direct! 😉","Enviado, confere lá! 😊"],"mensagens":[{"texto":"Oi! Vi seu comentário 🤗 Toque abaixo para receber o link:","botoes":[{"rotulo":"Quero o link","acao":"continuar"}]},{"texto":"Aqui está: https://loja.exemplo.com/planner ✨"}]}},"carrossel":{"summary":"Carrossel de produtos (achadinhos) — só nome e link","value":{"nome":"Achadinhos de beleza — comenta QUERO","contaInstagram":"17841405503524573","palavras":["quero"],"posts":"todos","respostaPublica":["Te mandei os links no direct! 😍"],"mensagens":[{"texto":"Separei os achadinhos pra você 💖 Toque abaixo:","botoes":[{"rotulo":"Ver os produtos","acao":"continuar"}]},{"cards":[{"nome":"Pó translúcido Bella","link":"https://s.shopee.com.br/4ftndxVAcy"},{"nome":"Base matte X","link":"https://s.shopee.com.br/outroLink"},{"link":"https://s.shopee.com.br/maisUm"}]}]}},"postsEspecificos":{"summary":"Só em posts escolhidos, com botão de link no fim","value":{"nome":"Comenta QUERO — só no post do lançamento","contaInstagram":"17841405503524573","palavras":["quero"],"posts":["18100000001"],"mensagens":[{"texto":"Oba! Toque abaixo para receber o cupom:","botoes":[{"rotulo":"Quero o cupom","acao":"continuar"}]},{"texto":"Seu cupom: LANCA10 🎉","botoes":[{"rotulo":"Ir para a loja","acao":{"link":"https://loja.exemplo.com"}}]}]}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomacaoCriadaResposta"}}}},"400":{"description":"Receita inválida — a mensagem diz exatamente o que corrigir.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"403":{"description":"Teto de automações da chave atingido, ou conta desconectada/expirada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"404":{"description":"A conta não existe ou não é do time da chave.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 30 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Criar uma automação \"comenta QUERO\"","tags":["Automações"],"x-limite-por-minuto":30}},"/partners/automations/{id}":{"get":{"description":"Tudo da listagem mais a resposta pública e as mensagens, lidas do fluxo gravado, no formato da receita.\n\n**Limite:** 60 pedidos por minuto por chave.","operationId":"Partners_obterAutomacao","parameters":[{"name":"id","required":true,"in":"path","description":"ID da automação.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomacaoDetalheResposta"}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"404":{"description":"A automação não existe ou não é do time da chave.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 60 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Ver uma automação","tags":["Automações"],"x-limite-por-minuto":60}},"/partners/automations/{id}/status":{"patch":{"description":"Mande `{ \"ativa\": true }` para ligar ou `{ \"ativa\": false }` para desligar. Repetir o mesmo pedido não inverte nada (`alterada: false`). Religar uma automação com `\"proximo\"` reinicia a espera pelo próximo post.\n\n**Limite:** 60 pedidos por minuto por chave.","operationId":"Partners_atualizarStatusAutomacao","parameters":[{"name":"id","required":true,"in":"path","description":"ID da automação.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtualizarStatusAutomacaoDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusAlteradoResposta"}}}},"400":{"description":"O fluxo não passou na validação para ligar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"401":{"description":"Chave ausente, inválida ou revogada. Confira o header `X-API-Key`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"403":{"description":"Plano vencido ou conta sem permissão para ligar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"404":{"description":"A automação não existe ou não é do time da chave.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}},"429":{"description":"Passou de 60 pedidos no minuto. Espere alguns segundos e tente de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroResposta"}}}}},"security":[{"chave":[]}],"summary":"Ligar ou desligar uma automação","tags":["Automações"],"x-limite-por-minuto":60}}},"info":{"title":"API de parceiros Notifiquei","description":"API para parceiros criarem e gerenciarem automações \"comenta QUERO\" nas contas Instagram de um time da Notifiquei.\n\n**Como começar:** o dono do time gera uma chave em [app.notifiquei.com.br/api-keys](https://app.notifiquei.com.br/api-keys). Na [referência](https://notifiquei.com.br/developers/referencia), clique em **Authorize**, cole a chave e use **Try it out** em qualquer rota.\n\n**A API não envia mensagem.** Ela só cria a configuração; quem dispara o envio é o comentário real no Instagram.\n\nGuia completo, exemplos e erros comuns: [notifiquei.com.br/developers](https://notifiquei.com.br/developers).\n\n### Novidades\n- **14/10/2026 (v1.2.277)** — Pedir para seguir a conta agora é opcional\n- **13/10/2026 (v1.2.276)** — A especificação OpenAPI agora fica em notifiquei.com.br\n- **13/10/2026 (v1.2.275)** — A documentação mudou para notifiquei.com.br/developers","version":"v1 · 1.2.277","contact":{}},"tags":[{"name":"Contas e posts","description":"Descubra as contas da chave e os posts de cada uma."},{"name":"Automações","description":"Crie, consulte, ligue e desligue automações \"comenta QUERO\"."}],"servers":[{"url":"https://api.notifiquei.com.br","description":"Produção"}],"components":{"securitySchemes":{"chave":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Chave do time (começa com `ntq_live_`). Gere em app.notifiquei.com.br/api-keys."}},"schemas":{"ContaResposta":{"type":"object","properties":{"id":{"type":"string","description":"ID da conta Instagram. É o que vai em `contaInstagram` e `instagramId`.","example":"17841405503524573"},"usuario":{"type":"string","example":"minhaloja"},"tipo":{"type":"string","example":"BUSINESS","nullable":true},"seguidores":{"type":"number","example":12400,"nullable":true},"situacao":{"type":"string","enum":["ativa","conexao_expirada","desconectada"],"example":"ativa"},"podeCriarAutomacao":{"type":"boolean","description":"Se `false`, o dono precisa reconectar a conta no painel antes de criar automações.","example":true}},"required":["id","usuario","situacao","podeCriarAutomacao"]},"ErroResposta":{"type":"object","properties":{"message":{"description":"O que deu errado, em português. Em erro de validação pode vir uma lista.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"Chave de API inválida"},"statusCode":{"type":"number","example":401},"error":{"type":"string","example":"Unauthorized"},"timestamp":{"type":"string","example":"2026-10-13T20:00:00.000Z"},"path":{"type":"string","example":"/partners/accounts"}},"required":["message","statusCode","timestamp","path"]},"PostResposta":{"type":"object","properties":{"id":{"type":"string","description":"ID do post — use em `posts: [\"<id>\"]`.","example":"18100000001"},"legenda":{"type":"string","description":"Começo da legenda (até 140 caracteres).","example":"Promoção do planner — comenta QUERO","nullable":true},"tipo":{"type":"string","example":"IMAGE"},"link":{"type":"string","example":"https://instagram.com/p/xxxx"},"publicadoEm":{"type":"string","example":"2026-08-01T10:00:00Z"}},"required":["id","tipo","link","publicadoEm"]},"ContaCurtaResposta":{"type":"object","properties":{"id":{"type":"string","example":"17841405503524573"},"usuario":{"type":"string","example":"minhaloja"}},"required":["id","usuario"]},"AlvoResposta":{"type":"object","properties":{"posts":{"description":"`\"todos\"`, `\"proximo\"` (enquanto espera o próximo post) ou a lista de IDs de post.","oneOf":[{"type":"string","enum":["todos","proximo"]},{"type":"array","items":{"type":"string"}}],"example":["18100000001"]},"aguardandoProximoPost":{"type":"boolean","example":false},"aguardandoDesde":{"type":"string","description":"Desde quando espera o próximo post (só aparece enquanto espera).","example":"2026-08-21T13:11:08.000Z"},"postVinculadoEm":{"type":"string","description":"Quando um `\"proximo\"` se prendeu ao post publicado.","example":"2026-08-03T20:12:07.000Z","nullable":true}},"required":["posts","aguardandoProximoPost"]},"AutomacaoResumoResposta":{"type":"object","properties":{"id":{"type":"string","example":"a1b2c3d4-0000-4000-8000-000000000000"},"nome":{"type":"string","example":"Comenta QUERO — Planner"},"ativa":{"type":"boolean","example":true},"conta":{"$ref":"#/components/schemas/ContaCurtaResposta"},"alvo":{"$ref":"#/components/schemas/AlvoResposta"},"palavras":{"description":"Palavras que disparam. Vazio = qualquer comentário.","example":["quero"],"type":"array","items":{"type":"string"}},"criadaEm":{"type":"string","example":"2026-08-03T20:00:00.000Z"},"atualizadaEm":{"type":"string","example":"2026-08-12T14:30:00.000Z"}},"required":["id","nome","ativa","conta","alvo","palavras","criadaEm","atualizadaEm"]},"AutomacaoDetalheResposta":{"type":"object","properties":{"id":{"type":"string","example":"a1b2c3d4-0000-4000-8000-000000000000"},"nome":{"type":"string","example":"Comenta QUERO — Planner"},"ativa":{"type":"boolean","example":true},"conta":{"$ref":"#/components/schemas/ContaCurtaResposta"},"alvo":{"$ref":"#/components/schemas/AlvoResposta"},"palavras":{"description":"Palavras que disparam. Vazio = qualquer comentário.","example":["quero"],"type":"array","items":{"type":"string"}},"criadaEm":{"type":"string","example":"2026-08-03T20:00:00.000Z"},"atualizadaEm":{"type":"string","example":"2026-08-12T14:30:00.000Z"},"respostaPublica":{"example":["Te enviei no direct! 😉"],"type":"array","items":{"type":"string"}},"mensagens":{"type":"array","description":"Mensagens do direct, lidas do fluxo gravado, no mesmo formato da receita.","items":{"type":"object"},"example":[{"texto":"Clique abaixo 👇","botoes":[{"rotulo":"Quero o link","acao":"continuar"}]},{"texto":"Aqui está: https://loja.exemplo.com/planner"}]},"exigirSeguir":{"type":"boolean","example":false,"description":"O fluxo cobra \"seguir a conta\" antes dos links?"}},"required":["id","nome","ativa","conta","alvo","palavras","criadaEm","atualizadaEm","respostaPublica","mensagens","exigirSeguir"]},"BotaoDto":{"type":"object","properties":{"rotulo":{"type":"string","description":"Texto do botão (até 20 caracteres, limite da Meta).","example":"Quero o link"},"acao":{"description":"`\"continuar\"` envia a PRÓXIMA mensagem da lista (precisa existir uma). `{ \"link\": \"https://...\" }` abre um site.","oneOf":[{"type":"string","enum":["continuar"]},{"type":"object","properties":{"link":{"type":"string","example":"https://loja.exemplo.com"}},"required":["link"]}],"example":"continuar"}},"required":["rotulo","acao"]},"CardDto":{"type":"object","properties":{"nome":{"type":"string","description":"Título do card (até 80). Se faltar, sai do título da página do link.","example":"Pó translúcido Bella"},"link":{"type":"string","description":"Link de afiliado — vira o botão do card.","example":"https://s.shopee.com.br/4ftndxVAcy"},"imagem":{"type":"string","description":"URL pública da foto. Se faltar, sai da própria página do link."},"descricao":{"type":"string","description":"Linha menor abaixo do nome (até 80)."},"botao":{"type":"string","description":"Texto do botão do card (até 20).","default":"Comprar"}},"required":["link"]},"MensagemDto":{"type":"object","properties":{"texto":{"type":"string","description":"Texto da mensagem. Obrigatório quando a mensagem não é de cards.","example":"Oi! Vi seu comentário 🤗 Clique abaixo para receber o link:"},"botoes":{"description":"Até 3 botões. Mensagem de cards não leva botões.","type":"array","items":{"$ref":"#/components/schemas/BotaoDto"}},"cards":{"description":"Carrossel de produtos (1 a 10 cards). Uma mensagem tem `texto` OU `cards`, nunca os dois.","type":"array","items":{"$ref":"#/components/schemas/CardDto"}}}},"CriarAutomacaoDto":{"type":"object","properties":{"nome":{"type":"string","description":"Nome da automação no painel.","example":"Comenta QUERO — Planner"},"contaInstagram":{"type":"string","description":"ID da conta Instagram — o `id` de `GET /partners/accounts`.","example":"17841405503524573"},"palavras":{"description":"Palavras que disparam a automação. Sem este campo, qualquer comentário dispara.","example":["quero","eu quero"],"type":"array","items":{"type":"string"}},"posts":{"description":"Onde a automação vale: `\"todos\"` (padrão), `\"proximo\"` (o próximo post publicado depois de criar ou religar) ou a lista de IDs de post (de `GET /partners/accounts/{id}/posts`). Exatamente `proximo`, minúsculo e sem acento.","oneOf":[{"type":"string","enum":["todos","proximo"]},{"type":"array","items":{"type":"string"},"minItems":1}],"default":"todos","example":"todos"},"respostaPublica":{"description":"Respostas públicas ao comentário — o sistema sorteia uma. Sem este campo, usa um texto padrão.","example":["Te enviei no direct! 😉","Enviado, confere lá! 😊"],"type":"array","items":{"type":"string"}},"mensagens":{"description":"Sequência de mensagens no direct (1 a 10). Um botão `\"continuar\"` leva à mensagem seguinte.","type":"array","items":{"$ref":"#/components/schemas/MensagemDto"}},"exigirSeguir":{"type":"boolean","description":"Cobrar que a pessoa siga a conta antes de receber os links? Com `true`, depois do toque na 1ª mensagem entra o passo \"É seguidor?\": quem não segue recebe um pedido para seguir e um botão \"Já estou seguindo\". Default: `false` (todo mundo recebe).","default":false},"ativa":{"type":"boolean","description":"Criar já ligada?","default":true}},"required":["nome","contaInstagram","mensagens"]},"CardEcoResposta":{"type":"object","properties":{"nome":{"type":"string","example":"Pó translúcido Bella"},"imagem":{"type":"string","example":"https://down-br.img.susercontent.com/file/sg-11134207-exemplo"},"link":{"type":"string","example":"https://s.shopee.com.br/4ftndxVAcy"}},"required":["nome","imagem","link"]},"CarrosselEcoResposta":{"type":"object","properties":{"mensagem":{"type":"number","description":"Número da mensagem (começa em 1).","example":1},"cards":{"type":"array","items":{"$ref":"#/components/schemas/CardEcoResposta"}}},"required":["mensagem","cards"]},"AutomacaoCriadaResposta":{"type":"object","properties":{"id":{"type":"string","example":"a1b2c3d4-0000-4000-8000-000000000000"},"nome":{"type":"string","example":"Comenta QUERO — Planner"},"ativa":{"type":"boolean","example":true},"conta":{"type":"string","description":"Usuário da conta Instagram.","example":"minhaloja"},"criadaEm":{"type":"string","example":"2026-08-03T20:00:00.000Z"},"carrosseis":{"description":"Só quando a receita tem cards: o que foi extraído de cada link, para você conferir.","type":"array","items":{"$ref":"#/components/schemas/CarrosselEcoResposta"}}},"required":["id","nome","ativa","conta","criadaEm"]},"AtualizarStatusAutomacaoDto":{"type":"object","properties":{"ativa":{"type":"boolean","description":"`true` liga, `false` desliga. Repetir o mesmo valor não inverte nada.","example":false}},"required":["ativa"]},"StatusAlteradoResposta":{"type":"object","properties":{"id":{"type":"string","example":"a1b2c3d4-0000-4000-8000-000000000000"},"nome":{"type":"string","example":"Comenta QUERO — Planner"},"ativa":{"type":"boolean","example":false},"alterada":{"type":"boolean","description":"`false` quando a automação já estava nesse estado (pedido repetido não inverte nada).","example":true},"atualizadaEm":{"type":"string","example":"2026-08-12T14:35:00.000Z"}},"required":["id","nome","ativa","alterada","atualizadaEm"]}}},"externalDocs":{"description":"Guia para desenvolvedores","url":"https://notifiquei.com.br/developers"}}