Skip to content

Áudio ​

Cada atendimento pode ser ouvido. GET /v1/atendimentos/{id}/audio devolve exatamente o que o botão de play do painel reproduz: só o trecho da conversa, em um único arquivo WAV, com documento e nome completo já em silêncio.

A API não expõe arquivos de gravação, nomes de arquivo nem posições internas. O único identificador que você precisa é o id do atendimento.

Como chegar ao áudio ​

Todo atendimento traz um bloco audio:

json
{
  "id": "2026-10-06:atend_27",
  "horario": "13:16:41",
  "resumo": "Visitante interessada no quadrimestral…",
  "audio": {
    "url": "/v1/atendimentos/2026-10-06:atend_27/audio",
    "duracao_s": 324,
    "partes": 1
  }
}
CampoO que é
urlCaminho relativo à base da API.
duracao_sDuração do áudio entregue, em segundos.
partesQuantos recortes foram colados em sequência (a conversa pode atravessar a troca de arquivo da gravação). Você sempre recebe um único WAV.

audio é null quando o atendimento não tem trecho de gravação.

Chamada ​

Use o mesmo Authorization, Id_unidade, de, ate (e turno, se usou) da chamada que devolveu o atendimento.

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"
python
import os
import urllib.request

url = (
    "https://api.ouvixpro.ai/v1/atendimentos/2026-10-06:atend_27/audio"
    "?Id_unidade=375&de=2026-10-06&ate=2026-10-06"
)
req = urllib.request.Request(url, headers={"Authorization": f"Bearer {os.environ['OUVIX_API_KEY']}"})
with urllib.request.urlopen(req) as res, open("atendimento.wav", "wb") as f:
    f.write(res.read())
js
import { writeFile } from 'node:fs/promises'

const base = 'https://api.ouvixpro.ai'
const atendimento = { audio: { url: '/v1/atendimentos/2026-10-06:atend_27/audio' } } // vindo do /v1/painel
const res = await fetch(`${base}${atendimento.audio.url}?Id_unidade=375&de=2026-10-06&ate=2026-10-06`, {
  headers: { Authorization: `Bearer ${process.env.OUVIX_API_KEY}` },
})
if (!res.ok) throw new Error(`HTTP ${res.status}`)
await writeFile('atendimento.wav', Buffer.from(await res.arrayBuffer()))

Resposta ​

CabeçalhoValor
Content-Typeaudio/wav — PCM 16 bits, pronto para tocar em qualquer player.
Content-Dispositioninline; filename="atendimento-<id>.wav"
X-Audio-Duracao-SDuração em segundos.
X-Audio-PartesNúmero de recortes colados.
Cache-Controlprivate, max-age=300

O formato é sempre o mesmo, independentemente de como a unidade grava. A API recorta e converte no servidor.

Dados pessoais ​

As janelas em que foram ditos documento ou nome completo chegam em silêncio, com a mesma regra do player do painel. Os textos (resumo, evidencia, fato…) já vêm mascarados. Não há nada a tratar do seu lado.

Desempenho ​

A primeira chamada para um atendimento busca a gravação no armazenamento e pode levar alguns segundos, proporcional ao tamanho do bloco de áudio. Chamadas seguintes para a mesma gravação são rápidas. Para catálogos grandes, baixe sob demanda (quando alguém clicar em ouvir) em vez de pré-carregar o dia inteiro.

Erros relacionados ​

HTTPcodeCausa
404atendimento_nao_encontradoO id não está nessa unidade e nesse período (confira Id_unidade, de, ate e turno).
404audio_indisponivelO atendimento não tem trecho de gravação (audio é null).
502audio_indisponivelO armazenamento de áudio não respondeu ou o recorte falhou. Tente novamente em instantes.
410endpoint_removidoChamada ao antigo /v1/audio. Use /v1/atendimentos/{id}/audio.

Documentação da API OuvixPRO.