Zulip
Zulip is an open-source team chat application with a unique topic-based threading model. Zulip's APIs power the web and mobile apps and provide REST endpoints, incoming webhooks, outgoing webhooks, and event-driven integrations to connect Zulip with external services.
APIs
Zulip REST API
The Zulip REST API powers the Zulip web and mobile apps. It provides programmatic access to messages, streams, users, organizations, and all other Zulip functionality. Anything ...
Zulip Events API
The Zulip Events API delivers real-time updates from a Zulip server to a client via an HTTPS long-poll. Clients register an event queue via POST /api/v1/register, then call GET ...
Zulip Webhooks
Zulip supports both incoming webhooks (allowing third-party services to push data to Zulip) and outgoing webhooks (allowing Zulip to send HTTP POST payloads to external services...
Collections
Zulip REST API
OPENPricing Plans
Rate Limits
FinOps
Zulip Finops
FINOPSEvent Specifications
Zulip Events API
The Zulip Events API delivers real-time updates from a Zulip server to a client via an HTTPS long-poll. Clients first register an event queue by calling POST /api/v1/register, t...
ASYNCAPIResources
Sources
opencollection: 1.0.0
info:
name: Zulip REST API
version: 1.0.0
items:
- info:
name: authentication
type: folder
items:
- info:
name: Fetch an API key (production)
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/fetch_api_key
body:
type: form-urlencoded
data:
- name: username
value: ''
- name: password
value: ''
docs: 'This API endpoint is used by clients such as the Zulip mobile and
terminal apps to implement password-based authentication. Given the
user''s Zulip login credentials, it returns a Zulip API key that the client
can use to make requests as the user.
This endpoint is only useful for Zulip servers/organizations with
EmailAuthBackend or LDAPAuthBackend enabled.
The Zulip mobile apps also support SSO/social authentication (GitHub
auth, Google auth, SAML, etc.) that does not use this endpoint. Instead'
- info:
name: Fetch an API key (JWT)
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/jwt/fetch_api_key
body:
type: form-urlencoded
data:
- name: token
value: ''
- name: include_profile
value: ''
docs: "This API endpoint is used by clients to implement JSON Web Token\n(JWT) authentication. Given a JWT identifying\
\ a Zulip user, it\nreturns a Zulip API key that the client can use to make requests\nas the user.\n\n!!! warn \"\"\n\
\n **Note:** This endpoint is only useful for Zulip servers/organizations\n with [JSON web token authentication][prod-jwt-auth]\
\ enabled.\n\nSee the [API keys](/api/api-keys) documentation for more details\non how to manage API keys manually.\n\
\n**Changes**: New in Zulip 7.0 (featur"
- info:
name: Fetch an API key (development only)
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/dev_fetch_api_key
body:
type: form-urlencoded
data:
- name: username
value: ''
docs: "For easy testing of mobile apps and other clients and against Zulip\ndevelopment servers, we support fetching a\
\ Zulip API key for any user\non the development server without authentication (so that they can\nimplement analogues\
\ of the one-click login process available for Zulip\ndevelopment servers on the web).\n\n!!! warn \"\"\n\n **Note:**\
\ This endpoint is only available on Zulip development\n servers; for obvious security reasons it will always return\
\ an error\n in a Zulip production server.\n"
- info:
name: List users (development only)
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/dev_list_users
docs: "Get a list of all, non-bot users in a [Zulip development\nserver](https://zulip.readthedocs.io/en/latest/development/overview.html).\n\
This endpoint is used by mobile developers to fetch users for the\ndevelopment login flow.\n\n!!! warn \"\"\n\n **Note:**\
\ This endpoint is only available on Zulip development\n servers; for obvious security reasons it will always return\
\ an error\n in a Zulip production server.\n"
- info:
name: real_time_events
type: folder
items:
- info:
name: Get events from an event queue
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/events
params:
- name: queue_id
value: fb67bf8a-c031-47cc-84cf-ed80accacda8
type: query
description: 'The ID of an event queue that was previously registered via
`POST /api/v1/register` (see [Register a queue](/api/register-queue)).
'
- name: last_event_id
value: '-1'
type: query
description: 'The highest event ID in this queue that you''ve received and
wish to acknowledge. See the [code for
`call_on_each_event`](https://github.com/zulip/python-zulip-api/blob/main/zulip/zulip/__init__.py)
in the [zulip Python
module](https://github.com/zulip/python-zulip-api) for an
example implementation of correctly processing each event
exactly once.
'
- name: dont_block
value: 'true'
type: query
description: 'Set to `true` if the client is requesting a nonblocking reply. If not
specified, the request will block until either a new event is available
or a few minutes have passed, in which case the server will send the
client a heartbeat event.
'
docs: 'This endpoint allows you to receive new events from
[a registered event queue](/api/register-queue).
Long-lived clients should use the
`event_queue_longpoll_timeout_seconds` property returned by
`POST /register` as the client-side HTTP request timeout for
calls to this endpoint. It is guaranteed to be higher than
heartbeat timeout and should be respected by clients to
avoid breaking when heartbeat timeout increases.
'
- info:
name: Delete an event queue
type: http
http:
method: DELETE
url: https://{subdomain}.zulipchat.com/api/v1/events
body:
type: form-urlencoded
data:
- name: queue_id
value: ''
docs: 'Delete a previously registered queue.
'
- info:
name: Register an event queue
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/register
body:
type: form-urlencoded
data:
- name: apply_markdown
value: ''
- name: client_gravatar
value: ''
- name: include_subscribers
value: ''
- name: slim_presence
value: ''
- name: presence_history_limit_days
value: ''
- name: event_types
value: ''
- name: all_public_streams
value: ''
- name: client_capabilities
value: ''
- name: fetch_event_types
value: ''
- name: narrow
value: ''
- name: idle_queue_timeout
value: ''
docs: 'This powerful endpoint can be used to register a Zulip "event queue"
(subscribed to certain types of "events", or updates to the messages
and other Zulip data the current user has access to), as well as to
fetch the current state of that data.
(`register` also powers the `call_on_each_event` Python API, and is
intended primarily for complex applications for which the more convenient
`call_on_each_event` API is insufficient).
This endpoint returns a `queue_id` and a `last_event_id`; these can b'
- info:
name: POST /real-time
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/real-time
body:
type: form-urlencoded
data:
- name: event_types
value: ''
- name: narrow
value: ''
- name: all_public_streams
value: ''
docs: '(Ignored)
'
- info:
name: Error handling
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/rest-error-handling
docs: 'Common error to many endpoints
'
- info:
name: channels
type: folder
items:
- info:
name: Get channel ID
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/get_stream_id
params:
- name: stream
value: Denmark
type: query
description: 'The name of the channel to access.
'
docs: 'Get the unique ID of a given channel.
'
- info:
name: Add a default channel
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/default_streams
body:
type: form-urlencoded
data:
- name: stream_id
value: ''
docs: 'Add a channel to the set of [default channels][default-channels]
for new users joining the organization.
[default-channels]: /help/set-default-channels-for-new-users
'
- info:
name: Remove a default channel
type: http
http:
method: DELETE
url: https://{subdomain}.zulipchat.com/api/v1/default_streams
body:
type: form-urlencoded
data:
- name: stream_id
value: ''
docs: 'Remove a channel from the set of [default channels][default-channels]
for new users joining the organization.
[default-channels]: /help/set-default-channels-for-new-users
'
- info:
name: Get topics in a channel
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/users/me/:stream_id/topics
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
- name: allow_empty_topic_name
value: 'true'
type: query
description: 'Whether the client supports processing the empty string as
a topic name in the returned data.
If `false`, the value of `realm_empty_topic_display_name`
found in the [`POST /register`](/api/register-queue) response is
returned replacing the empty string as the topic name.
**Changes**: New in Zulip 10.0 (feature level 334). Previously,
the empty string was not a valid topic.
'
docs: 'Get all topics the user has access to in a specific channel.
Note that for [private channels with
protected history](/help/channel-permissions#private-channels),
the user will only have access to topics of messages sent after they
[subscribed to](/api/subscribe) the channel. Similarly, a user''s
[bot](/help/bots-overview#bot-type) will only have access to messages
sent after the bot was subscribed to the channel, instead of when the
user subscribed.
**Changes**: Before Zulip 12.0 (feature level'
- info:
name: Get subscribed channels
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions
params:
- name: include_subscribers
value: 'true'
type: query
description: 'Whether each returned channel object should include a `subscribers`
field containing a list of the user IDs of its subscribers.
Client apps supporting organizations with many thousands of users
should not pass `true`, because the full subscriber matrix may be
several megabytes of data. The `partial` value, combined with the
`subscriber_count` and fetching subscribers for individual channels as
needed, is recommended to support client app features where
channel subscriber data is useful.
If a client passes `partial` for this parameter, the server may,
for some channels, return a subset of the channel''s subscribers
in the `partial_subscribers` field instead of the `subscribers` field,
which always contains the complete set of subscribers.
The server guarantees that it will always return a `subscribers`
field for channels with fewer than 250 total subscribers. When
returning a `partial_subscribers` field, the server guarantees
that all bot users and users active within the last 14 days will
be included. For other cases, the server may use its discretion
to determine which channels and users to include, balancing between
payload size and usefulness of the data provided to the client.
**Changes**: The `partial` value is new in Zulip 11.0 (feature level 412).
New in Zulip 2.1.0.
'
docs: 'Get all channels that the user is subscribed to.
'
- info:
name: Subscribe to a channel
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions
body:
type: form-urlencoded
data:
- name: subscriptions
value: ''
- name: principals
value: ''
- name: authorization_errors_fatal
value: ''
- name: announce
value: ''
- name: invite_only
value: ''
- name: is_web_public
value: ''
- name: is_default_stream
value: ''
- name: history_public_to_subscribers
value: ''
- name: message_retention_days
value: ''
- name: topics_policy
value: ''
- name: can_add_subscribers_group
value: ''
- name: can_remove_subscribers_group
value: ''
- name: can_administer_channel_group
value: ''
- name: can_delete_any_message_group
value: ''
- name: can_delete_own_message_group
value: ''
- name: can_move_messages_out_of_channel_group
value: ''
- name: can_move_messages_within_channel_group
value: ''
- name: can_send_message_group
value: ''
- name: can_subscribe_group
value: ''
- name: can_resolve_topics_group
value: ''
- name: can_create_topic_group
value: ''
- name: folder_id
value: ''
- name: send_new_subscription_messages
value: ''
docs: 'Subscribe one or more users to one or more channels.
If any of the specified channels do not exist, they are automatically
created. The initial [channel settings](/api/update-stream) will be determined
by the optional parameters, like `invite_only`, detailed below.
Note that the ability to subscribe oneself and/or other users
to a specified channel depends on the [channel''s permissions
settings](/help/channel-permissions).
**Changes**: Before Zulip 10.0 (feature level 362),
subscriptions in a'
- info:
name: Update subscriptions
type: http
http:
method: PATCH
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions
body:
type: form-urlencoded
data:
- name: delete
value: ''
- name: add
value: ''
docs: 'Update which channels you are subscribed to.
**Changes**: Before Zulip 10.0 (feature level 362),
subscriptions in archived channels could not be modified.
'
- info:
name: Unsubscribe from a channel
type: http
http:
method: DELETE
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions
body:
type: form-urlencoded
data:
- name: subscriptions
value: ''
- name: principals
value: ''
docs: "Unsubscribe yourself or other users from one or more channels.\n\nIn addition to managing the current user's subscriptions,\
\ this\nendpoint can be used to remove other users from channels. This\nis possible in 3 situations:\n\n- Organization\
\ administrators can remove any user from any\n channel.\n- Users can remove a bot that they own from any channel that\n\
\ the user [can access](/help/channel-permissions).\n- Users can unsubscribe any user from a channel if they [have\n\
\ access](/help/channel-permissions"
- info:
name: Topic muting
type: http
http:
method: PATCH
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions/muted_topics
body:
type: form-urlencoded
data:
- name: stream_id
value: ''
- name: stream
value: ''
- name: topic
value: ''
- name: op
value: ''
docs: '[Mute or unmute a topic](/help/mute-a-topic) within a channel that
the current user is subscribed to.
**Changes**: Deprecated in Zulip 7.0 (feature level 170). Clients connecting
to newer servers should use the [POST /user_topics](/api/update-user-topic)
endpoint, as this endpoint may be removed in a future release.
Before Zulip 7.0 (feature level 169), this endpoint
returned an error if asked to mute a topic that was already muted
or asked to unmute a topic that had not previously been muted.'
- info:
name: Update personal preferences for a topic
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/user_topics
body:
type: form-urlencoded
data:
- name: stream_id
value: ''
- name: topic
value: ''
- name: visibility_policy
value: ''
docs: 'This endpoint is used to update the personal preferences for a topic,
such as the topic''s visibility policy, which is used to implement
[mute a topic](/help/mute-a-topic) and related features.
This endpoint can be used to update the visibility policy for the single
channel and topic pair indicated by the parameters for a user.
**Changes**: New in Zulip 7.0 (feature level 170). Previously,
toggling whether a topic was muted or unmuted was managed by the
[PATCH /users/me/subscriptions/muted_topi'
- info:
name: Get subscription status
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/users/:user_id/subscriptions/:stream_id
params:
- name: user_id
value: '12'
type: path
description: 'The target user''s ID.
'
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
docs: 'Check whether a user is subscribed to a channel.
**Changes**: Prior to Zulip 12.0 (feature level 458), this endpoint
did not support querying subscriptions of bot users.
New in Zulip 3.0 (feature level 12).
'
- info:
name: Get a user's subscribed channels
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/users/:user_id/channels
params:
- name: user_id
value: '12'
type: path
description: 'The target user''s ID.
'
docs: 'Gets the list of channels that the target user is subscribed to.
The [channel security model](/help/channel-permissions) means only those
subscribed channels to which the acting user has metadata access are
returned.
For organization administrators, this is guaranteed to be all channels
the target user is subscribed to, since organization administrators
implicitly have metadata access to all channels.
**Changes**: Prior to Zulip 12.0 (feature level 458), target users that
were bots resulted i'
- info:
name: Bulk update subscription settings
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions/properties
body:
type: form-urlencoded
data:
- name: subscription_data
value: ''
docs: 'Update the current user''s personal settings for channels they are
subscribed to. These settings include [color](/help/change-the-color-of-a-channel),
[muting](/help/mute-a-channel), [pinning](/help/pin-a-channel)
and [per-channel notification settings](/help/channel-notifications).
There is a single channel alternative to this bulk endpoint:
[`POST /users/me/subscriptions/{stream_id}`](/api/update-subscription-property).
**Changes**: Prior to Zulip 5.0 (feature level 111), the response object
'
- info:
name: Update a subscription setting
type: http
http:
method: PATCH
url: https://{subdomain}.zulipchat.com/api/v1/users/me/subscriptions/:stream_id
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
body:
type: form-urlencoded
data:
- name: property
value: ''
- name: value
value: ''
docs: 'Update the current user''s personal settings for a specific channel they
are subscribed to. These settings include [color](/help/change-the-color-of-a-channel),
[muting](/help/mute-a-channel), [pinning](/help/pin-a-channel)
and [per-channel notification settings](/help/channel-notifications).
This is a single channel alternative to the bulk endpoint:
[`POST /users/me/subscriptions/properties`](/api/update-subscription-settings).
'
- info:
name: Get channel subscribers
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id/members
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
docs: 'Get all users subscribed to a channel.
**Changes**: Before Zulip 12.0 (feature level 480), this
endpoint was not supported for archived channels.
'
- info:
name: Get all channels
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/streams
params:
- name: include_public
value: 'false'
type: query
description: 'Include all public channels.
'
- name: include_web_public
value: 'true'
type: query
description: 'Include all web-public channels.
'
- name: include_subscribed
value: 'false'
type: query
description: 'Include all channels that the user is subscribed to.
'
- name: exclude_archived
value: 'true'
type: query
description: 'Whether to exclude archived streams from the results.
**Changes**: New in Zulip 10.0 (feature level 315).
'
- name: include_all_active
value: 'true'
type: query
description: 'Deprecated parameter to include all channels. The user must
have administrative privileges to use this parameter.
**Changes**: Deprecated in Zulip 10.0 (feature level
356). Clients interacting with newer servers should use
the equivalent `include_all` parameter, which does not
incorrectly hint that this parameter, and not
`exclude_archived`, controls whether archived channels
appear in the response.
'
- name: include_all
value: 'true'
type: query
description: 'Include all channels that the user has metadata access to.
For organization administrators, this will be all channels
in the organization, since organization administrators
implicitly have metadata access to all channels.
**Changes**: New in Zulip 10.0 (feature level 356). On older
versions, use `include_all_active`, which this replaces.
'
- name: include_default
value: 'true'
type: query
description: 'Include all default channels for the user''s realm.
'
- name: include_owner_subscribed
value: 'true'
type: query
description: 'If the user is a bot, include all channels that the bot''s owner is
subscribed to.
'
- name: include_can_access_content
value: 'true'
type: query
description: 'Include all the channels that the user has content access to.
**Changes**: New in Zulip 10.0 (feature level 356).
'
docs: 'Get all channels that the user [has access to](/help/channel-permissions).
'
- info:
name: Get a channel by ID
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
docs: 'Fetch details for the channel with the ID `stream_id`.
**Changes**: Before Zulip 12.0 (feature level 480), this
endpoint was not supported for archived channels.
New in Zulip 6.0 (feature level 132).
'
- info:
name: Update a channel
type: http
http:
method: PATCH
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
body:
type: form-urlencoded
data:
- name: description
value: ''
- name: new_name
value: ''
- name: is_private
value: ''
- name: is_web_public
value: ''
- name: history_public_to_subscribers
value: ''
- name: is_default_stream
value: ''
- name: message_retention_days
value: ''
- name: is_archived
value: ''
- name: folder_id
value: ''
- name: topics_policy
value: ''
- name: can_add_subscribers_group
value: ''
- name: can_remove_subscribers_group
value: ''
- name: can_administer_channel_group
value: ''
- name: can_delete_any_message_group
value: ''
- name: can_delete_own_message_group
value: ''
- name: can_move_messages_out_of_channel_group
value: ''
- name: can_move_messages_within_channel_group
value: ''
- name: can_send_message_group
value: ''
- name: can_subscribe_group
value: ''
- name: can_resolve_topics_group
value: ''
- name: can_create_topic_group
value: ''
docs: "Configure the channel with the ID `stream_id`. This endpoint supports\nan organization administrator editing any\
\ property of a channel,\nincluding:\n\n- Channel [name](/help/rename-a-channel) and [description](/help/change-the-channel-description)\n\
- Channel [permissions](/help/channel-permissions), including\n [privacy](/help/change-the-privacy-of-a-channel) and\
\ [who can\n send](/help/channel-posting-policy).\n\nNote that an organization administrator's ability to change a\n\
[private channel's permissio"
- info:
name: Archive a channel
type: http
http:
method: DELETE
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
docs: '[Archive the channel](/help/archive-a-channel) with the ID `stream_id`.
'
- info:
name: Get channel's email address
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id/email_address
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
- name: sender_id
value: '1'
type: query
description: 'The ID of a user or bot which should appear as the sender when messages
are sent to the channel using the returned channel email address.
`sender_id` can be:
- ID of the current user.
- ID of the Email gateway bot. (Default value)
- ID of a bot owned by the current user.
**Changes**: New in Zulip 10.0 (feature level 335).
Previously, the sender was always Email gateway bot.
'
docs: 'Get email address of a channel.
Note that only users with permission to post messages in the channel
can access the channel''s email address.
**Changes**: Prior to Zulip 12.0 (feature level 448), users without
permission to post messages in the channel could access the channel''s email
if they had metadata access.
New in Zulip 8.0 (feature level 226).
'
- info:
name: Delete a topic
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/streams/:stream_id/delete_topic
params:
- name: stream_id
value: '1'
type: path
description: 'The ID of the channel to access.
'
body:
type: form-urlencoded
data:
- name: topic_name
value: ''
docs: 'Delete all messages in a topic.
Topics are a field on messages (not an independent data structure), so
deleting all the messages in the topic deletes the topic from Zulip.
Because this endpoint deletes messages in batches, it is possible for
the request to time out after only deleting some messages in the topic.
When this happens, the `complete` boolean field in the success response
will be `false`. Clients should repeat the request when handling such a
response. If all messages in the topic w'
- info:
name: Create a channel
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/channels/create
body:
type: form-urlencoded
data:
- name: name
value: ''
- name: description
value: ''
- name: subscribers
value: ''
- name: announce
value: ''
- name: invite_only
value: ''
- name: is_web_public
value: ''
- name: is_default_stream
value: ''
- name: folder_id
value: ''
- name: topics_policy
value: ''
- name: history_public_to_subscribers
value: ''
- name: message_retention_days
value: ''
- name: can_add_subscribers_group
value: ''
- name: can_create_topic_group
value: ''
- name: can_delete_any_message_group
value: ''
- name: can_delete_own_message_group
value: ''
- name: can_remove_subscribers_group
value: ''
- name: can_administer_channel_group
value: ''
- name: can_move_messages_out_of_channel_group
value: ''
- name: can_move_messages_within_channel_group
value: ''
- name: can_send_message_group
value: ''
- name: can_subscribe_group
value: ''
- name: can_resolve_topics_group
value: ''
docs: 'Create a new [channel](/help/create-channels), and optionally subscribe
users to the newly created channel.
The initial [channel settings](/api/update-stream) will be determined
by the optional parameters, like `invite_only`, detailed below.
**Changes**: New in Zulip 11.0 (feature level 417). Previously, this was
only possible via the [`POST /api/subscribe`](/api/subscribe) endpoint,
which handles both channel subscription and creation.
'
- info:
name: Create a channel folder
type: http
http:
method: POST
url: https://{subdomain}.zulipchat.com/api/v1/channel_folders/create
body:
type: form-urlencoded
data:
- name: name
value: ''
- name: description
value: ''
docs: 'Create a new [channel folder](/help/channel-folders).
**Changes**: New in Zulip 11.0 (feature level 389).
'
- info:
name: Get channel folders
type: http
http:
method: GET
url: https://{subdomain}.zulipchat.com/api/v1/channel_folders
body:
type: form-urlencoded
data:
- name: include_archived
value: ''
docs: 'Fetches all of the [channel folders](/help/channel-folders) in the
organization, sorted by the `order` field.
**Changes**: Before Zulip 11.0 (feature level 414), the list of channel
folders was sorted by ID as the `order` field didn''t exist.
New in Zulip 11.0 (feature level 389).
'
- info:
name: Reorder channel folders
type: http
http:
method: PATCH
url: https://{subdomain}.zulipchat.com/api/v1/channel_folders
body:
type: form-urlencoded
data:
- name: order
value: ''
docs: 'Reorder the [channel folders](/help/channel-folders) in the user''
# --- truncated at 32 KB (141 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zulip/refs/heads/main/apis.yml