Obter Status de uma Chamada
O endpoint GET /api/calls/{id}/status retorna o status detalhado de uma chamada, incluindo a lista de participantes ativos e os minutos faturáveis acumulados. É a fonte de verdade recomendada para conciliar o estado de uma chamada — webhooks avisam que algo mudou; este endpoint diz o estado atual.
Requisição
Cabeçalhos:
| Cabeçalho | Obrigatório | Descrição |
|---|---|---|
Authorization |
Sim | Bearer SUA_API_KEY |
Parâmetros de caminho:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string (UUID) | Sim | Identificador da chamada |
Exemplos
cURL
curl -X GET "https://api.videochamada.com.br/api/calls/9f3b2a1c-7d4e-4c8a-b5f6-2e1d0c9b8a7f/status" \
-H "Authorization: Bearer SUA_API_KEY"
Python (requests)
import requests
call_id = "9f3b2a1c-7d4e-4c8a-b5f6-2e1d0c9b8a7f"
response = requests.get(
f"https://api.videochamada.com.br/api/calls/{call_id}/status",
headers={"Authorization": "Bearer SUA_API_KEY"},
)
print(response.json())
Node.js (axios)
const axios = require('axios');
const callId = '9f3b2a1c-7d4e-4c8a-b5f6-2e1d0c9b8a7f';
const response = await axios.get(
`https://api.videochamada.com.br/api/calls/${callId}/status`,
{ headers: { Authorization: 'Bearer SUA_API_KEY' } },
);
console.log(response.data);
Resposta
Chamada em andamento:
{
"callId": "9f3b2a1c-7d4e-4c8a-b5f6-2e1d0c9b8a7f",
"status": "active",
"started": "2026-08-30T10:05:00.000Z",
"ended": null,
"durationMinutes": 0,
"activeParticipants": 2,
"participants": [
{
"sessionId": "d1e2f3a4-b5c6-4d7e-8f9a-0b1c2d3e4f5a",
"username": "João Silva",
"joinedAt": "2026-08-30T10:05:02.000Z",
"active": true
},
{
"sessionId": "a9b8c7d6-e5f4-4a3b-2c1d-0e9f8a7b6c5d",
"username": "Maria Santos",
"joinedAt": "2026-08-30T10:06:15.000Z",
"active": true
}
],
"totalBillableMinutes": "15.50"
}
Chamada encerrada:
{
"callId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"status": "ended",
"started": "2026-08-30T09:02:00.000Z",
"ended": "2026-08-30T09:45:00.000Z",
"durationMinutes": 43,
"activeParticipants": 0,
"participants": [],
"totalBillableMinutes": "86.00"
}
Campos:
| Campo | Descrição |
|---|---|
callId |
Identificador único da chamada |
status |
created (criada, ninguém entrou), active (em andamento) ou ended (encerrada) |
started |
Data e hora de início da chamada (quando o primeiro participante entrou) |
ended |
Data e hora de encerramento (null enquanto a chamada não termina) |
durationMinutes |
Duração da chamada em minutos, calculada entre o início e o fim. Enquanto a chamada está em andamento, o valor é 0 — a duração só é conhecida após o encerramento |
activeParticipants |
Número de participantes conectados neste momento |
participants |
Lista dos participantes ativos no momento |
participants[].sessionId |
ID único da sessão do participante |
participants[].username |
Nome do participante |
participants[].joinedAt |
Data e hora em que o participante entrou |
participants[].active |
Sempre true nesta lista (apenas ativos são retornados) |
totalBillableMinutes |
Total de minutos faturáveis acumulados, como string decimal (ex.: "15.50") |
Erros
| Status | Mensagem | Quando ocorre |
|---|---|---|
| 401 | Invalid API key |
Chave inválida ou revogada, ou IP fora da lista de IPs permitidos da chave |
| 401 | Call does not belong to this project |
A chamada existe, mas pertence a outro projeto |
| 404 | Call not found |
Não existe chamada com esse id |
Boas práticas
- Conciliação: use este endpoint como fonte de verdade para reconciliar o estado das chamadas no seu sistema. Webhooks são ideais para reagir a mudanças em tempo real, mas, em caso de dúvida ou divergência, o status retornado aqui é o que vale.
- Polling: se precisar consultar periodicamente, respeite intervalos de pelo menos 5 segundos entre requisições.
- Monitoramento: combine com
GET /api/calls/{id}/participantspara ver também o histórico de quem já saiu da chamada.