Skip to main content
POST
/
api
/
message
/
event
/
:instance
Send Event
curl --request POST \
  --url https://api.example.com/api/message/event/:instance \
  --header 'Content-Type: <content-type>' \
  --header 'token: <token>' \
  --data '
{
  "number": "<string>",
  "name": "<string>",
  "startAt": "<string>",
  "endAt": "<string>",
  "description": "<string>",
  "location": {},
  "joinLink": "<string>",
  "isScheduleCall": true,
  "hasReminder": true,
  "reminderOffsetSec": 123,
  "extraGuestsAllowed": true,
  "isCanceled": true,
  "delay": 123,
  "replyTo": "<string>",
  "replyPrivate": true,
  "source": "<string>"
}
'
Auth: TokenAccount or TokenInstanceRate-limit: Global (100/min) • Idempotent: no

Description

Sends an event message (meeting/calendar card) to a 1-to-1 contact or, more commonly, a group (@g.us). The startAt and endAt fields accept ISO 8601 (RFC3339) timestamps with timezone (e.g. 2026-04-28T14:00:00-03:00) and are converted to Unix seconds internally. The event can optionally include description, location, joinLink, a reminder (hasReminder + reminderOffsetSec) and flags like isScheduleCall and extraGuestsAllowed. Supports delay, replyTo and replyPrivate.

Examples

Meeting with location and reminder

Creates an event in a group with start and end, a location and a reminder 15 minutes before (reminderOffsetSec: 900).
curl -X POST "https://ryzeapi.cloud/api/message/event/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":      "120363312345678901@g.us",
    "name":        "Team meeting",
    "description": "Quarterly planning",
    "startAt":     "2026-04-28T14:00:00-03:00",
    "endAt":       "2026-04-28T16:00:00-03:00",
    "location":    { "name": "Room 3, HQ", "address": "Av. Paulista, 1000" },
    "hasReminder":       true,
    "reminderOffsetSec": 900
  }'
isScheduleCall: true marks the event as a call and joinLink provides the link to join.
curl -X POST "https://ryzeapi.cloud/api/message/event/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":         "120363312345678901@g.us",
    "name":           "Team daily",
    "startAt":        "2026-05-04T09:00:00-03:00",
    "isScheduleCall": true,
    "joinLink":       "https://meet.example.com/daily"
  }'

Success response

The returned content is the event name, used to index the message in the history. Keep the messageId to correlate responses (going/not-going) received via webhook.
200 OK
{
  "success": true,
  "message": "Event sent successfully",
  "status":  "sent",
  "data": {
    "messageId":   "3EB08FCF27E532F1D3D3",
    "direction":   "sent",
    "messageType": "event",
    "content":     "Team meeting",
    "source":      "api",
    "timestamp":   "2026-04-28T14:30:00Z",
    "chat": {
      "jid":     "120363312345678901@g.us",
      "isGroup": true
    },
    "sender": {
      "jid":      "5511777777777@s.whatsapp.net",
      "instance": "my-instance"
    }
  }
}
Participant RSVPs don’t arrive synchronously in this response, they flow as events on the configured webhook/WebSocket, referencing the event’s messageId.

Path parameters

instance
string
required
Instance name (e.g., $Instance_Name).

Headers

token
string
required
TokenAccount or TokenInstance.
Content-Type
string
required
application/json

Request body

number
string
required
Destination: phone (5511999999999) or JID. Events work best in groups (@g.us).
name
string
required
Event title shown on the card.
startAt
string
required
Start date/time in ISO 8601 (RFC3339) with timezone, e.g. 2026-04-28T14:00:00-03:00.
endAt
string
End date/time in ISO 8601 (RFC3339). Optional.
description
string
Event description/details.
location
object
Event location. Fields: name, address, latitude, longitude (all optional).
Link to join (used for scheduled calls).
isScheduleCall
boolean
default:"false"
Marks the event as a scheduled call.
hasReminder
boolean
default:"false"
Enables a reminder for the event.
reminderOffsetSec
int
default:"0"
Reminder lead time, in seconds before startAt (e.g. 900 = 15 min).
extraGuestsAllowed
boolean
default:"false"
Allows guests to bring additional people.
isCanceled
boolean
default:"false"
Marks the event as canceled.
delay
int
default:"0"
Time in seconds to wait before sending. During the interval, the server shows the “typing…” indicator to the recipient and triggers “paused” before the actual send.
replyTo
string
ID of the message to reply to. The original message must belong to the same instance and be saved in the database.
replyPrivate
boolean
default:"false"
When true and replyTo points to a message originating from a group, the event is redirected to the private chat of the original author (keeping the quote).
source
string
default:"api"
Origin identifier for traceability (e.g., crm, support-bot, n8n). Saved on the message record and propagated to webhooks.

Notes

  • startAt/endAt are ISO 8601 (RFC3339) with timezone; the server converts them to Unix seconds.
  • delay is in seconds (not milliseconds); reminderOffsetSec is also in seconds.
  • Events render best in groups (@g.us).
  • RSVPs don’t come back in this call, subscribe to webhook/WebSocket events to receive them referencing the messageId.

Errors

HTTPInternal statusMessage
400,Instance name is required
400,Invalid request body: <detail>
400,Number is required
400,Name is required
400,startAt is required
400invalid_requestInvalid startAt, expected ISO 8601 (RFC3339): <detail>
400invalid_numberInvalid phone number format: <detail>
404,Instance not found
500send_failedFailed to send event: <reason>
503disconnectedInstance is not connected to WhatsApp
Error envelope:
{
  "success": false,
  "error": { "message": "startAt is required" }
}