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:

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:

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.