Atenda API
API REST para criar e gerenciar sessoes de video consulta seguras com tokens individuais.
https://api.atenda.dev/v1Todas as requisicoes usam HTTPS. Respostas em JSON.
Autenticacao
Todas as chamadas requerem um API key no header Authorization:
Authorization: Bearer sk_live_sua_api_key_aqui
Voce recebe suas keys no painel de controle. Use sk_test_* para sandbox e sk_live_* para producao.
Quickstart
Crie sua primeira sessao em 3 linhas:
const session = await fetch("https://api.atenda.dev/v1/rooms", { method: "POST", headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ participants: ["Dr. Silva", "Ana Costa"], maxParticipants: 2, tokenTtl: "2h", }), }).then(r => r.json()); // session.participants[0].joinUrl → link seguro do Dr. Silva // session.participants[1].joinUrl → link seguro da Ana Costa
curl -X POST https://api.atenda.dev/v1/rooms \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"participants": ["Dr. Silva", "Ana Costa"],
"maxParticipants": 2,
"tokenTtl": "2h"
}'
Criar sessao
Cria uma sala e gera tokens JWT individuais para cada participante.
Body parameters
| Parametro | Tipo | Descricao |
|---|---|---|
| participants required | string[] | Nomes dos participantes. Cada um recebe um token unico. |
| roomName optional | string | Nome da sala. Se omitido, gera automaticamente (ex: abc1-def2). |
| maxParticipants optional | number | Maximo de participantes na sala. Default: 2. Max: 20. |
| tokenTtl optional | string | Tempo de vida do token. Default: "2h". Min: "30m", Max: "8h". |
Response
{
"roomName": "abc1-def2",
"maxParticipants": 2,
"tokenTtl": "2h",
"participants": [
{
"name": "Dr. Silva",
"token": "eyJhbGciOiJIUzI1NiIs...",
"joinUrl": "https://app.atenda.dev/rooms/abc1-def2?token=eyJ..."
},
{
"name": "Ana Costa",
"token": "eyJhbGciOiJIUzI1NiIs...",
"joinUrl": "https://app.atenda.dev/rooms/abc1-def2?token=eyJ..."
}
]
}
Detalhes da sessao
Retorna informacoes da sala incluindo participantes conectados e status.
{
"roomName": "abc1-def2",
"status": "active",
"maxParticipants": 2,
"createdAt": "2026-02-18T14:30:00Z",
"participants": [
{ "name": "Dr. Silva", "status": "connected", "joinedAt": "2026-02-18T14:30:15Z" },
{ "name": "Ana Costa", "status": "connected", "joinedAt": "2026-02-18T14:31:02Z" }
]
}
Listar sessoes
Lista todas as salas ativas. Suporta filtros via query params.
| Parametro | Tipo | Descricao |
|---|---|---|
| status optional | string | active | finished | all. Default: active. |
| limit optional | number | Resultados por pagina. Default: 20. Max: 100. |
| offset optional | number | Offset para paginacao. Default: 0. |
Encerrar sessao
Encerra uma sala ativa imediatamente. Todos os participantes sao desconectados.
Server URL
Retorna a URL WebSocket publica para clientes que conectam via token pre-gerado.
{ "serverUrl": "wss://video.atenda.dev" }
Webhooks
Configure uma URL no painel para receber eventos em tempo real via POST.
{
"event": "room_finished",
"room": {
"name": "abc1-def2",
"duration": 2820,
"noShow": false,
"participants": 2
},
"timestamp": "2026-02-18T15:17:00Z"
}
Tipos de evento
| Evento | Descricao |
|---|---|
| room_started | Sala criada e pronta para conexoes. |
| participant_joined | Participante entrou na sala. |
| participant_left | Participante saiu da sala. |
| room_finished | Sala encerrada. Inclui flag noShow. |
| no_show_detected | Sessao encerrou sem a quantidade minima de participantes. |
Metricas Prometheus
Exponha metricas no formato Prometheus via GET /metrics:
# HELP atenda_sessions_total Total sessions created # TYPE atenda_sessions_total counter atenda_sessions_total 1842 # HELP atenda_active_rooms Current active rooms # TYPE atenda_active_rooms gauge atenda_active_rooms 23 # HELP atenda_noshow_rate No-show rate (0-1) # TYPE atenda_noshow_rate gauge atenda_noshow_rate 0.12 # HELP atenda_participant_minutes_total Total participant-minutes # TYPE atenda_participant_minutes_total counter atenda_participant_minutes_total 89412
Dashboard admin
O dashboard admin esta disponivel em /admin e oferece:
- Visao em tempo real de salas ativas e participantes
- Historico de sessoes com filtros (No-Show, API, UI)
- Paginacao e detalhes expandiveis por sessao
- Metricas agregadas: custo estimado, minutos totais, taxa de no-show