Skip to content

Envia uma mensagem

POST/api/chat/conversations/{id}/messages

Auth
Requires a token
API key:
No API key accepted
X-CommunityId
X-CommunityId Send the X-CommunityId of the community the operation happens in.
Endpoint descriptions come straight from the API specification and are in Portuguese for now. The interface around them is translated.

Só as duas pessoas da conversa (404 para qualquer outra). Texto de 1 a 4.000 caracteres (400 acima). Até 30 mensagens por minuto e o mesmo texto para no máximo 5 pessoas diferentes por hora (429, ver `ChatRateLimited`). Bloqueio de qualquer lado, ou a outra pessoa fora da comunidade: 403 "não é possível enviar mensagens para esta pessoa", sem dizer por quê. No modo `CONNECTION`, conversa sem conexão nem programa de Networking em comum é só leitura (`needsConnection`): 403 com `errors[0].param = connection`. Quem a equipe removeu de um programa não manda mais mensagem aos mentores dele (403, motivo "a equipe tirou você deste programa"), e o mentor também não responde; o histórico continua visível para os dois. A mensagem é gravada antes de ir pelo socket (`message.new` para as duas pessoas). Quem recebe e está **disponível** ganha, se não ler em 10 min e não estiver com a comunidade aberta, um e-mail **sem o texto** (categoria `chat`, no máximo um por conversa a cada 6 h). Quem está indisponível recebe a mensagem sem aviso nenhum (`silent: true` no evento). O texto nunca vai para log, Sentry, analytics ou e-mail.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)

Headers

NameTypeDescription
X-CommunityIdoptionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Request body application/json

NameTypeDescription
bodyrequiredstringmin 1, max 4000

Responses

StatusDescription
201Mensagem enviada.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
429Limite anti-spam do chat (por pessoa, por comunidade, valendo para o app e o MCP). `errors[0].code` diz qual: `limitConnectionsDaily` (20 pedidos de conexão/dia), `limitConnectionsWeekly` (100/semana), `limitPendingRequests` (200 pedidos esperando resposta ao mesmo tempo; libera cancelando, sem `retryAt`), `limitNewConversationsHourly` (10 conversas novas/hora), `limitNewConversationsDaily` (30/dia), `limitMessagesPerMinute` (30 mensagens/minuto) e `limitDuplicateMessage` (o mesmo texto para no máximo 5 pessoas diferentes por hora). Quem entrou na comunidade há menos de 24 h tem metade dos limites de pedidos de conexão e de conversas novas; a equipe (owner, admin, moderador, financeiro) tem o dobro de todos. Conversa que já existe nunca conta como nova. As janelas são móveis: `errors[0].retryAt` (e o header `Retry-After`, em segundos) dizem quando a próxima vaga abre, e a mensagem diz a hora no fuso da comunidade. `errors[0].limit` é o limite que vale para quem pediu.
500Erro interno do servidor.

curl example

curl -X POST "https://api.memberfy.net/api/chat/conversations/<id>/messages" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"body":"string"}'