Pular para o conteúdo
GET/relatorios/tempo-de-resposta

Tempo de resposta e de resolução

relatorios:lerexporta CSV

Primeira resposta e resolução das conversas: quantidade, mediana, 90% das conversas, faixas e a porcentagem respondida em até 1, 5, 15 e 60 minutos. Tempos em segundos. Por semana ou mês, a mediana é calculada de novo em cada período (não é média de medianas).

GET /relatorios/tempo-de-resposta

curl "https://chat.forsi.com.br/api/v1/relatorios/tempo-de-resposta?de=2026-09-01&ate=2026-09-30" \
  -H "Authorization: Bearer $FORSI_CHAVE"
Resposta 200 · JSON (com formato=csv, CSV)
{
  "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": {
      "primeiras_respostas": 12,
      "sem_resposta": 12,
      "mediana_primeira_resposta_s": 240,
      "p90_primeira_resposta_s": 240,
      "respondidas_em_ate_1_min_pct": 87.5,
      "respondidas_em_ate_5_min_pct": 87.5,
      "respondidas_em_ate_15_min_pct": 87.5,
      "respondidas_em_ate_1_h_pct": 87.5,
      "resolvidas": 12,
      "mediana_resolucao_s": 240,
      "p90_resolucao_s": 240
    },
    "faixas_primeira_resposta": [{"faixa":"1 a 5 min","quantidade":12}],
    "faixas_resolucao": [{"faixa":"1 a 5 min","quantidade":12}],
    "linhas": [
      {
        "inicio": "2026-10-12T17:00:00.000Z",
        "fim": "2026-10-12T17:30:00.000Z",
        "primeiras_respostas": 12,
        "mediana_primeira_resposta_s": 240,
        "resolvidas": 12,
        "mediana_resolucao_s": 240
      }
    ]
  }
}

Parâmetros de consulta#

  • dedata AAAA-MM-DDopcional

    Primeiro 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.

  • granularidade"dia" | "semana" | "mes"opcional

    Tamanho de cada linha da série: dia (padrão), semana (começa na segunda) ou mes.

  • caixa_iduuidopcional

    Só os números desta caixa (WhatsApp, Instagram...). Veja as caixas em GET /me.

  • formato"json" | "csv"opcional

    json (padrão) ou csv (UTF-8 com BOM, separado por vírgula, pronto para planilha).

Resposta#

200 com {"dados": ...}: RelatorioTempo. Com formato=csv, um arquivo CSV.

  • periodoobjectopcional

    O 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"opcional

    Só nos relatórios em série.

  • periodo.caixa_iduuidopcional
    —
  • resumoobjectopcional
    —
  • resumo.primeiras_respostasintegeropcional
    —
  • resumo.sem_respostaintegeropcional
    —
  • resumo.mediana_primeira_resposta_sinteger ou nullopcional

    Mediana da primeira resposta (segundos)

  • resumo.p90_primeira_resposta_sinteger ou nullopcional

    90% das conversas foram respondidas em até (segundos)

  • resumo.respondidas_em_ate_1_min_pctnumber ou nullopcional
    —
  • resumo.respondidas_em_ate_5_min_pctnumber ou nullopcional
    —
  • resumo.respondidas_em_ate_15_min_pctnumber ou nullopcional
    —
  • resumo.respondidas_em_ate_1_h_pctnumber ou nullopcional

    Porcentagem (0 a 100) das conversas com primeira resposta em até 1 hora.

  • resumo.resolvidasintegeropcional
    —
  • resumo.mediana_resolucao_sinteger ou nullopcional

    Mediana até resolver (segundos)

  • resumo.p90_resolucao_sinteger ou nullopcional

    90% das conversas foram resolvidas em até (segundos)

  • faixas_primeira_respostalista de objectopcional
    —
  • faixas_primeira_resposta[].faixastringopcional
    • ex.: 1 a 5 min
  • faixas_primeira_resposta[].quantidadeintegeropcional
    —
  • faixas_resolucaolista de objectopcional
    —
  • faixas_resolucao[].faixastringopcional
    • ex.: 1 a 5 min
  • faixas_resolucao[].quantidadeintegeropcional
    —
  • linhaslista de objectopcional

    Uma linha por dia, semana ou mês.

  • linhas[].iniciodata AAAA-MM-DDopcional
    —
  • linhas[].fimdata AAAA-MM-DDopcional

    Último dia da linha (nas pontas do período, a linha é cortada).

  • linhas[].primeiras_respostasintegeropcional
    —
  • linhas[].mediana_primeira_resposta_sinteger ou nullopcional

    Mediana da primeira resposta (segundos)

  • linhas[].resolvidasintegeropcional
    —
  • linhas[].mediana_resolucao_sinteger ou nullopcional

    Mediana até resolver (segundos)

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
422Dados 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).
429Limite 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.