---
title: "Join channels"
method: POST
path: "/v3/bots/{bot_userid}/channels"
tags: ["Bot"]
---

# Join channels

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

## Request

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

## Join channels

Makes a bot join one or more group channels.

[https://sendbird.com/docs/chat/platform-api/v3/bot/managing-a-bot/join-channels#1-join-channels](https://sendbird.com/docs/chat/platform-api/v3/bot/managing-a-bot/join-channels#1-join-channels)

## Path parameters

- `bot_userid` string, required

## Headers

- `api-token` string

## Request body

- JoinChannelsRequest
  - `channel_urls` string[], required

## Response `200`

Successful response

- JoinAChannelResponse
  - `channel` SendbirdGroupChannelDetailChannel
    - `channel_url` string
    - `cover_url` string
    - `created_at` integer
    - `custom_type` string
    - `data` string
    - `max_length_message` integer
    - `member_count` integer
    - `name` string
  - `channel_url` string, required
  - `cover_url` string
  - `created_at` integer
  - `created_by` 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
  - `custom_type` string
  - `data` string
  - `delivery_receipt` object
  - `disappearing_message` SendbirdDisappearingMessage
    - `message_survival_seconds` integer
    - `is_triggered_by_message_read` boolean
  - `freeze` boolean
  - `has_ai_bot` boolean
  - `has_bot` boolean
  - `id` integer
  - `ignore_profanity_filter` boolean
  - `is_access_code_required` boolean
  - `is_broadcast` boolean
  - `is_discoverable` boolean
  - `is_distinct` boolean
  - `is_ephemeral` boolean
  - `is_public` boolean
  - `is_super` boolean
  - `joined_member_count` integer
  - `last_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.
  - `max_length_message` integer
  - `member_count` integer
  - `members` SendbirdMember[]
    - `delivered_ts` integer
    - `do_not_disturb` boolean
    - `friend_discovery_key` string[], nullable
    - `friend_name` string, nullable
    - `is_active` boolean
    - `is_blocked_by_me` boolean
    - `is_blocking_me` boolean
    - `is_muted` boolean
    - `is_online` boolean
    - `last_seen_at` integer
    - `metadata` object, nullable
    - `muted_description` string
    - `muted_end_at` integer
    - `nickname` string, nullable
    - `push_enabled` boolean
    - `push_trigger_option` 'all' | 'mention_only' | 'off'
    - `profile_url` string
    - `require_auth_for_profile_image` boolean
    - `read_ts` integer
    - `role` '' | 'none' | 'operator', nullable
    - `state` '' | 'invited' | 'joined', nullable
    - `user_id` string, required
  - `message_survival_seconds` integer
  - `name` string
  - `operators` SendbirdUser[]
    - `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
  - `read_receipt` object
  - `sms_fallback` SendbirdSmsFallback
    - `wait_seconds` integer
    - `exclude_user_ids` string[]
  - `unread_mention_count` integer
  - `unread_message_count` integer

## Changes

- **2025-07-27** `7a85bad03e90`: 1 breaking, 3 warning, 1 info
  - the response's body type changed from `object` to no type for status `200`
  - deleted the `header` request parameter `Api-Token`
  - removed the request property `bot_userid`
  - removed the optional property `channels` from the response with the `200` status
  - …1 more
- **2024-09-24** `375ce8bc9c64`: 3 breaking, 1 info
  - the response property `channels/items/creator` became nullable for the status `200`
  - the response property `channels/items/inviter` became nullable for the status `200`
  - the response property `channels/items/last_message/parent_message_info/user` became nullable for the status `200`
  - added the optional property `channels/items/last_message/files` to the response with the `200` status
- **2024-07-15** `f84d82aae1df`: 1 warning
  - removed the optional property `channels/items/is_frozen` from the response with the `200` status
- **2024-05-01** `fe911479c9e0`: 7 info
  - added the optional property `channels/items/last_message/parent_message_info/custom_type` to the response with the `200` status
  - added the optional property `channels/items/last_message/parent_message_info/file` to the response with the `200` status
  - added the optional property `channels/items/last_message/parent_message_info/files` to the response with the `200` status
  - added the optional property `channels/items/last_message/parent_message_info/message` to the response with the `200` status
  - …3 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/sendbird/apis/sendbird-platform-sdk/changes/v3/bots/:bot_userid/channels/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)
