Reuniões cifradas de ponta a ponta dentro do seu produto. Três passos: o seu backend cria a sala, o seu frontend insere o componente, e as chaves nascem no browser de cada participante.
A sua API key nunca vai ao browser. É usada só do seu backend para o nosso, no passo 1. Se aparecer no frontend, qualquer visitante pode criar salas na sua conta.
As chaves de cifra nascem no browser de cada participante, dentro do iframe, e são acordadas entre eles. Não passam pelo nosso servidor nem pelo seu — nem o site que embute a sala as vê.
Consequência prática, e é a que costuma surpreender: nós não conseguimos recuperar o conteúdo de uma reunião, nem a pedido do titular. Não é política, é o desenho.
Autenticação por API key PQSL, com direito de utilização do Meet activo (provisionado pelo seu revendedor).
curl -X POST https://posquantum.com/api/v1/meet/rooms \
-H "Authorization: Bearer $PQSL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Reunião com o cliente",
"accessMode": "approval",
"embedDomains": ["app.oseuproduto.com"]
}'Resposta (201):
{
"ok": true,
"room": {
"slug": "…",
"name": "Reunião com o cliente",
"accessMode": "approval",
"expiresAt": "…",
"embedDomains": ["app.oseuproduto.com"],
"url": "https://posquantum.com/pt/meet/…",
"embedUrl": "https://posquantum.com/pt/meet/…?embed=1&…"
}
}accessMode — open (qualquer pessoa com o link), approval (o anfitrião admite cada entrada) ou members. O valor por omissão é open.
embedDomains — a lista de domínios onde a sala pode ser embutida. O embedUrl passa a trazer essa lista assinada, e o servidor recusa a sala em qualquer outro domínio. Sem este campo a sala pode ser embutida em qualquer lado — é o comportamento de compatibilidade, e é o primeiro parâmetro a definir em produção.
expiresAt — as salas criadas por API expiram 24 h depois de criadas.
<script src="https://posquantum.com/sdk/meet-embed.js" async></script>
<posquantum-meet
embed-url="EMBED_URL_DEVOLVIDO_PELA_API"
width="100%"
height="640px"
></posquantum-meet>Atributos opcionais: width (por omissão 100%) e height (por omissão 640px). O componente pede permissões de câmara, microfone, partilha de ecrã e ecrã completo ao iframe.
O componente emite pqsl-safety-number para poder mostrar o código de verificação na sua própria interface, fora do iframe.
document.querySelector('posquantum-meet')
.addEventListener('pqsl-safety-number', (e) => {
// e.detail = { fingerprint, epoch }
mostrarCodigoDeVerificacao(e.detail.fingerprint)
})O fingerprint é informação pública — deriva da chave, não a revela. Serve para os participantes o compararem em voz alta: se bater, estão todos na mesma sala com a mesma chave. Nenhum material de chave sai do iframe.
401 — API key ausente ou inválida.
403 — a conta não tem direito de utilização do Meet activo.
402 / 429 — quota esgotada ou ritmo excedido. Cada sala criada conta para a quota da sua conta.
Trate o 429 com recuo progressivo. Não crie uma sala por cada carregamento de página: crie-a quando a reunião é agendada ou quando alguém carrega em «entrar».
O módulo embutível está em programa inicial, através de revendedor. O que está descrito acima funciona hoje.
Ainda não há SLA contratual publicado para o embed. Se o seu caso depende de um compromisso de disponibilidade por escrito, fale connosco antes de integrar — preferimos dizê-lo aqui do que numa renovação.
A ligação a sistemas de gestão de chaves empresariais (KMS/HSM externos) para as gravações está em curso e não faz parte desta API.