A aba Entrega de um espaço de trabalho de equipe no Speak-Y faz duas coisas quando uma gravação é compartilhada num canal: envia um e-mail para os endereços que você listar e envia uma requisição POST assinada para uma URL que você escolher. Os dois levam o mesmo pequeno conjunto de fatos — quem compartilhou, quanto dura a gravação, quando e de qual gravação se trata. Nenhum deles leva o resumo nem a transcrição.
Não é um recurso que ficou faltando. O conteúdo dos canais tem criptografia de
ponta a ponta, então o servidor que envia o e-mail e o webhook nunca viu o
texto. Este guia mostra como configurar os dois, o que exatamente chega à
caixa de entrada e ao seu endpoint, como verificar o cabeçalho
X-Speaky-Signature e quais canais são cobertos. Tudo aqui foi conferido no
app e no servidor em 9 de outubro de 2026.
Ela anuncia gravações novas a pessoas e sistemas que estão fora do feed do canal. Um colega compartilha uma reunião num canal; o servidor armazena a gravação criptografada e então avisa dois destinos, se estiverem configurados:
X-Speaky-Signature.As configurações pertencem a um espaço de trabalho, não à sua conta: cada espaço de trabalho tem os próprios destinatários e o próprio webhook. Só o proprietário do espaço de trabalho ou um administrador pode alterá-las. Os membros veem a aba só para leitura, com a nota «Only an owner or admin can change integrations.» (só um proprietário ou administrador pode alterar as integrações).

Você precisa do app para macOS e do papel de proprietário ou administrador no espaço de trabalho.
Cada bloco funciona sem o outro. Para alterar o webhook mais tarde, informe a URL e um segredo de novo — o segredo não vem preenchido, porque o servidor não o devolve.

Um aviso, não um resumo. O assunto é «Nova reunião no Speak-Y» (ou «Novo ditado no Speak-Y» quando o que foi compartilhado é um ditado), e o corpo tem três linhas e um botão:
| No e-mail | Exemplo |
|---|---|
| Autor | O nome do colega que compartilhou a gravação |
| Duração | 42 min |
| Quando | 09/10/2026 às 14:05 UTC |
| Botão | Abrir no Speak-Y — abre essa gravação no app para macOS |
Abaixo do botão, o e-mail diz isso com todas as letras: «As gravações são criptografadas de ponta a ponta, então esta notificação traz apenas metadados.» O nome do canal e o do espaço de trabalho também não estão no e-mail — eles também são criptografados, então o servidor não os conhece.
Vale conhecer dois detalhes antes de prometer esse e-mail à equipe:

Um POST por gravação nova, com Content-Type: application/json, o cabeçalho
X-Speaky-Event: team_record.created e este corpo:
{
"event": "team_record.created",
"workspace_id": "5b0e7c1e-2f4d-4a57-9d0a-6f1b2c3d4e5f",
"channel_id": "c1a2b3c4-d5e6-47f8-9a0b-1c2d3e4f5a6b",
"record_id": "8F2C1D7A-3B4E-4C5D-9E6F-0A1B2C3D4E5F",
"created_by": "0d9c8b7a-6e5f-4d3c-2b1a-0f9e8d7c6b5a",
"meta": { "duration_s": 2520, "kind": "meeting" },
"server_created_at": "2026-10-09T14:05:12+00:00",
"protocol_version": 2,
"sent_at": "2026-10-09T14:05:12.480113+00:00"
}
meta.kind é meeting ou dictation, e meta.duration_s é a duração em
segundos. Todo o resto é um identificador ou uma marcação de tempo. Não há
título, nem lista de participantes, nem resumo, nem nome de canal: o seu
endpoint fica sabendo que algo aconteceu e onde, não o que foi dito.
Isso basta para os usos de sempre — uma linha no chat da equipe, uma linha num
tracker, um contador de reuniões por canal. Mantenha a sua própria tabela que
relaciona channel_id a um nome legível. Note que o webhook de entrada de um
chat não consegue receber essa requisição diretamente: os webhooks de entrada
do Slack, por exemplo, esperam um corpo JSON com um campo text, então você
precisa de um pequeno intermediário que verifique a assinatura e reformate a
mensagem.
O cabeçalho X-Speaky-Signature tem a forma sha256=<hex>. O valor é o HMAC
SHA-256 do corpo bruto da requisição, tendo como chave o segredo que você
digitou na aba Entrega. Um receptor em Python:
import hashlib
import hmac
def is_from_speaky(secret: str, raw_body: bytes, header: str) -> bool:
digest = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(f"sha256={digest}", header)
Assine os bytes exatamente como chegaram. Se o seu framework interpreta o JSON e você o serializa de novo, a ordem das chaves e os espaços mudam, e a assinatura não vai bater.
Algumas características do remetente determinam como o receptor deve ser escrito:
record_id para ignorar uma requisição que você já processou e sent_at
para descartar as antigas.
O espaço de trabalho inteiro, com uma exceção. O cartão de alcance diz «Cada nova gravação em qualquer canal deste workspace dispara um envio», e não há filtro por canal. Num espaço de trabalho com canais de clientes movimentados, a reunião semanal não será a única coisa anunciada.
A exceção são os canais privados: uma gravação compartilhada num canal privado não é anunciada em lugar nenhum — nem por e-mail, nem por webhook. O cartão lista os canais que você consegue ver, inclusive os privados, com um cadeado, mas o servidor os ignora. O motivo é que a entrega é configurada por um proprietário ou administrador que pode não ser membro daquele canal privado; nem mesmo o fato de que algo foi gravado ali cabe a ele receber. Como dividir os canais entre públicos e privados está em quem vê o quê nos canais da equipe.
As gravações pessoais ficam fora de tudo isso. Nada sai da sua biblioteca até que você mesmo compartilhe uma gravação num canal.
Porque o servidor teria de lê-lo. No Speak-Y, a gravação é criptografada no Mac com uma chave do canal antes de ser enviada, e as chaves de canal existem apenas nos dispositivos dos membros — como funciona o compartilhamento em equipe com criptografia de ponta a ponta percorre o mecanismo. Um servidor capaz de colocar o resumo num e-mail seria um servidor capaz de ler todos os canais.
Ferramentas construídas do jeito oposto enviam conteúdo, sim, e esse é um motivo legítimo para escolhê-las quando um resumo na caixa de entrada importa mais do que a criptografia de ponta a ponta. Conferido em 9 de outubro de 2026:
meeting.transcribed leva um ID de reunião,
assinado com HMAC SHA-256 —, mas o conteúdo é buscado em seguida na API do
Fireflies, porque o provedor o armazena em formato legível.Se você precisa de uma cópia legível fora do app, faça-a de propósito, e não por notificação: ata da reunião semanal sem ninguém escrever mostra a exportação para o Confluence ou o Google Drive, e o servidor MCP do Speak-Y permite que um assistente de IA no Mac de um membro leia as gravações que esse membro já consegue abrir.
Os espaços de trabalho de equipe estão disponíveis no app do Speak-Y para macOS: criar um exige no mínimo o plano Pro, e os colegas entram de graça em qualquer plano. A página do Speak-Y Teams mostra como funcionam os canais compartilhados.
Não. O Email delivery envia um aviso de que uma nova reunião foi compartilhada num canal: o autor, a duração, o horário e um botão Abrir no Speak-Y. Os canais têm criptografia de ponta a ponta, então o servidor não tem resumo nem transcrição para colocar num e-mail. O texto é lido no app.
Um POST em JSON com o evento team_record.created e apenas identificadores: workspace_id, channel_id, record_id, created_by, o tipo de gravação e a duração em meta, e duas marcações de tempo. Ele não contém transcrição, nem resumo, nem o nome do canal ou do espaço de trabalho.
Calcule o HMAC SHA-256 do corpo bruto da requisição com o segredo do seu webhook, codifique o resultado em hexadecimal e coloque sha256= na frente. Compare com o cabeçalho X-Speaky-Signature usando uma comparação em tempo constante, e faça isso antes de interpretar o JSON.
Toda gravação nova compartilhada em qualquer canal público do espaço de trabalho. Não há filtro por canal. Canais privados nunca são anunciados, nem por e-mail nem por webhook, e gravações pessoais nunca saem da sua biblioteca.
O proprietário do espaço de trabalho ou um administrador, na aba Entrega da página do espaço de trabalho, no app para macOS. Os membros veem a mesma aba só para leitura.