Como funciona
POST /v1/scribe-sessions/livedevolve uma URL de WebSocket.- Conecte-se a essa URL e transmita o áudio conforme ele é capturado.
- Envie
stop_recordingquando a consulta terminar. - O webhook
scribe_session.completed(webhooks) avisa que o registro está pronto. - Busque o registro em Documentos de Registro Médico.
O que a chave de API precisa ter
A chave usada aqui precisa das três condições abaixo, ou a chamada falha com403:
- A permissão
scribe:write, concedida de forma explícita. Uma chave antiga sem o claim de permissões funciona em outros endpoints, mas é recusada aqui; gere a chave de novo para obter uma válida. - O papel
doctor. - Um vínculo com uma instituição.
Criar uma sessão
O corpo da requisição carrega o contexto da consulta: qual é a consulta, qual modelo será preenchido, a qual paciente ela pertence e o contexto escrito que você já tiver.live.url como opaca e trate-a como um segredo. Conecte-se exatamente à URL devolvida e não a construa por conta própria: o host, o caminho e a credencial mudam sem aviso.
A credencial é verificada apenas quando o socket abre. Uma conexão estabelecida antes de expiresAt continua transmitindo depois desse instante, e uma conexão tentada depois é recusada, então peça uma sessão nova em vez de reutilizar uma URL vencida.
Campos da requisição
Escolher o modelo
template aceita um id ou o próprio JSON do modelo. Envie exatamente um dos dois.
Enviar os dois, ou nenhum, devolve
400 com param igual a template.
A forma em linha:
Identificar o paciente
patient também aceita um id ou a identidade em linha. Envie exatamente um.
Repetir a mesma consulta
Chamar o endpoint de novo com o mesmoconsultation.id enquanto a sessão ainda está gravando devolve a mesma sessão com uma URL nova. Essa é a forma suportada de se recuperar de uma conexão perdida. Não compare as duas URLs entre si e não armazene a primeira. Depois que a gravação para, o mesmo id devolve 409.
Enviar áudio
Conecte-se alive.url. O servidor envia uma mensagem ready quando está pronto para receber áudio.
Envie o áudio como frames binários de WebSocket. Dois formatos são aceitos:
Envie cerca de 100 ms de áudio por frame, no ritmo em que ele é capturado. Uma carga PCM menor que 1024 bytes (cerca de 32 ms) é mantida na gravação, mas não é encaminhada ao reconhecedor ao vivo, então frames muito pequenos atrasam o texto que você vê em vez de perder áudio.
Manter a conexão viva
Envie{"type": "ping", "data": {}} quando quiser confirmar que o socket está saudável; o servidor responde com {"type": "pong", "data": {}}. Qualquer frame recebido, inclusive áudio, conta como atividade. Uma sessão que não recebe nada por 15 minutos é fechada pelo servidor, então envie áudio continuamente, ou faça ping durante pausas longas.
Mensagens que você recebe
Toda mensagem é JSON com um campotype e um campo data.
Uma
correction substitui o que um transcript informou para o mesmo segmento. Quando exibir texto para um médico, aplique as correções conforme elas chegam.
reconnect carrega dois motivos. server_draining significa que o servidor está reiniciando: reconecte e continue transmitindo. resume_upload significa que a parada chegou antes de todo o áudio: reconecte e envie o áudio que falta.
Encerrar a sessão
Envie esta mensagem quando a consulta terminar:scribe_completed com data.status igual a processing e fecha a conexão.
Receber o registro
O webhookscribe_session.completed carrega consultationInternalId, o mesmo consultation.id que você enviou. Busque o registro com ele:
stop_recording. A geração acontece em parte enquanto o áudio é transmitido, então uma consulta mais longa não demora proporcionalmente mais para terminar.
Perda de conexão
Reconectar é esperado e seguro.- O socket cai durante a gravação. Chame
POST /v1/scribe-sessions/livede novo com o mesmoconsultation.ide conecte-se à URL devolvida. O áudio já recebido é preservado. live.urlchega aoexpiresAt. Peça uma sessão nova com o mesmoconsultation.id. Um socket já aberto não é afetado.- Fechamento 1013. Repetível: o servidor está ocupado ou reiniciando. Aguarde um momento e reconecte.
- Fechamento 1003. O áudio não pôde ser decodificado. A sessão vai para estado de erro, então reconectar não a recupera. Corrija o codificador e comece uma consulta nova.
- Fechamento 1008. Terminal: a credencial ou a sessão não é válida. Não reconecte; repetir devolve o mesmo resultado.
Erros
Veja Erros para o envelope completo de resposta.