Pular para o conteúdo principal
POST
/
api
/
message
/
text
/
:instance
Enviar Texto
curl --request POST \
  --url https://api.example.com/api/message/text/:instance \
  --header 'Content-Type: <content-type>' \
  --header 'token: <token>' \
  --data '
{
  "number": "<string>",
  "message": "<string>",
  "delay": 123,
  "linkPreview": true,
  "replyTo": "<string>",
  "replyPrivate": true,
  "mention": [
    "<string>"
  ],
  "mentionAll": true,
  "source": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt

Use this file to discover all available pages before exploring further.

Auth: TokenAccount ou TokenInstanceRate-limit: Global (100/min) • Idempotente: não

Descrição

Envia uma mensagem de texto a um contato 1-a-1, grupo (@g.us) ou canal (@newsletter). Suporta replyTo (citação por ID), replyPrivate (responder no privado a partir de uma mensagem de grupo), mention / mentionAll (apenas em grupos), linkPreview e delay (em segundos) para simular digitação real. É o endpoint mais usado e serve como “Hello World” para validar que a instância está conectada.

Exemplos

Mínimo

Envia uma mensagem de texto com o payload mínimo (number + message). Sem delay, sem preview, sem citação, útil como “Hello World” para validar que a instância está conectada.
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":  "5511999999999",
    "message": "Olá! Este é um teste do RyzeAPI."
  }'
Envia indicador de “digitando…” por 3 segundos e depois envia a mensagem com prévia da URL detectada.
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":      "5511999999999",
    "message":     "Confere aí: https://ryzeapi.cloud",
    "delay":       3,
    "linkPreview": true
  }'

Como resposta

Cita uma mensagem existente (replyTo recebe o messageId da mensagem original). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco (qualquer mensagem trafegada via webhook/envio é salva automaticamente).
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":  "5511999999999",
    "message": "Sim, confirmado!",
    "replyTo": "3EB08FCF27E532F1B0F5"
  }'

Como resposta no privado (grupo)

Quando alguém manda uma mensagem em um grupo e você quer responder no privado dessa pessoa (sem retornar a resposta para o grupo), use replyPrivate: true. O number deve apontar para o JID do grupo onde a mensagem original foi enviada, o servidor extrai o autor original e redireciona a resposta para o privado dele, mantendo a citação.
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":       "120363406289005073@g.us",
    "message":      "Te respondendo no privado para não poluir o grupo.",
    "replyTo":      "3EB08FCF27E532F1B0F5",
    "replyPrivate": true
  }'

Com menção a membro(s) (grupo)

Adiciona menção visível com @5511... no corpo da mensagem e lista os números no array mention. O texto e o array precisam estar consistentes, o WhatsApp só transforma em link clicável o que estiver no mention.
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":  "120363406289005073@g.us",
    "message": "Atenção @5511888888888 e @5511777777777, reunião às 14h.",
    "mention": ["5511888888888", "5511777777777"]
  }'

Menção oculta (grupo)

Faz ping em todos os membros do grupo sem precisar listar @s no texto, usando mentionAll: true. O texto exibido fica limpo, mas os participantes recebem a notificação de menção. Útil para anúncios silenciosos. Para mencionar pessoas específicas de forma oculta, basta usar mention: ["..."] sem colocar @número no texto, eles também recebem a notificação sem aparecer marcados.
curl -X POST "https://ryzeapi.cloud/api/message/text/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":     "120363406289005073@g.us",
    "message":    "Aviso geral: reunião confirmada para amanhã às 14h.",
    "mentionAll": true
  }'

Resposta de sucesso

A resposta inclui o messageId (use-o em replyTo para citar essa mensagem em envios futuros), o direction: "outgoing" e a marcação de chat/sender. Os campos mentions e replyTo só aparecem quando aplicáveis, e chat.groupName é incluído em mensagens de grupo.
200 OK
{
  "success": true,
  "message": "Message sent successfully",
  "status":  "sent",
  "data": {
    "messageId":   "3EB08FCF27E532F1B0F5",
    "direction":   "outgoing",
    "messageType": "text",
    "content":     "Olá! Este é um teste do RyzeAPI.",
    "source":      "api",
    "timestamp":   "2026-04-30T14:30:00Z",
    "chat": {
      "jid":     "5511999999999@s.whatsapp.net",
      "isGroup": false
    },
    "sender": {
      "jid":      "5511777777777@s.whatsapp.net",
      "instance": "minha-instancia"
    },
    "mentions": {
      "mentionedUsers": ["5511888888888"],
      "mentionAll":     false,
      "totalMentions":  1
    },
    "replyTo": {
      "messageId": "3EB08FCF27E532F1A1A1",
      "content":   "Tudo certo para amanhã?"
    }
  }
}

Parâmetros de rota

instance
string
obrigatório
Nome da instância (ex.: $Instance_Name).

Headers

token
string
obrigatório
TokenAccount ou TokenInstance.
Content-Type
string
obrigatório
application/json

Request body

number
string
obrigatório
Destino: telefone (5511999999999) ou JID (@s.whatsapp.net, @lid, @g.us, @newsletter).
message
string
obrigatório
Corpo do texto. Não pode estar vazio.
delay
int
padrão:"0"
Tempo em segundos para aguardar antes de enviar. Durante o intervalo, o servidor envia o indicador de “digitando…” ao destinatário e dispara o “paused” antes do envio real.
Quando true, o servidor extrai a primeira URL do message, busca os metadados Open Graph (título, descrição, thumbnail) e envia a mensagem como ExtendedTextMessage com o card de preview embutido. Quando false ou omitido, a URL aparece como texto simples.
replyTo
string
ID da mensagem a ser citada (reply). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco. Erros possíveis: reply_message_not_found, reply_message_instance_mismatch.
replyPrivate
boolean
padrão:"false"
Quando true e replyTo aponta para uma mensagem originária de um grupo, a resposta é redirecionada para o privado do autor original (mantendo a citação). Útil para responder dúvidas individualmente sem poluir o grupo. Ignorado se a mensagem original não for de grupo.
mention
string[]
Lista de números (ou JIDs) a mencionar. Apenas em grupos (@g.us). Limite de 10 menções por mensagem, números excedentes são ignorados com warning. Para que apareçam como link clicável, inclua @5511... no message. Sem isso, viram menções ocultas (apenas notificam).
mentionAll
boolean
padrão:"false"
Quando true, menciona todos os membros do grupo (exceto a própria instância). Equivale ao @todos/@everyone. O servidor consulta a lista de participantes e injeta cada JID no MentionedJID do contexto, sem alterar o texto exibido. Apenas em grupos.
source
string
padrão:"api"
Identificador de origem para rastreabilidade (ex.: crm, bot-suporte, n8n). Salvo no registro da mensagem no banco e propagado para webhooks. Quando omitido, assume "api".

Notas

  • delay é em segundos (diferente de muitas APIs que usam ms). Valor 3 = 3 segundos de “digitando”.
  • Em grupos, o texto com @5511... por si só não vira clickable, é o array mention que o WhatsApp processa. Mantenha os dois consistentes.
  • mention e mentionAll são exclusivos a grupos. Se enviados para DM/canal, retorna 400 Mentions are only supported in group chats.
  • Para números BR (começando com 55), o serviço tenta automaticamente variações com e sem o 9º dígito, evitando o histórico de inconsistências em DDDs antigos.
  • linkPreview requer que o servidor consiga buscar os metadados Open Graph da URL, sites com bloqueio de bots podem cair no fallback de texto simples sem erro visível.
  • Mensagens enviadas via replyPrivate: true aparecem no privado do destinatário com o card da mensagem citada do grupo, ele consegue ver de qual conversa veio.

Erros

HTTPStatus internoMensagem
400Instance name is required
400Invalid request body: <detalhe>
400Number is required
400Message is required
400invalid_numberInvalid phone number format: <detalhe>
400mentions_not_supportedMentions are only supported in group chats
400reply_message_not_foundOriginal message not found (ID: ...)
400reply_message_instance_mismatchOriginal message does not belong to this instance
400private_reply_failed(motivo do erro de redirecionamento privado)
404Instance not found
500send_failedFailed to send message: <reason>
503disconnectedInstance is not connected to WhatsApp
Envelope de erro:
{
  "success": false,
  "error": { "message": "Message is required" }
}