/regras-comentarioListar regras de comentário
Regras que respondem comentários do Instagram, paginado por cursor. Filtre por conta, publicação, estado ou tipo (comum ou seguir). Regras seguir trazem o bloco seguir completo e estatisticas.
GET /regras-comentario
curl "https://chat.forsi.com.br/api/v1/regras-comentario?conexao_id=54b27747-86c2-455a-91a4-c0c02d0bd891&ativo=true" \
-H "Authorization: Bearer $FORSI_CHAVE"const resposta = await fetch('https://chat.forsi.com.br/api/v1/regras-comentario?conexao_id=54b27747-86c2-455a-91a4-c0c02d0bd891&ativo=true', {
headers: {
Authorization: `Bearer ${process.env.FORSI_CHAVE}`,
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${resposta.status} ${json.erro.codigo}: ${json.erro.mensagem}`);
console.log(json.dados);import os
import requests
resposta = requests.get(
"https://chat.forsi.com.br/api/v1/regras-comentario",
headers={
"Authorization": f"Bearer {os.environ['FORSI_CHAVE']}",
},
params={
"conexao_id": "54b27747-86c2-455a-91a4-c0c02d0bd891",
"ativo": "true",
},
timeout=30,
)
corpo = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{resposta.status_code} {corpo['erro']['codigo']}: {corpo['erro']['mensagem']}")
print(corpo["dados"]){
"dados": [
{
"id": "cc23f373-2c83-42d6-83a7-c4e00ac10c39",
"nome": "Maria Souza",
"ativo": true,
"conexao_id": "11908b04-f817-4068-afa6-896d3e1b7265",
"post_id": "texto",
"palavras": ["texto"],
"modo": "contem",
"qualquer_comentario": false,
"automacao_id": "b6b1fba7-e2a3-4922-a365-70584a78e091",
"automacao": "texto",
"responder_publico": "texto",
"resposta_privada": "texto",
"respostas_publicas": ["texto"],
"ocultar_apos": false,
"botoes": ["texto"],
"botoes_detalhe": [
{
"titulo": "Consulta de retorno",
"url": "https://seu-sistema.com.br/webhooks/forsi"
}
],
"tipo": "comum",
"seguir": {
"botao_receber": "texto",
"texto_nao_segue": "texto",
"botao_estou_seguindo": "texto",
"texto_ainda_nao_segue": "texto",
"texto_ja_segue": "texto",
"texto_seguiu_depois": "texto",
"conteudo": {
"texto": "Oi, queria remarcar minha consulta",
"botao": {
"titulo": "Consulta de retorno",
"url": "https://seu-sistema.com.br/webhooks/forsi"
}
},
"max_tentativas": 12,
"texto_limite": "texto",
"se_nao_verificar": "enviar"
},
"estatisticas": {
"pediram": 12,
"entregues": 42,
"ja_seguiam": 12,
"seguiram_depois": 12,
"aguardando": 12
},
"atualizado_em": "2026-10-04T13:05:12.481Z",
"execucoes_7d": 12,
"ultima_em": "2026-10-04T13:05:12.481Z"
}
],
"proximo": "1791205512481_3791c08d-72dd-4002-89ff-1e14a11c07e5"
}Parâmetros de consulta#
conexao_iduuidopcionalSó as regras desta conta do Instagram.
post_idstringopcionalSó as regras desta publicação.
ativo"true" | "false"opcionaltrue ou false.
tipo"comum" | "seguir"opcionalSó as regras deste tipo:
comumouseguir.limiteintegeropcionalItens por página (1 a 100, padrão 50).
cursorstringopcionalO valor de
proximoda página anterior.- até 80 caracteres
Resposta#
200 com {"dados": ...}: uma lista de RegraComentario, paginada por cursor (como paginar).
iduuidopcional—nomestringopcional—ativobooleanopcional—conexao_iduuidopcional—post_idstring ou nullopcional—palavraslista de stringopcional—modo"contem" | "igual"opcional—qualquer_comentariobooleanopcional—automacao_iduuid ou nullopcional—automacaostring ou nullopcionalNome da automação.
responder_publicostring ou nullopcional—resposta_privadastring ou nullopcional—respostas_publicaslista de stringopcional—ocultar_aposbooleanopcional—botoeslista de stringopcional—botoes_detalhelista de objectopcionalOs mesmos botões com o link:
urlnão aparece no botão que só devolve o toque.botoes_detalhe[].titulostringopcional—botoes_detalhe[].urlstringopcional—tipo"comum" | "seguir"opcionalcomumouseguir("Seguir para receber"). Regras antigas sãocomum.seguirobject ou nullopcionalSó no tipo
seguir: completo, com os padrões aplicados. Não aparece no tipocomum; dentro dele,conteudo.botao,max_tentativasetexto_limitetambém não aparecem enquanto forem null.seguir.botao_receberstringopcionalBotão da mensagem do comentário (1 a 20). Padrão: "Quero receber".
seguir.texto_nao_seguestringopcionalPara quem ainda não segue (1 a 640).
seguir.botao_estou_seguindostringopcionalBotão para avisar que passou a seguir (1 a 20). Padrão: "Estou seguindo".
seguir.texto_ainda_nao_seguestringopcionalQuando toca em "Estou seguindo" e ainda não segue (1 a 640).
seguir.texto_ja_seguestringopcionalAntes do conteúdo, para quem já seguia (0 a 640; "" = não envia).
seguir.texto_seguiu_depoisstringopcionalAntes do conteúdo, para quem acabou de seguir (0 a 640; "" = não envia).
seguir.conteudoobjectopcionalO que é entregue.
seguir.max_tentativasinteger ou nullopcionalnull = confere até seguir (no máximo 50 vezes).
- mín. 1
seguir.texto_limitestring ou nullopcionalEnviada uma vez quando as tentativas acabam (1 a 640).
seguir.se_nao_verificar"enviar" | "pedir_de_novo"opcionalQuando a Meta não deixa conferir. Padrão:
enviar.estatisticasobject ou nullopcionalSó no tipo
seguir. Contagem desde que a regra existe.estatisticas.pediramintegeropcionalPessoas que receberam o botão.
estatisticas.entreguesintegeropcionalPessoas que receberam o conteúdo.
estatisticas.ja_seguiamintegeropcionalJá seguiam ao pedir.
estatisticas.seguiram_depoisintegeropcionalPassaram a seguir depois de pedir.
estatisticas.aguardandointegeropcionalAinda esperando tocar ou seguir.
atualizado_emdata e hora ISO 8601opcional—execucoes_7dintegeropcionalDisparos nos últimos 7 dias.
ultima_emdata e hora ISO 8601 ou nullopcional—
Erros#
Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.
| Status | Quando |
|---|---|
| 401 | Chave ausente ou inválida (resposta igual para qualquer motivo). |
| 403 | Plano sem API, escopo insuficiente ou https/origem recusados. |
| 422 | Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s). |
| 429 | Limite de requisições. Veja Retry-After. |
Códigos de erro que esta área pode devolver19
regra_inexistenteRegra de comentário não encontrada (veja GET /regras-comentario).regra_conexao_invalidaconexao_id precisa ser uma conta do Instagram conectada por login (veja GET /instagram/contas).regra_sem_palavrasInforme de 1 a 30 palavras, ou use qualquer_comentario: true.regra_modo_invalidomodo deve ser contem ou igual.regra_sem_acaoA regra precisa de uma resposta pública ou de uma resposta privada.regra_texto_longoTexto longo demais: resposta pública até 2200 caracteres e resposta privada até 1000.regra_variantes_demaisNo máximo 5 respostas_publicas.regra_extra_sem_publicorespostas_publicas e ocultar_apos só valem com responder_publico preenchido.regra_automacao_invalidaautomacao_id não é uma automação desta organização (veja GET /automacoes?gatilho=comentario).regra_automacao_sem_privadaPara ligar uma automação, preencha resposta_privada.regra_botao_longoCada botão tem no máximo 20 caracteres.regra_botao_repetidoBotões repetidos. Cada botão deve ser diferente.regra_botao_url_invalidaA url do botão deve ser um link https:// válido, com até 2000 caracteres.regra_botoes_demaisNo máximo 3 botões.regra_botoes_invalidosbotoes deve ser uma lista de textos ou de objetos { titulo, url }.regra_botoes_sem_privadaPara ter botões, preencha resposta_privada.recurso_desligadoEste recurso não está liberado para a sua organização.seguir_invalidoAlgum campo de `seguir` é inválido. A mensagem diz qual: textos de 1 a 640 caracteres (os de "já segue" e "seguiu depois" podem ser vazios), botões de 1 a 20 e sem `{` (botão não troca variáveis), cada texto até 900 bytes (emoji e acento contam mais), sem caractere de controle ou invisível, `max_tentativas` de 1 a 50 e link do conteúdo em https.limite_de_regrasLimite de 200 regras de comentário por organização. Apague alguma para criar outra.
Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.