---
url: https://docs.ouvixpro.ai/visoes/atendimento.md
description: >-
  O objeto de um atendimento: todos os campos, o bloco audio, os rotulos
  prontos, desfecho_venda e os motivos de não fechar.
---

# Atendimento

Um item de `painel.atendimentos`. O `id` vale só junto com o mesmo `Id_unidade` e o mesmo período. O mesmo objeto aparece nas listas de cada visão (`novosAlunos`, `protocolo.vendas`, `evidencias`…), sempre com o mesmo `id`.

```bash
curl "https://api.ouvixpro.ai/v1/atendimentos/2026-10-06:atend_27?Id_unidade=375&de=2026-10-06&ate=2026-10-06" \
  -H "Authorization: Bearer $OUVIX_API_KEY"
```

| Campo | Tipo | O que é |
| --- | --- | --- |
| `id` | string | Identificador estável no período: data:atendimento\_id. Use em /v1/atendimentos/{id}. O mesmo id aparece nas listas de protocolo e nos itens de insights. |
| `atendimento_id` | string | Id interno do dia, por exemplo atend\_12. Não é único entre dias; o campo id é. |
| `data_ref` | string | Dia do atendimento, YYYY-MM-DD. |
| `horario` | string | Horário do início da conversa, HH:MM:SS. |
| `momento` | string | entrada, atendimento (balcão), saida ou indefinido. |
| `perfil` | string | aluno (já treina), novo (visitante ou aluno novo) ou indefinido. |
| `tipo` | string | Tipo da conversa: checkin, matricula, cadastro, renovacao, plano, visita, cancelamento, congelamento e outros. |
| `nota` | number / null | Nota de 0 a 10. |
| `resumo` | string | O que aconteceu, já sem documento e nome completo. |
| `grave` | boolean | Verdadeiro quando o atendimento pede atenção. |
| `agregador` | string / null | gympass ou totalpass quando a pessoa entra por agregador. Essas conversas ficam fora da conta de venda. |
| `planos` | array | Planos do catálogo citados na conversa: prime, recorrente, anual, quadrimestral, familia, melhor\_idade. |
| `protocolo` | object | Passos do protocolo nesta conversa. cena diz o que é a conversa (venda\_nova, renovacao, nenhuma); plano\_fechado diz qual plano fechou. Demais campos são booleanos por passo (objetivo, recorrente, ordem\_ok, registrou\_contato, agendou…). |
| `fechou` | boolean / null | Desfecho da conversa de plano. true = fechou um plano; false = saiu sem fechar e isso aparece no áudio; null = o áudio não mostra o fim. Diária avulsa não é plano: fechou=false com motivo diaria. |
| `motivo_nao_fechou` | string / null | Por que não fechou, quando fechou=false. Valores em "Motivos de não fechar". |
| `desfecho_venda` | object / null | Leitura dedicada do desfecho, com a fala literal que prova. Presente nas conversas de plano. Campos na tabela "Dentro de desfecho\_venda". |
| `sem_proximo_passo` | boolean | Aluno novo que saiu sem contato, agendamento ou matrícula. |
| `truncado` | boolean | A conversa encosta na borda do bloco de áudio: está incompleta. |
| `desfecho_nao_captado` | boolean | O fim da conversa não aparece no áudio (a pessoa foi levada para outro lugar). |
| `paralelo` | boolean | Conversa separada de um trecho com mais de um atendimento ao mesmo tempo. |
| `guia` | object | Itens do guia da recepção nesta conversa, cada um true/false (saudacao, identificacao, resolveu\_demanda, proximo\_passo…). |
| `pedidos` | array | Pedidos fora do cardápio de planos: tema, pedido, resposta, citacao, prometeu\_encaminhar. |
| `insights_abertos` | array | O que ficou em aberto nesta conversa: tipo, quem, titulo, fato, aberto, acao. |
| `audio` | object / null | Como ouvir esta conversa: url (GET, mesma autenticação e mesmos Id\_unidade/de/ate), duracao\_s e partes. null quando não há trecho de áudio. Campos na tabela "Dentro de audio". |
| `rotulos` | object | Textos e cores prontos para mostrar esta conversa como o painel mostra: quando, momento, perfil, tipo, chips, desfecho de aluno novo, venda e renovação. Campos na tabela "Dentro de rotulos". |

## Dentro de `audio`

O áudio de um atendimento sai por `GET /v1/atendimentos/{id}/audio`, com os mesmos parâmetros da chamada que devolveu o atendimento. A resposta é sempre um WAV com apenas o trecho da conversa, igual ao play da interface, com documento e nome completo em silêncio. O guia [Áudio](/guia/audio) detalha.

```bash
curl -o atendimento.wav \
  "https://api.ouvixpro.ai/v1/atendimentos/2026-10-06:atend_27/audio?Id_unidade=375&de=2026-10-06&ate=2026-10-06" \
  -H "Authorization: Bearer $OUVIX_API_KEY"
```

| Campo | Tipo | O que é |
| --- | --- | --- |
| `url` | string | Caminho relativo à base da API: /v1/atendimentos/{id}/audio. Envie o mesmo Authorization, Id\_unidade, de, ate (e turno, se usou) da chamada que devolveu o atendimento. |
| `duracao_s` | number | Duração do áudio entregue, em segundos. |
| `partes` | number | Quantos recortes foram colados em sequência (a conversa pode atravessar a troca de arquivo da gravação). A API entrega um único WAV. |

## Dentro de `rotulos`

Tudo o que o painel escreve ao lado de uma conversa, já pronto: você não precisa traduzir `momento`, `perfil`, `tipo` ou decidir o texto do desfecho. As cores vêm em hexadecimal e os `tone` seguem a tabela de `/v1/catalogo`.

| Campo | Tipo | O que é |
| --- | --- | --- |
| `quando` | string | Data e hora como aparece nos cards: "06/10 · 13:16:41". |
| `momento` | object | id, label e cor do momento: Entrada, Balcão ou Saída. |
| `perfil` | object / null | id e label do perfil (Aluno, Novo). null quando indefinido. |
| `tipo` | object | id, label e cor do tipo da conversa (Check-in, Cadastro, Plano…). |
| `sexo` | string / null | "Mulher", "Homem" ou null. |
| `agregador` | object / null | id e label (Gympass, TotalPass) quando a pessoa entra por agregador. |
| `resumo` | string | O resumo já no tom do painel (sem jargão interno). |
| `chips` | array | Chips de contexto na ordem da tela: chave, label, hint e tone. Inclui "verificado no áudio", "conversa incompleta", "atendimento paralelo", "desfecho não captado", "avaliação parcial". |
| `planos` | array | Tags dos planos citados, na ordem do catálogo: id e label. |
| `novo` | object / null | Só para aluno novo: label (Matrícula · plano, Cadastro no balcão, Saiu sem próximo passo, Contato garantido…), tone e motivo. |
| `venda` | object / null | Só em conversa de venda: label (Fechou · plano, Não fechou, Sem desfecho no áudio), tone, evidencia e proximoPasso. |
| `renovacao` | object / null | Só em conversa de renovação: label (Migrou pro recorrente, Ficou no mensal · motivo) e tone. |
| `play` | string | Texto do botão de ouvir: "06/10 · 13:16:41 · Balcão". |

## Dentro de `desfecho_venda`

| Campo | Tipo | O que é |
| --- | --- | --- |
| `eh_venda` | boolean | Verdadeiro quando é uma conversa de plano com visitante. Falso em cadastro digital, ativação de quem já pagou e check-in de agregador. |
| `fechou` | boolean / null | true fechou um plano; false saiu sem fechar; null o áudio corta antes do fim. Só vem preenchido quando eh\_venda=true. |
| `plano_fechado` | string / null | Plano fechado: prime, recorrente, anual, quadrimestral, familia ou melhor\_idade. Sempre null quando fechou=false. |
| `evidencia` | string | A fala literal que prova o desfecho ("vou mandar o link do contrato", "eu fecho amanhã"). |
| `proximo_passo` | string | O que ficou combinado quando não fechou (volta amanhã, WhatsApp, avaliação). |

## Motivos de não fechar

| Valor | Rótulo na tela | Quando |
| --- | --- | --- |
| `volta_depois` | Volta outro dia pra fechar | Disse que volta amanhã ou outro dia para fechar (sem documento, sem cartão, vai trazer alguém). |
| `diaria` | Pagou só a diária | Pagou a diária avulsa (R$ 49,90) e não entrou em plano. |
| `preco` | Preço | Achou caro ou comparou preço. |
| `caro` | Tá caro | Disse explicitamente que está caro. |
| `horario` | Horário | O horário da academia ou da aula não serve. |
| `vai_pensar` | Vai pensar | Vai pensar, sem data para voltar. |
| `vou_pensar` | Disse que ia ver | "Vou ver", sem compromisso. |
| `conjuge` | Vou ver com marido/esposa | Depende de outra pessoa. |
| `totalpass` | TotalPass | Prefere ou já tem TotalPass. |
| `cartao` | Não quer cartão | Não quis deixar o cartão no recorrente. |
| `pix` | Quer pagar no Pix | Quer pagar à vista no Pix. |
| `so_olhando` | Só olhando | Veio só conhecer. |
| `sem_oferta` | Sem oferta da recepção | A recepção não ofereceu plano. |
| `outro` | Outro | Qualquer outro motivo. |

## Exemplo

```json
{
  "Id_unidade": "375",
  "visao": "recepcao",
  "de": "2026-10-06",
  "ate": "2026-10-06",
  "atendimento": {
    "id": "2026-10-06:atend_27",
    "atendimento_id": "atend_27",
    "data_ref": "2026-10-06",
    "horario": "13:16:41",
    "momento": "atendimento",
    "perfil": "novo",
    "tipo": "plano",
    "nota": 7,
    "resumo": "Visitante interessada no quadrimestral guardou o nome e contato, mas não fechou porque não estava com documento ou cartão. Volta amanhã.",
    "grave": false,
    "agregador": null,
    "planos": [
      "prime",
      "recorrente",
      "anual",
      "quadrimestral",
      "familia"
    ],
    "protocolo": {
      "cena": "venda_nova",
      "objetivo": false,
      "recorrente": true,
      "ordem_ok": true,
      "registrou_contato": true,
      "plano_fechado": null
    },
    "fechou": false,
    "motivo_nao_fechou": "volta_depois",
    "desfecho_venda": {
      "eh_venda": true,
      "fechou": false,
      "plano_fechado": null,
      "evidencia": "sem documento sem nada nem cartão mas eu fecho amanhã",
      "proximo_passo": "Volta amanhã para fechar o quadrimestral."
    },
    "sem_proximo_passo": true,
    "truncado": false,
    "audio": {
      "url": "/v1/atendimentos/2026-10-06:atend_27/audio",
      "duracao_s": 324,
      "partes": 1
    },
    "rotulos": {
      "quando": "06/10 · 13:16:41",
      "momento": {
        "id": "atendimento",
        "label": "Balcão",
        "cor": "#7c3aed"
      },
      "perfil": {
        "id": "novo",
        "label": "Novo"
      },
      "tipo": {
        "id": "plano",
        "label": "Plano",
        "cor": "#ea580c"
      },
      "sexo": "Mulher",
      "agregador": null,
      "resumo": "Visitante interessada no quadrimestral guardou o nome e contato, mas não fechou porque não estava com documento ou cartão. Volta amanhã.",
      "chips": [],
      "planos": [
        {
          "id": "prime",
          "label": "Prime"
        },
        {
          "id": "recorrente",
          "label": "Recorrente"
        },
        {
          "id": "anual",
          "label": "Anual"
        },
        {
          "id": "quadrimestral",
          "label": "Quadrimestral"
        },
        {
          "id": "familia",
          "label": "Família"
        }
      ],
      "novo": {
        "label": "Saiu sem próximo passo",
        "tone": "bad",
        "motivo": "Volta outro dia pra fechar"
      },
      "venda": {
        "label": "Não fechou",
        "tone": "warn",
        "evidencia": "sem documento sem nada nem cartão mas eu fecho amanhã",
        "proximoPasso": "Volta amanhã para fechar o quadrimestral."
      },
      "renovacao": null,
      "play": "06/10 · 13:16:41 · Balcão"
    }
  }
}
```
