POST /api/v2/ticket/custom cria o ticket e devolve o id (no topo da resposta, sem envelope).id em ticket_id, junto do identificador da chamada e da URL da gravação.| Ponto | Regra |
|---|---|
| Validade da URL | Precisa continuar acessível por ~20 minutos. A primeira tentativa ocorre ~15s após o 202, e em caso de falha há mais 19 tentativas de minuto em minuto |
| Query string | Suportada, desde que a extensão venha antes da ?. .../call.mp3?sig=abc funciona; .../download?file=call não |
| Reenvio | Seguro com o mesmo call_id: não gera áudio duplicado. Enquanto o download está pendente, o reenvio devolve 202 mas não troca a URL do job em curso; depois de falha definitiva, reprocessa com a URL nova |
| Identidade da chamada | O call_id é a identidade da ligação no tenant. Reaproveitar um call_id já usado em outro ticket devolve 422 — proteção contra anexar áudio no atendimento errado |
| Ligação sem gravação | recording_url é obrigatória. Para registrar ligação sem áudio, use uma nota no ticket (POST /api/v2/ticket/message com is_note: true) |
| Rede interna | URLs apontando para endereço privado, loopback ou link-local são recusadas |
| Tamanho | Teto de 100 MB (~1h45 de wav 8 kHz mono). Acima disso o download é abortado e o áudio não entra no ticket — o 202 já terá sido devolvido |
curl --location '/api/v3/telephony/recording' \
--header 'api-key: {{api-key}}' \
--header 'Content-Type: application/json' \
--data '{
"call_id": "1772743063.6136820",
"ticket_id": "84cefe00-761e-467c-9f77-fbb05ecb7af9",
"recording_url": "https://gravacoes.parceiro.com.br/2026/09/22/call-1772743063.mp3?X-Amz-Signature=abc",
"phone": "5511988884444",
"dial_status": "ANSWER",
"ramal": "5056"
}'{
"ok": true,
"message": "Gravação aceita. O áudio aparecerá no ticket em alguns minutos.",
"call_id": "1772743063.6136820",
"ticket_id": "84cefe00-761e-467c-9f77-fbb05ecb7af9"
}