What it is
The YCloud WhatsApp Groups API lets your business create invitation-only WhatsApp groups. You send an invite link to each person, and that person chooses whether to join. If the group requires approval, you can review the person’s join request before allowing them into the group. This guide covers group setup, management, and outbound group messages. Group conversations do not appear in Inbox.Before you begin
Before you integrate, make sure your WhatsApp business phone number meets these requirements:- The business has an Official Business Account (OBA).
- The phone number uses the WhatsApp Cloud API, not the WhatsApp Business App.
- The phone number does not use Multi-solution Conversations.
- Your YCloud account has access to the phone number.
- You have a public HTTPS URL where YCloud can send webhook events.
- Before sending invite links through a template message, you have an approved group invite template.
YCloud and WhatsApp check whether the phone number is eligible. If it is not,
verify its OBA status, Cloud API setup, and access in YCloud.
Supported capabilities and limits
YCloud currently supports:- Creating, listing, retrieving, and deleting groups.
- Retrieving and resetting invite links.
- Sending an approved invite-link template to an individual WhatsApp user.
- Listing, approving, and rejecting join requests.
- Removing participants.
- Updating the group subject and description.
- Updating the group profile picture with a JPEG file.
- Sending text, media, sticker, and supported template messages to a group.
- Receiving group lifecycle, participant, settings, and suspension webhooks.
- A group can have up to 8 participants.
- A business phone number can create up to 10,000 groups.
- A group can contain only one Cloud API business phone number.
- A single YCloud request can remove up to 8 participants.
- A group subject can contain up to 128 characters.
- A group description can contain up to 2,048 characters.
How it works
- Choose which group events YCloud should send to your webhook endpoint.
- Send a request to create a group. YCloud immediately returns a
requestId. - Wait for the lifecycle webhook that reports whether creation succeeded.
- If creation succeeds, save the returned
groupIdand invite link. Store and use thegroupIdexactly as YCloud returns it. - Send the invite link to one person at a time.
- If the group requires approval, approve or reject each join request.
- Use participant events and the retrieve-group API to keep your member list up to date.
- Use webhook events to confirm group deletion, participant removal, and settings changes.
Configure webhooks
Subscribe your YCloud webhook endpoint to these events before creating a group:
When YCloud sends an event, verify
YCloud-Signature, save the event, and return
a 2xx response promptly. You can then process it in the background. YCloud can
send the same event more than once, and different events might arrive out of
order. Use the event id to recognize a delivery that you have already handled.
For an operation started through the API, match the webhook to the original
request by requestId. Actions started by a participant, such as joining or
leaving, might not include a requestId. In that case, use the event type,
groupId, participant identifier, and event time.
Create a group
Choose the join approval mode:whatsapp.group.lifecycle_update. A successful group_create event
contains the final groupId and inviteLink.
groupId exactly as it appears in the successful event. It is
case-sensitive. Do not decode, modify, or generate it yourself.
Invite participants
You can use the invite link from the creation webhook or retrieve it later with the invite-link endpoint. Reset the link only when you need every previously shared link to stop working. After a reset, people cannot join with the old link. To send the link through WhatsApp, first prepare an approved invite template. Then send that template to an individual user:to or
recipient. It does not send a message to the group. If you provide both
fields, YCloud uses to.
Handle join requests
For anauto_approve group, wait for a participant-added webhook before
recording the user as a member.
For an approval_required group:
- Receive
group_join_request_created, or retrieve the pending requests. - Save the
joinRequestIdwhile the request is still pending. - Send each ID to the approve or reject endpoint.
- Check both successful and failed items in the response, including
failedJoinRequestsanderrors. - Confirm that the person joined by using the participant-added webhook or by retrieving the group.
List groups and join requests
The group list and join-request list return results in pages. A cursor is a temporary value that marks your position in the list.limit controls the page
size, ranges from 1 to 1024, and defaults to 25. Pass after for the next
page or before for the previous page.
Send a group message
UsePOST /whatsapp/groupMessages/sendDirectly to send one message to the
group’s current members. YCloud retrieves the group first and fixes the recipient
snapshot for that message. If the group has eight participants including the
business sender, YCloud creates seven member results. People who join later do
not receive the earlier message and are not added to its history.
The send response confirms acceptance. Use
GET /whatsapp/groupMessages/{id} to retrieve the group-level result, each
member’s delivery status, and final pricing. The group-level status describes
the overall send result: accepted by YCloud, sent by Meta, or failed. Each item
in recipients describes one member and can have a different status.
YCloud supports text, image, video, audio, document, sticker, and
supported template messages. Authentication templates and templates with
interactive or commerce components are rejected.
For marketing templates, YCloud can use the MM Lite channel when the WABA is
eligible and at least one recipient has an MM Lite price. Member records then use
group_marketing_lite. Utility and service messages keep group_utility and
group_service and do not use MM Lite. If a member has no price for the selected
channel, YCloud still submits the group when at least one member can be sent. It
does not freeze an estimated amount for the missing-price member and does not
fall back to the other channel’s price. Final billing uses the price reported by
the delivery result.
Maintain a group
Remove participants
You can remove up to eight participants in one request. Remove duplicate participant identifiers before sending it. Some participants might be removed while others fail, so checkremovedParticipants,
failedParticipants[].errors, and the top-level errors in the participant
webhook.
Update settings
You can updatesubject, description, a JPEG profile_picture_file, or any
combination of these settings. Send JSON when changing text only. Send
multipart/form-data when uploading a profile picture. The initial response
only confirms that YCloud accepted the request. Wait for the settings webhook
and check every settings[] entry to see what was actually updated.
Delete a group
The initial delete response does not confirm that the group was deleted. Wait for a lifecycle webhook withtype: "group_delete" and a final status. After
deletion, the group cannot be used again. Events that were already in progress
might still arrive.
Handle asynchronous results safely
- Store the
requestId, the requested operation, and your own reference ID together. - If you receive the same event
idagain, do not apply the same change twice. - Make sure that processing the same event again does not create duplicate data or side effects.
- Expect events to be repeated or arrive out of order.
- Retrieve the group again when an event conflicts with your current data.
- Check top-level and item-level errors for partial operations.
- Redact API keys, invite links, participant identifiers, and personal data from general application logs.
Errors and troubleshooting
An API request can fail immediately or after YCloud has accepted it:- For an immediate failure, check the standard YCloud error response. The
top-level
error.codeis a general YCloud code such asBAD_REQUESTorFORBIDDEN.error.whatsappApiErrorcan contain additional details from WhatsApp. Do not decide what your application should do by matching the human-readablemessagetext. - For a failure reported later, check the group webhook. Depending on the
operation, review
whatsappGroup.errors,failedParticipants[].errors, orsettings[].errors.
Common invite-link failures also include a reset or expired link, a full group,
or a user who was previously removed by the business. Do not retry unchanged
requests indefinitely.
End-to-end checklist
Before going live, use an eligible test phone number to complete this full flow:- Subscribe a test webhook endpoint to all four group event types.
- Create an
approval_requiredgroup and store the returnedrequestId. - Wait for the matching
group_createevent and store itsgroupIdandinviteLink. - Send the approved invite template to a test user.
- Have the user submit a join request.
- Receive or list the request, then approve its
joinRequestId. - Wait for the participant-added event.
- Retrieve the group and confirm that the participant is present.
- Remove the test participant and confirm the asynchronous result.
- Delete the test group and confirm the lifecycle event.
The examples in this guide follow the current YCloud API contract. Complete
this checklist successfully before using the integration in production.
API reference
Webhook examples
Lifecycle events
Handle group creation and deletion results.
Participant events
Handle joins, join requests, removals, and participant-level failures.
Settings events
Handle subject and description update results.
Status events
Handle group suspension and suspension-clear events.

