Documentação da API
Última atualização: 19 de maio de 2026
O RIA Meet expõe uma API REST simples pra você enviar bots de gravação a reuniões (Google Meet, Zoom, Microsoft Teams), receber transcrições com diarização por falante, e conectar calendários (Google ou Microsoft) pra gravação automática. Esta página é a referência completa pra integradores.
1. Autenticação
Toda chamada à API requer um header Authorization: Bearer rmk_... com uma API key gerada no painel.
Pra criar uma, faça login em meet.riasistemas.com.br/app, aba API & Integrações,
clique Gerar key e copie o valor mostrado (mostramos uma única vez — guardamos apenas o hash).
curl https://meet.riasistemas.com.br/api/usage \
-H "Authorization: Bearer rmk_SUA_KEY_AQUI"
Erro 401 Unauthorized indica key ausente, revogada ou inválida.
2. Quickstart — gravar uma reunião
Fluxo mínimo pra começar: dispatch do bot + receber a transcrição via webhook.
POST /api/meetings
Authorization: Bearer rmk_...
Content-Type: application/json
{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Meu App",
"language": "pt-BR",
"webhook_url": "https://meu-app.com/webhooks/ria-meet?ref=cliente_123"
}
Resposta:
{
"id": "mtg_abc...",
"bot_id": "bot_xyz...",
"status": "joining",
"platform": "google_meet",
"meeting_url": "https://meet.google.com/abc-defg-hij"
}
O bot vai entrar na reunião na hora (se já estiver acontecendo) ou aguardar até começar.
Quando terminar, enviamos um webhook pro webhook_url declarado, com o áudio,
vídeo (se o seu plano armazena) e a transcrição.
3. Endpoints — Meetings
POST /api/meetings
Dispatch de bot pra uma reunião.
Body:
meeting_url(string, obrigatório) — URL Meet, Zoom ou Teamsbot_name(string, opcional, default "RIA Meet") — nome mostrado na reuniãobot_image(URL, opcional) — avatar do botlanguage(string, default "pt-BR") — código ISO da língua principalwebhook_url(URL, opcional) — pra receber eventos. Pode conter query params arbitrários que serão devolvidos no payloadcontext_ref(string, opcional) — referência sua (case_id, contact_id) indexada pra buscametadata(object, opcional) — JSON arbitrário que volta nos webhooksaccount_id(string, opcional) — sub-account-id sob seu partner (uso B2B). Se omitir, a meeting fica sob seu próprio account.
GET /api/meetings/:id
Recupera uma reunião + transcrição (se já processada). Retorna 404 se o ID não pertence ao seu account (ou às sub-accounts do seu partner).
GET /api/meetings
Lista até 50 reuniões mais recentes do seu account. Query params: limit, offset, user_id, context_ref, status, since, until.
DELETE /api/meetings/:id
Apaga a reunião e suas mídias (áudio/vídeo em R2). Se o bot ainda estiver gravando, ele é desligado.
POST /api/meetings/:id/speakers
Mapeia speaker labels (Speaker 0, Speaker 1...) pros nomes reais. Útil quando você sabe quem participou.
{
"speakers": [
{ "speaker_label": "Speaker 0", "name": "Ana" },
{ "speaker_label": "Speaker 1", "name": "João" }
]
}
4. Webhooks — eventos do RIA Meet
Quando você passa webhook_url em POST /api/meetings, mandamos POSTs JSON pra esse endpoint
conforme o bot avança. Eventos principais:
bot.joined— bot entrou na reuniãorecording.started— gravação começourecording.completed— bot saiu, mídia disponíveltranscription.completed— transcrição pronta (comspeakerseutterances)transcription.failed— falha na transcrição (com motivo)
Payload exemplo (transcription.completed):
{
"event": "transcription.completed",
"meeting_id": "mtg_...",
"context_ref": "cliente_123",
"metadata": { /* o que você enviou na criação */ },
"duration_seconds": 1842,
"participants_count": 3,
"transcript": {
"text": "...",
"utterances": [
{ "speaker": "Speaker 0", "start": 0.0, "end": 4.3, "text": "Bom dia, ..." },
{ "speaker": "Speaker 1", "start": 4.5, "end": 8.1, "text": "Bom dia, prazer..." }
]
},
"recording_url": "https://meet.riasistemas.com.br/api/recordings/mtg_.../audio",
"video_url": "https://meet.riasistemas.com.br/api/recordings/mtg_.../video"
}
Os URLs de mídia exigem o seu Bearer key pra serem baixados. Não compartilhe sem proxy. Recomendamos baixar e re-publicar no seu storage pra usuários finais.
Assinatura HMAC (opcional)
Pra contas que configuraram webhook_secret, enviamos o header X-RIA-Meet-Signature
contendo sha256=<hmac-sha256(body, secret)>. Valide antes de confiar no payload.
5. Integração com Calendar (auto-record)
Pra que o bot entre sozinho em toda reunião na agenda de um usuário, conecte o calendário dele via OAuth. Suportamos Google Calendar e Microsoft Outlook (multi-tenant — work/school + Outlook pessoal).
Google Calendar
GET /api/calendar/connect?bot_name=Meu+App&webhook_url=https%3A%2F%2Fmeu-app.com%2Fhook&return_url=https%3A%2F%2Fmeu-app.com%2Fdone
Authorization: Bearer rmk_...
Resposta: { "url": "https://accounts.google.com/o/oauth2/v2/auth?..." }.
Redirecione o usuário pra esse URL. Após autorizar, ele volta pro return_url
com ?calendar_connected=true&email=...&connection_id=cal_....
Microsoft Outlook (Teams)
Mesmo padrão, endpoint diferente:
GET /api/microsoft/connect?bot_name=Meu+App&webhook_url=...&return_url=...
Authorization: Bearer rmk_...
Callback retorna ?calendar_connected=true&provider=microsoft&email=...&connection_id=cal_....
Provisioning B2B (sub-accounts)
Se você é um partner (ex: SaaS que oferece RIA Meet pros seus próprios clientes), use
POST /api/accounts com with_calendar_connect_url=true pra
criar uma sub-account e receber as duas URLs OAuth (Google + Microsoft) já prontas pra enviar pro líder:
POST /api/accounts
{
"name": "Maria Líder",
"phone": "5511999998888",
"plan": "plan_essencial",
"with_calendar_connect_url": true,
"bot_name": "Meu App",
"webhook_url": "https://meu-app.com/hook?leader_id=lea_xyz",
"return_url": "https://meu-app.com/connected?leader_id=lea_xyz"
}
→ {
"id": "acc_...",
"user_id": "usr_...",
"connect_calendar_url": "https://accounts.google.com/...",
"connect_microsoft_url": "https://login.microsoftonline.com/..."
}
Criar evento no calendar com link de reunião
Pra integrar agendamento, use POST /api/calendar/:connection_id/events.
O endpoint roteia automaticamente: se a connection é Google, cria evento com Meet link;
se é Microsoft, cria evento Outlook com link Teams (provider teamsForBusiness).
POST /api/calendar/cal_abc.../events
{
"summary": "1:1 com Lucas",
"description": "Pauta: revisão sprint",
"start": "2026-05-20T14:00:00",
"end": "2026-05-20T14:30:00",
"attendees": ["lucas@empresa.com"],
"timezone": "America/Sao_Paulo"
}
→ {
"event_id": "...",
"html_link": "https://calendar.google.com/event?eid=...",
"meet_url": "https://meet.google.com/abc-defg-hij",
"provider": "google"
}
6. Usage e billing
GET /api/usage retorna minutos gravados no mês corrente e seu limite do plano.
GET /api/account retorna detalhes do seu account + features habilitadas
(save_audio, save_video, platforms).
GET /api/plans lista planos disponíveis.
7. Erros e rate limits
Códigos HTTP padrão. 401 = key inválida, 403 = key sem permissão pro recurso (cross-account),
404 = recurso não existe ou não é seu, 429 = rate limited (raro, mas existe), 502+ =
erro a montante (MeetingBaaS, Google, Microsoft). Sempre faça retry com backoff exponencial pra 5xx.
8. Suporte
Dúvidas, bugs, sugestões: suporte@riasistemas.com.br. Pra integradores B2B em volume, fale com comercial@riasistemas.com.br sobre plano API Enterprise e SLA.
Esta documentação é mantida em sincronia com o código produtivo. Para mudanças que afetem o contrato (breaking), avisamos integradores ativos com 30 dias de antecedência.