Skip to content

Abre uma conversa com outra pessoa (ou devolve a que já existe)

POST/api/chat/conversations

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.

Qualquer papel. Uma conversa por par de pessoas na comunidade: se já existe, volta 200 com `created: false` (mesmo que a outra pessoa tenha ficado indisponível). Conversa **nova** pede que quem abre possa iniciar (`whoCanStart`: 403 `teamOnly` / `paidOnly`), que a outra pessoa esteja disponível e que não haja bloqueio de nenhum lado; indisponível e bloqueio dão a mesma resposta (403, "não é possível enviar mensagens para esta pessoa"). No modo `CONNECTION`, conversa nova pede conexão aceita (403 com `errors[0].param = connection`), salvo quando a outra pessoa é da equipe. Um programa de Networking em comum vale como conexão (mentor e quem abre o espaço), menos para quem a equipe removeu do programa: com o mentor dele, 403 com `errors[0].param = connection` e o motivo "a equipe tirou você deste programa". A si mesmo: 400. Perfil de outra comunidade ou inexistente: 404. Conversa nova conta no limite de 10 por hora e 30 por dia (429, ver `ChatRateLimited`); abrir a que já existe nunca conta.

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
profileIdrequiredstring (uuid)O perfil da outra pessoa nesta comunidade.

Responses

StatusDescription
200A conversa que já existia.
201Conversa criada.
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" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"profileId":"00000000-0000-0000-0000-000000000000"}'