Pular para conteúdo

Listar Participantes de uma Chamada

O endpoint /api/calls/{id}/participants permite listar todos os participantes atualmente ativos em uma chamada utilizando seu Token de API.

Requisição

Lista os participantes que estão atualmente conectados na chamada.

Cabeçalhos:

{
  "Authorization": "Bearer {API_TOKEN}"
}

Exemplos de Implementação

curl -X GET "https://api.videochamada.com.br/api/calls/{id}/participants" \
  -H "Authorization: Bearer {API_TOKEN}"
import requests

response = requests.get(
    "https://api.videochamada.com.br/api/calls/{id}/participants",
    headers={"Authorization": "Bearer {API_TOKEN}"}
)
print(response.json())
const response = await fetch('https://api.videochamada.com.br/api/calls/{id}/participants', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer {API_TOKEN}'
  }
});

const data = await response.json();
console.log(data);
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer {API_TOKEN}");
var response = await client.GetAsync("https://api.videochamada.com.br/api/calls/{id}/participants");
var content = await response.Content.ReadAsStringAsync();

Console.WriteLine(content);

Resposta

Exemplo de Resposta:

[
  {
    "sessionId": "session_abc123",
    "username": "João Silva",
    "firstSeen": "2025-10-16T10:05:02Z",
    "lastSeen": "2025-10-16T10:20:15Z",
    "joinedAt": "2025-10-16T10:05:02Z",
    "leftAt": null,
    "active": true,
    "events": [
      {
        "type": "participant_joined",
        "timestamp": "2025-10-16T10:05:02Z"
      }
    ]
  },
  {
    "sessionId": "session_def456",
    "username": "Maria Santos",
    "firstSeen": "2025-10-16T10:06:15Z",
    "lastSeen": "2025-10-16T10:15:30Z",
    "joinedAt": "2025-10-16T10:06:15Z",
    "leftAt": "2025-10-16T10:15:30Z",
    "active": false,
    "events": [
      {
        "type": "participant_joined",
        "timestamp": "2025-10-16T10:06:15Z"
      },
      {
        "type": "participant_left",
        "timestamp": "2025-10-16T10:15:30Z"
      }
    ]
  }
]
[]

Explicação dos Campos:

A resposta é um array direto de participantes (não um objeto com data e count).

Objeto de Participante:

  • sessionId: ID único da sessão WebRTC do participante
  • username: Nome do participante informado ao entrar na chamada
  • firstSeen: Data e hora da primeira vez que o participante foi visto na chamada
  • lastSeen: Data e hora da última atividade registrada do participante
  • joinedAt: Data e hora em que o participante entrou na chamada
  • leftAt: Data e hora em que o participante saiu (null se ainda ativo)
  • active: Indica se o participante está atualmente ativo na chamada
  • events: Array com histórico de eventos deste participante
  • type: Tipo do evento (participant_joined, participant_left, disconnected, etc.)
  • timestamp: Data e hora do evento

Boas Práticas

  • Participantes Ativos e Inativos: Esta listagem retorna todos os participantes da chamada, tanto ativos quanto inativos. Use o campo active para filtrar apenas os ativos.
  • Histórico de Eventos: Cada participante inclui um array events com seu histórico de atividades na chamada.
  • Histórico Completo: Para ver eventos de toda a chamada de forma unificada, use o endpoint de eventos.
  • Polling Moderado: Se necessário fazer polling, respeite intervalos de pelo menos 5 segundos entre requisições.

Casos de Uso

  • Lista de Presença: Exibir quem está atualmente na chamada
  • Controle de Acesso: Verificar se determinado participante está conectado
  • Monitoramento: Acompanhar número de participantes em tempo real
  • Moderação: Identificar participantes para ações de moderação
  • Analytics: Coletar dados sobre participação simultânea

Diferença entre Participantes e Eventos

Endpoint Propósito Dados Retornados
/api/calls/{id}/participants Lista todos participantes com seu histórico individual Participantes ativos e inativos, com eventos de cada um
/api/calls/{id}/events Histórico unificado de toda a chamada Todos os eventos em ordem cronológica

Info

Dica: Use /participants para visão por participante (quem participou, quando entrou/saiu, eventos individuais). Use /events para timeline completa da chamada.