Skip to main content

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 or TokenInstanceRate-limit: Global (100/min) • Idempotent: no The /api/message/* module covers sending every format supported by WhatsApp, text, media, sticker, location, contact, reaction, poll, carousel, buttons, list, form, PIX and status (stories). All routes validate instance ownership and accept either TokenAccount or TokenInstance.
To fetch a message by ID use GET /api/chat/getMessage/:instance; that endpoint no longer belongs to the messages module.

Available endpoints

MethodPathType
POST/api/message/text/:instanceText
POST/api/message/media/:instanceImage / video / audio / document
POST/api/message/sticker/:instanceSticker (WebP)
POST/api/message/location/:instanceLocation
POST/api/message/contact/:instanceContact (vCard)
POST/api/message/reaction/:instanceReaction (emoji)
POST/api/message/poll/:instancePoll
POST/api/message/carousel/:instanceCard carousel
POST/api/message/button/:instanceInteractive buttons
POST/api/message/list/:instanceList (sections)
POST/api/message/form/:instanceForm (Native Flow)
POST/api/message/pix/:instancePIX (BR payment)
POST/api/message/status/:instanceStatus (stories)

Common structure

Recipient (number or to)

Most endpoints accept the recipient in the number field. Supported formats:
  • Plain number: "5511999999999" (preferred).
  • Private JID: "5511999999999@s.whatsapp.net".
  • Hidden JID (@lid): "123456789012345@lid", anonymous identifier WhatsApp uses in groups/channels when the real number is not exposed.
  • Group JID: "120363406289005073@g.us".
  • Newsletter JID: "120363422585881117@newsletter".
  • Status broadcast: "status@broadcast".

Brazilian number behavior

For numbers starting with 55 (Brazil), the service automatically tries variations:
  • With 9 (5511999999999)
  • Without 9 (551199999999)
This works around a long-standing inconsistency in older area codes. If the number is not found in any of the variations, the handler returns 400 Number is not registered on WhatsApp.

Common optional fields

FieldTypeApplies toDescription
delayint (seconds)almost allWait time before sending. During the interval the server sends “typing…” and then “paused”.
replyTostringalmost allID of the original message to quote. The message must belong to the same instance and exist in the database.
replyPrivateboolalmost allWhen the quoted message is from a group, redirects the reply to the author’s private chat (keeping the quote).
mentionstring[]text / mediaNumbers (or JIDs) to mention. Group chats only. Limit of 10 per message.
mentionAllbooltext / mediaMentions every member of the group (@everyone). Group chats only.
linkPreviewbooltextWhen true, fetches Open Graph metadata from the first URL and sends as ExtendedTextMessage with a card. Default false.
sourcestringallOrigin identifier for traceability (e.g., crm, n8n). Default: "api".
delay is in seconds (not milliseconds). A value of 3 = 3 s of “typing”.
Reactions (/api/message/reaction/:instance) do not support delay/replyTo/mention, the payload is minimal (messageId, reaction, participant). Status (/api/message/status/:instance) also does not use number/replyTo (it always goes to status@broadcast).

Standard response (200)

All send endpoints return the same MessageSentDetails envelope:
{
  "success": true,
  "message": "Message sent successfully",
  "status":  "sent",
  "data": {
    "messageId":   "3EB08FCF27E532F1B0F5",
    "direction":   "outgoing",
    "messageType": "text",
    "content":     "Ola!",
    "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"
    }
  }
}
Optional fields in data: mentions (when there is a mention), replyTo (when there is a quote), chat.groupName (when it is a group), mediaUrl/mediaMimeType/mediaSize/fileName (when it is media), vcard (when it is a contact). statussent | disconnected | invalid_number | mentions_not_supported | reply_message_not_found | reply_message_instance_mismatch | private_reply_failed | send_failed | media_download_failed | media_upload_failed | media_validation_failed | unsupported_media_type | image_conversion_failed | sticker_upload_failed | audio_conversion_failed | invalid_message_id | missing_participant | invalid_request.

Common errors

StatusMessage
400Instance name is required
400Invalid request body: <detail>
400Number is required
400Message is required (and per-endpoint variants: MediaURL is required, Question is required, etc.)
400Mentions are only supported in group chats
400Original message not found (ID: ...)
400Original message does not belong to this instance
404Instance not found
503Instance is not connected to WhatsApp
500Failed to send message: <reason>
Error envelope:
{
  "success": false,
  "error": { "message": "Number is not registered on WhatsApp" }
}

Observed limits

ResourceLimit
Text~65k characters (messages > 4096 may be truncated by some clients)
Image / video / audioup to 16 MB
Documentup to 100 MB
Buttonsmax 3 per message
Listmax 10 sections × 10 rows
Carouselmax 10 cards
Poll2 to 12 options

Next steps

Send text

The most-used endpoint, ideal as a “Hello World”.

Send media

Image, video, audio and document by URL or base64.

Fetch message by ID

Retrieves a specific message from the history.

Webhooks

Receive message.exchange events in real time.