Skip to main content

What it is

The WhatsApp Messages API sends template, text, image, video, audio, document, sticker, location, interactive, contact, and reaction messages from a connected WhatsApp business phone number.

Before you begin

  • Store your YCloud API key in YCLOUD_API_KEY.
  • Connect a WhatsApp Business Account and phone number to YCloud.
  • Collect the sender phone number in E.164 format and either the recipient phone number, BSUID, or parent BSUID.
  • Use an APPROVED template for ordinary template sends.
  • Upload media first when the message references a YCloud media ID.

How it works

Choose the endpoint based on when YCloud should submit the message to the WhatsApp Business API. Both endpoints return a YCloud message object. The initial response does not confirm final delivery. Later status changes arrive through whatsapp.message.updated Webhooks.

Direct Send for utility content

Direct Send can submit eligible utility content or convert an existing utility template. It works with either sending endpoint. The sendDirectly endpoint controls synchronous submission; it does not enable Direct Send by itself. Follow Direct Send best practices for eligibility, requests, template conversion, limits, and account events.

Choose the best send time

Match the send time to the message purpose and the recipient’s local time.
  • Send OTPs and other time-sensitive messages immediately. Use POST /whatsapp/messages/sendDirectly when your workflow needs the submission result before continuing.
  • Send transactional updates when the related event occurs, such as a payment, shipment, or appointment change.
  • Schedule marketing messages for reasonable hours in the recipient’s time zone. Use your own delivery, read, and conversion data to test different time slots for each audience instead of assuming one universal best hour.
  • Start a scheduled campaign with a small recipient group. Check delivery, response, and opt-out results before sending to the rest of the audience.
  • Avoid repeated sends when a message is delayed. Store externalId and process whatsapp.message.updated Webhooks before deciding whether to retry.

Request

Choose either endpoint above, then use the request body that matches the message type. The from value is your connected WhatsApp business phone number. Address the recipient with to in E.164 format or with recipient set to a BSUID or parent BSUID.

Common request fields

filterUnsubscribed and filterBlocked apply only to POST /whatsapp/messages; they do not apply to sendDirectly. A filtered queued message fails with RECIPIENT_UNSUBSCRIBED or RECIPIENT_IN_BLOCK_LIST in its status webhook. For synchronous sends, enforce consent, unsubscribe, and block checks in your application.
Provide at least one of to or recipient. If you include both, YCloud uses to and ignores recipient.
One-tap, zero-tap, and copy-code authentication templates require a phone number. Use to for these template types.

Request examples

Response

A successful response returns the YCloud message object. An initial status: accepted means YCloud accepted the send request. It does not mean the message has been sent by Meta or delivered to the WhatsApp user.

Example response

Response fields

Delivery status

Subscribe to whatsapp.message.updated Webhooks to receive later status changes such as sent, failed, delivered, or read. Use GET /whatsapp/messages/{id} when you need to retrieve a message directly.
For media messages, upload the file first with POST /whatsapp/media/{phoneNumber}/upload, then use the returned media ID in the message payload.

Limits and troubleshooting

  • Ordinary template sends require an APPROVED template; ARCHIVED templates cannot be sent as ordinary template messages.
  • Do not retry an accepted request without an idempotency strategy. A repeated request can send a duplicate message.
  • Use the YCloud id, wamid, externalId, and Webhook status when investigating delivery.
  • Inspect whatsappApiError when a direct request reaches Meta and Meta rejects it.
For throughput limits, see Rate limits.

Direct Send best practices

Send utility content, convert templates, and monitor category and restriction events.

Production best practices

Design status synchronization, bounded retries, consent checks, media reuse, and throughput controls for a production integration.

Use business-scoped user IDs

Send messages and calls by BSUID, request phone numbers, manage Meta contact book entries, and process BSUID webhook fields.

Complete integration examples

For the full template-creation and variable-binding workflow, see Template creation examples and Messaging examples. Use WhatsApp error handling to distinguish request rejection from later delivery failures, and Webhook receiver implementation to verify signatures and accept status updates durably.