---
title: "Send a bot's message"
method: POST
path: "/v3/bots/{bot_userid}/send"
tags: ["Bot"]
---

# Send a bot's message

`POST /v3/bots/{bot_userid}/send`

## Request

- Base URL: `https://api-APP_ID.sendbird.com`
- URL: `https://api-APP_ID.sendbird.com/v3/bots/{bot_userid}/send`
- Auth: none declared

## Send a bot message

Sends a bot message to a group channel.

[https://sendbird.com/docs/chat/platform-api/v3/bot/sending-a-bot-message/send-a-bot-message#1-send-a-bot-message](https://sendbird.com/docs/chat/platform-api/v3/bot/sending-a-bot-message/send-a-bot-message#1-send-a-bot-message)

`bot_userid`  
Type: string  
Description: Specifies the ID of the bot to send a message.

## Path parameters

- `bot_userid` string, required

## Headers

- `api-token` string

## Request body `multipart/form-data`

- SendABotMessageRequest
  - `message_type` 'MESG' | 'FILE', required: Specifies the type of message to send. MESG for text message, FILE for file message.
  - `channel_url` string, required: Specifies the URL of the channel to send the message to.
  - `message` string: Specifies the content of the message. * This property is required when message_type is MESG.
  - `mentioned` string[]: * This property is available when message_type is MESG.
  - `extended_message_payload` SendbirdExtendedMessagePayload: Specifies the extended message payload which is used to send a message with a custom message type.
    - `custom_view` object: JSON format you want to embed in message, eq : {"title": "title", "image": "https://link.to/image.jpg"}
    - `suggested_replies` string[]: Specifies an array of suggested replies to be sent with the message.
  - `file` string, binary: When sending a single file with a message, specifies the data of the file to upload to the Sendbird server in raw binary format. When sending a request containing a file, change the value of the content-type header to multipart/form-data;boundary={your_unique_boundary_string} in the request. * This property is required when message_type is FILE. * This doesn't allow a converted base64-encoded string from a file as its value.
  - `require_auth` boolean: Determines whether to require an authentication key to verify if the file is being properly accessed. Only the user who uploaded the file or users who are in the channel where the file was uploaded should have access. The authentication key managed internally by the Sendbird system is generated every time a user logs in to the Sendbird server and is valid for three days starting from the last login. If set to false, Sendbird tries to access a file without any key. To access encrypted files, such as the files in the Sendbird server which are by default encrypted, the property must be set to true. (Default: false) The require_auth parameter only works if the file or URL is managed by Sendbird, which means that when you upload files using multipart format or provide URLs that point to the files hosted on the Sendbird server. However, if the file is hosted on a server or service that is not managed by Sendbird, access control and authentication for the file should be handled by the respective server or service hosting the file. * This property is available when message_type is FILE.
  - `mention_type` 'users' | 'channel': * This property is available when message_type is FILE.
  - `mentioned_user_ids` string[]: * This property is available when message_type is FILE.
  - `is_silent` boolean: * This property is available when message_type is FILE.
  - `sorted_metaarray` SendbirdSortedMetaarrayInner[]
    - `key` string
    - `value` string[]
  - `apns_bundle_id` string: * This property is available when message_type is FILE.
  - `apple_critical_alert_options` object: * This property is available when message_type is FILE.
  - `sound` string: * This property is available when message_type is FILE.
  - `volume` number: * This property is available when message_type is FILE.
  - `created_at` integer
  - `custom_type` string
  - `data` string
  - `dedup_id` string
  - `mark_as_read` boolean
  - `send_push` boolean

## Response `200`

Successful response

- SendABotMessageResponse
  - `message` SendbirdMessageResponse
    - `require_auth` boolean
    - `message_survival_seconds` integer
    - `custom_type` string
    - `mentioned_users` SendbirdBasicUserInfo[]
      - `require_auth_for_profile_image` boolean
      - `is_active` boolean
      - `is_blocked_by_me` boolean
      - `role` '' | 'none' | 'operator'
      - `nickname` string, nullable
      - `user_id` string, required
      - `profile_url` string
      - `metadata` object, nullable
    - `translations` object
    - `updated_at` integer
    - `is_op_msg` boolean
    - `reactions` SendbirdReaction[]
      - `key` string
      - `updated_at` integer
      - `user_ids` string[]
    - `is_removed` boolean
    - `user` SendbirdBasicUserInfo
      - `require_auth_for_profile_image` boolean
      - `is_active` boolean
      - `is_blocked_by_me` boolean
      - `role` '' | 'none' | 'operator'
      - `nickname` string, nullable
      - `user_id` string, required
      - `profile_url` string
      - `metadata` object, nullable
    - `file` object
    - `files` SendbirdFile[]
      - `url` string
      - `file_name` string
      - `file_size` integer
      - `file_type` string
      - `thumbnails` SendbirdThumbnail[]
        - `height` integer
        - `plain_url` string
        - `real_height` integer
        - `real_width` integer
        - `url` string
        - `width` integer
      - `require_auth` boolean
    - `message` string
    - `data` string
    - `message_retention_hour` integer
    - `silent` boolean
    - `type` string
    - `created_at` integer
    - `channel_type` string
    - `req_id` string
    - `mention_type` string
    - `channel_url` string
    - `message_id` integer
    - `sorted_metaarray` SendbirdSortedMetaarrayInner[]
      - `key` string
      - `value` string[]
    - `thread_info` object
    - `parent_message_id` integer
    - `parent_message_info` SendbirdParentMessageInfo
      - `custom_type` string
      - `message` string
      - `type` string
      - `ts` integer
      - `user` SendbirdUser: User
        - `access_token` string
        - `created_at` integer
        - `discovery_keys` string[], nullable
        - `has_ever_logged_in` boolean
        - `is_active` boolean
        - `is_hide_me_from_friends` boolean
        - `is_online` boolean
        - `is_shadow_blocked` boolean
        - `last_seen_at` integer
        - `locale` string
        - `metadata` object, nullable
        - `nickname` string, nullable
        - `preferred_languages` string[], nullable
        - `profile_url` string
        - `require_auth_for_profile_image` boolean
        - `user_id` string, required
        - `state` '' | 'invited' | 'joined', nullable
        - `unread_channel_count` integer
        - `unread_message_count` integer
        - `phone_number` string
        - `is_created` boolean
      - `file` SendbirdFile
        - `url` string
        - `file_name` string
        - `file_size` integer
        - `file_type` string
        - `thumbnails` SendbirdThumbnail[]
          - `height` integer
          - `plain_url` string
          - `real_height` integer
          - `real_width` integer
          - `url` string
          - `width` integer
        - `require_auth` boolean
      - `files` SendbirdFile[]
        - `url` string
        - `file_name` string
        - `file_size` integer
        - `file_type` string
        - `thumbnails` SendbirdThumbnail[]
          - `height` integer
          - `plain_url` string
          - `real_height` integer
          - `real_width` integer
          - `url` string
          - `width` integer
        - `require_auth` boolean
    - `is_reply_to_channel` boolean
    - `message_events` SendbirdMessageResponseMessageEvents, nullable
      - `send_push_notification` string
      - `update_unread_count` boolean
      - `update_mention_count` boolean
      - `update_last_message` boolean
    - `extended_message_payload` SendbirdMessageResponseExtendedMessagePayload: Specifies the extended message payload which is used to send a message with a custom message type.
      - `custom_view` object: JSON format you want to embed in message, eq : {"title": "title", "image": "https://link.to/image.jpg"}
      - `suggested_replies` string[]: Specifies an array of suggested replies to be sent with the message.

## Changes

- **2025-10-17** `2a35c3c56c0f`: 1 breaking, 1 info
  - added `#/components/schemas/SendbirdExtendedMessagePayload` to the `message/extended_message_payload` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/Sendbird.ExtendedMessagePayload` from the `message/extended_message_payload` response property `oneOf` list for the response status `200`
- **2025-10-17** `b05d4e3c6329`: 1 breaking, 1 info
  - added `#/components/schemas/Sendbird.ExtendedMessagePayload` to the `message/extended_message_payload` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/SendBird.ExtendedMessagePayload` from the `message/extended_message_payload` response property `oneOf` list for the response status `200`
- **2025-10-17** `716caef6594d`: 1 breaking, 1 info
  - added `#/components/schemas/SendBird.ExtendedMessagePayload` to the `message/extended_message_payload` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/Sendbird.ExtendedMessagePayload` from the `message/extended_message_payload` response property `oneOf` list for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/sendbird/apis/sendbird-platform-sdk/changes/v3/bots/:bot_userid/send/post.md)

---

[API](https://skmtc.dev/sendbird/apis/sendbird-platform-sdk.md) - [All operations](https://skmtc.dev/sendbird/apis/sendbird-platform-sdk/llms.txt) - [OpenAPI document](https://skmtc.dev/sendbird/apis/sendbird-platform-sdk/revisions/9e53a5288df0?raw)
