Controle de Gravação Durante a Chamada
Os endpoints POST /api/calls/{id}/recordings e DELETE /api/calls/{id}/recordings permitem habilitar e desabilitar a gravação de uma chamada em andamento. Isso é útil para fluxos de consentimento: você pode criar a chamada sem gravação, pedir o consentimento dos participantes e só então habilitar — ou desabilitar imediatamente se o consentimento for revogado.
Como a gravação é decidida
A gravação de uma chamada pode ser definida em três níveis:
- Padrão do projeto — a configuração de gravação do projeto vale para chamadas que não definirem nada.
- Na criação da chamada — o campo
recording(booleano) no corpo dePOST /api/callssobrescreve o padrão do projeto para aquela chamada. - Durante a chamada — os endpoints desta página habilitam ou desabilitam a gravação a qualquer momento, sobrescrevendo os dois anteriores.
Quando você habilita ou desabilita a gravação em uma chamada em andamento, os aplicativos dos participantes são notificados em tempo real: a gravação começa (ou para) imediatamente, sem que ninguém precise recarregar a página.
Desabilitar gravação
Desabilita a gravação da chamada — por exemplo, quando um participante revoga o consentimento. Os participantes conectados são notificados em tempo real e param de gravar imediatamente. Credenciais de upload já emitidas para trechos anteriores podem continuar válidas por algumas horas, então fragmentos em trânsito ainda podem ser concluídos — mas nenhuma gravação nova é iniciada.
Os arquivos já gravados até o momento não são apagados: eles seguem o ciclo normal de processamento e a política de retenção do projeto.
Requisição
Cabeçalhos:
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string (path) | Sim | ID da chamada |
Exemplos
curl -X DELETE "https://api.videochamada.com.br/api/calls/{id}/recordings" \
-H "Authorization: Bearer {API_TOKEN}"
import requests
response = requests.delete(
"https://api.videochamada.com.br/api/calls/{id}/recordings",
headers={"Authorization": "Bearer {API_TOKEN}"},
)
print(response.json()) # {"disabled": true}
const response = await fetch(
'https://api.videochamada.com.br/api/calls/{id}/recordings',
{
method: 'DELETE',
headers: { Authorization: 'Bearer {API_TOKEN}' },
},
);
const { disabled } = await response.json(); // true
Resposta
| Campo | Tipo | Descrição |
|---|---|---|
disabled |
boolean | true confirmando que a gravação foi desabilitada |
Operação idempotente
Desabilitar uma chamada que não está gravando também retorna {"disabled": true}. É seguro repetir a requisição.
Trate falhas repetindo a requisição
Se a notificação em tempo real aos participantes falhar momentaneamente, a requisição retorna erro — mas o estado de gravação desabilitada já fica persistido. Repita a requisição até receber {"disabled": true} para garantir que os participantes conectados também foram notificados a parar.
Erros
| Status | Mensagem | Quando |
|---|---|---|
| 404 | Call not found |
A chamada não existe |
| 403 | Call does not belong to this project |
A chamada pertence a outro projeto (API key incorreta) |
Boas práticas
- Fluxo de consentimento: crie a chamada com
"recording": false, colete o consentimento dos participantes (por exemplo, via sua própria interface) e chamePOST .../recordingsquando todos aceitarem. - Revogação imediata: ao receber uma revogação de consentimento, chame
DELETE .../recordingsimediatamente — os participantes param de gravar em tempo real. - Guarde o
idda gravação: oidretornado ao habilitar identifica a gravação da chamada e pode ser correlacionado com a listagem de gravações depois do término.