/relatorios/agente-de-iaAtendimento do agente de IA
Quantas conversas o agente resolveu sozinho, quantas passou para a equipe e os motivos da passagem.
GET /relatorios/agente-de-ia
curl "https://chat.forsi.com.br/api/v1/relatorios/agente-de-ia?de=2026-09-01&ate=2026-09-30" \
-H "Authorization: Bearer $FORSI_CHAVE"const resposta = await fetch('https://chat.forsi.com.br/api/v1/relatorios/agente-de-ia?de=2026-09-01&ate=2026-09-30', {
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/relatorios/agente-de-ia",
headers={
"Authorization": f"Bearer {os.environ['FORSI_CHAVE']}",
},
params={
"de": "2026-09-01",
"ate": "2026-09-30",
},
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": {
"periodo": {
"de": "2026-10-12",
"ate": "2026-10-12",
"dias": 30,
"fuso": "America/Sao_Paulo",
"granularidade": "dia",
"caixa_id": "7a9d53e9-9d1b-4122-923b-fac67958f445"
},
"resumo": {
"conversas": 12,
"sem_agente": 12,
"com_agente": 12,
"passadas_para_a_equipe": 12,
"resolvidas_pelo_agente": 12,
"em_andamento": 12,
"taxa_resolucao": 0.62
},
"motivos_da_passagem": [{"motivo":"texto","quantidade":12}],
"linhas": [
{
"id": "64ba31d1-11f4-41f2-9d68-33eef70d3495",
"nome": "Maria Souza",
"conversas_com_agente": 12,
"passadas_para_a_equipe": 12,
"resolvidas_pelo_agente": 12,
"em_andamento": 12
}
]
}
}Parâmetros de consulta#
dedata AAAA-MM-DDopcionalPrimeiro dia (AAAA-MM-DD, no fuso da organização). Padrão: 29 dias antes de
ate.atedata AAAA-MM-DDopcionalÚltimo dia, inclusive. Padrão: hoje. O período vai até 366 dias.
caixa_iduuidopcionalSó os números desta caixa (WhatsApp, Instagram...). Veja as caixas em GET /me.
formato"json" | "csv"opcionaljson(padrão) oucsv(UTF-8 com BOM, separado por vírgula, pronto para planilha).
Resposta#
200 com {"dados": ...}: RelatorioAgenteDeIa. Com formato=csv, um arquivo CSV.
periodoobjectopcionalO período que valeu na consulta (com os padrões aplicados).
periodo.dedata AAAA-MM-DDopcional—periodo.atedata AAAA-MM-DDopcional—periodo.diasintegeropcional—periodo.fusostringopcional- ex.: America/Sao_Paulo
periodo.granularidade"dia" | "semana" | "mes"opcionalSó nos relatórios em série.
periodo.caixa_iduuidopcional—resumoobjectopcional—resumo.conversasintegeropcional—resumo.sem_agenteintegeropcional—resumo.com_agenteintegeropcional—resumo.passadas_para_a_equipeintegeropcional—resumo.resolvidas_pelo_agenteintegeropcional—resumo.em_andamentointegeropcional—resumo.taxa_resolucaonumber ou nullopcionalResolvidas pelo agente / conversas com agente (0 a 1).
motivos_da_passagemlista de objectopcional—motivos_da_passagem[].motivostringopcional—motivos_da_passagem[].quantidadeintegeropcional—linhaslista de objectopcionalUma linha por agente de IA.
linhas[].iduuidopcional—linhas[].nomestringopcional—linhas[].conversas_com_agenteintegeropcional—linhas[].passadas_para_a_equipeintegeropcional—linhas[].resolvidas_pelo_agenteintegeropcional—linhas[].em_andamentointegeropcional—
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 devolver6
periodo_longoEscolha um período de até 366 dias.periodo_invalidoPeríodo inválido: `de` precisa ser antes de `ate` (AAAA-MM-DD).granularidade_invalidagranularidade deve ser dia, semana ou mes.caixa_invalidaCaixa não encontrada nesta organização (veja GET /me).limite_relatoriosRelatórios têm limite próprio, mais baixo. Espere o tempo de Retry-After.relatorio_demorouO relatório demorou demais. Escolha um período menor ou uma granularidade maior (semana ou mes).
Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.