---
title: "send event message"
method: POST
path: "/instances/{id}/client/action/send-event"
tags: ["message"]
---

# send event message

`POST /instances/{id}/client/action/send-event`

## Request

- Base URL: `https://waapi.app/api/v1`
- URL: `https://waapi.app/api/v1/instances/{id}/client/action/send-event`
- Auth: HTTP bearer

Creates and sends a calendar event message to a specified chat.

## Path parameters

- `id` integer, required

## Request body

- object
  - `chatId` string, required: Chat ID <countrycode_short><usernumber>@c.us or @g.us for groups
  - `name` string, required: Name of the event
  - `startTime` union, required: Event start time as ISO 8601 string or Unix timestamp (seconds)
    - string
    - integer
  - `description` string: Optional description of the event
  - `endTime` union: Optional event end time as ISO 8601 string or Unix timestamp (seconds)
    - string
    - integer
  - `location` string: Optional location of the event
  - `callType` 'video' | 'voice' | 'none': Optional call type for the event

## Response `200`

Request reached the instance. `data.status` reports whether the action was carried out; on error `data` carries `message` and `explanation`. Payload: Event message sent successfully.

- object
  - `status` 'success' | 'error': Whether the request reached the instance. `success` here does **not** mean the action was carried out — that is reported by `data.status`, which is the authoritative one. A malformed input arrives as `status: success` with `data.status: error`.
  - `data` union: The action's outcome. `status: success` carries the payload; `status: error` is an `actionError`.
    - object
      - `status` 'success', required: Whether the instance carried the action out — the authoritative field. In this branch it is always `success`; when the instance refused the action the whole `data` object is an `actionError` with `status: error`, `message` and `explanation`.
      - `instanceId` union
        - integer
        - string
      - `data` object: The sent event message
        - `id` object: Message ID object
        - `body` string: Message body
        - `type` string
        - `timestamp` integer: Unix timestamp
        - `from` string: Sender ID
        - `to` string: Recipient chat ID
        - `isViewOnce` boolean: Whether the message is a view-once message
        - `eventName` string: Name of the event
        - `eventStartTime` integer: Event start time as Unix timestamp
        - `eventEndTime` integer, nullable: Event end time as Unix timestamp, or null if not set
        - `eventDescription` string, nullable: Event description, or null if not set
        - `eventLocation` string, nullable: Event location, or null if not set
        - `eventJoinLink` string, nullable: Video or voice call join link, or null if not set
        - `isEventCanceled` boolean: Whether the event is marked as canceled
    - ActionError: Shape of `data` when the instance refused the action. HTTP status is still 200 and the outer `status` is still `success`.
      - `status` 'error', required
      - `message` string
      - `explanation` string
      - `instanceId` union
        - integer
        - string

## Other responses

- `401`: Unauthorized — invalid or missing bearer token
- `403`: Forbidden — insufficient permissions or account blocked
- `404`: Not found — instance does not exist or does not belong to you
- `409`: Conflict — instance is not ready
- `422`: Validation error — invalid or missing request parameters
- `429`: Too many requests — rate limit exceeded

---

[API](https://skmtc.dev/waapi/apis/waapi-api-2.md) · [All operations](https://skmtc.dev/waapi/apis/waapi-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/waapi/apis/waapi-api-2/revisions/490302f75576?raw)
