Tema
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 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"
}
}
}