All integrations

Zulip

MESSAGING · MESSAGING

Messages, channels, topics and subscriptions as the person the agent acts for.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

zulip_delete_attachments_by_attachment_idWRITE

Delete an uploaded file given its attachment ID. Note that uploaded files that have been referenced in at least one message are automatically deleted once the last message containing a link to them is deleted (whether directly or via a message retention policy). Uploaded files that are never used in a message are automatically deleted a few weeks after being uploaded. Attachment IDs can be contained from GET /attachments. Zulip DELETE /attachments/{attachment_id}.

api
zulip_delete_bot_storageWRITE

Note: This endpoint is only available to bot user accounts. Delete data stored for a bot user. Zulip DELETE /bot_storage.

api
zulip_delete_default_streamsWRITE

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. Zulip DELETE /default_streams.

api
zulip_delete_drafts_by_draft_idWRITE

Delete a single draft from the server. The deletion will be automatically synchronized to other clients via a `drafts` event. Zulip DELETE /drafts/{draft_id}.

api
zulip_delete_eventsWRITE

Delete a previously registered queue. Zulip DELETE /events. Part of Zulip's long-polling event system: register a queue with zulip_post_register, poll it with zulip_get_events (which BLOCKS for up to the server's timeout unless dont_block is true), and release it with zulip_delete_events. An abandoned queue is garbage-collected by the server.

api
zulip_delete_export_realm_by_export_idWRITE

Delete a completed public or standard [data export][export-data] of the organization. Data exports that happened on a previous server (i.e., an export with `"export_from_prior_server": true` in the `GET /export/realm` response) cannot be deleted using this endpoint, since their tarball is no longer stored on this server; attempting to do so fails with the same error as for an export that has already been deleted. This endpoint's success response does not describe the resulting state of the organization's data exports. . Zulip DELETE /export/realm/{export_id}. Documented only in Zulip's development (main) contract, not in the 12.2 release contract, so an older server may not route it.

api
zulip_delete_invites_by_invite_idWRITE

Revoke an email invitation. A user can only revoke invitations that they can manage. Zulip DELETE /invites/{invite_id}.

api
zulip_delete_invites_multiuse_by_invite_idWRITE

Revoke a reusable invitation link. A user can only revoke invitations that they can manage. Zulip DELETE /invites/multiuse/{invite_id}.

api
zulip_delete_messages_by_message_idWRITE

Permanently delete a message. This API corresponds to the [delete a message completely][delete-completely] feature documented in the Zulip help center. A user must be able to access the content of a message in order to delete it. See channel permissions for more information about content access for channel messages. For direct messages, the user must have received or sent the direct message to have content access. See restricting message deletion for documentation on when users are allowed to delete messages. . Zulip DELETE /messages/{message_id}.

api
zulip_delete_messages_by_message_id_reactionsWRITE

Remove an emoji reaction from a message. Zulip DELETE /messages/{message_id}/reactions.

api
zulip_delete_navigation_views_by_fragmentWRITE

Remove a navigation view. Zulip DELETE /navigation_views/{fragment}.

api
zulip_delete_realm_domains_by_domainWRITE

Remove the specified domain from the set of allowed domains configured in the organization for user account email addresses. Zulip DELETE /realm/domains/{domain}.

api
zulip_delete_realm_emoji_by_emoji_nameWRITE

Deactivate a custom emoji from the user's organization. Users can only deactivate custom emoji that they added themselves except for organization administrators, who can deactivate any custom emoji. Note that deactivated emoji will still be visible in old messages, reactions, user statuses and channel descriptions. Zulip DELETE /realm/emoji/{emoji_name}.

api
zulip_delete_realm_filters_by_filter_idWRITE

Remove linkifiers, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip DELETE /realm/filters/{filter_id}.

api
zulip_delete_realm_playgrounds_by_playground_idWRITE

Remove a code playground previously configured for an organization. Zulip DELETE /realm/playgrounds/{playground_id}.

api
zulip_delete_realm_profile_fields_by_field_idWRITE

Delete a custom profile field in the user's organization. This will also permanently delete any value configured for the custom profile field from every user profile in the database. Therefore, it's recommended that clients warn the active user of the related data removal before submitting the request, e.g., notify them of how many users will have their profile data deleted as a result of deleting the custom profile field. Zulip DELETE /realm/profile_fields/{field_id}. Documented only in Zulip's development (main) contract, not in the 12.2 release contract, so an older server may not route it.

api
zulip_delete_reminders_by_reminder_idWRITE

Delete, and therefore cancel sending, a previously scheduled reminder. Zulip DELETE /reminders/{reminder_id}.

api
zulip_delete_saved_snippets_by_saved_snippet_idWRITE

Delete a saved snippet. Zulip DELETE /saved_snippets/{saved_snippet_id}.

api
zulip_delete_scheduled_messages_by_scheduled_message_idWRITE

Delete, and therefore cancel sending, a previously scheduled message. Zulip DELETE /scheduled_messages/{scheduled_message_id}.

api
zulip_delete_streams_by_stream_idWRITE

Archive the channel with the ID `stream_id`. Zulip DELETE /streams/{stream_id}.

api
zulip_delete_users_by_user_idWRITE

Deactivates a user given their user ID. Note that any bots controlled by the user will be deactivated before the user; clients that don't want this behavior are expected to prompt the user to adjust the bot's owners before making this API request. Zulip DELETE /users/{user_id}.

api
zulip_delete_users_meWRITE

Deactivates the current user's account. See also the administrative endpoint for deactivating another user. This endpoint is primarily useful to Zulip clients providing a user settings UI. Zulip DELETE /users/me.

api
zulip_delete_users_me_alert_wordsWRITE

Remove words (or phrases) from the user's set of configured [alert words][alert-words]. Alert words are case insensitive. [alert-words]: /help/dm-mention-alert-notifications#alert-words. Zulip DELETE /users/me/alert_words.

api
zulip_delete_users_me_android_gcm_reg_idWRITE

This endpoint removes an FCM registration token for push notifications. Zulip DELETE /users/me/android_gcm_reg_id.

api
zulip_delete_users_me_apns_device_tokenWRITE

This endpoint removes an APNs device token for iOS push notifications. Zulip DELETE /users/me/apns_device_token.

api
zulip_delete_users_me_avatarWRITE

Delete the current user's uploaded profile picture, reverting to the organization's default style for profile pictures. This endpoint is idempotent: if the current user has not uploaded a custom profile picture, the request succeeds without making any changes. In organizations that restrict profile picture changes, only administrators can use this endpoint. Zulip DELETE /users/me/avatar. Documented only in Zulip's development (main) contract, not in the 12.2 release contract, so an older server may not route it.

api
zulip_delete_users_me_muted_users_by_muted_user_idWRITE

Unmute a user from the perspective of the requesting user. Zulip DELETE /users/me/muted_users/{muted_user_id}.

api
zulip_delete_users_me_profile_dataWRITE

Remove the current user's profile data for one or more of the custom profile fields configured in the organization. Zulip DELETE /users/me/profile_data.

api
zulip_delete_users_me_subscriptionsWRITE

Unsubscribe yourself or other users from one or more channels. In addition to managing the current user's subscriptions, this endpoint can be used to remove other users from channels. This is possible in 3 situations: - Organization administrators can remove any user from any channel. - Users can remove a bot that they own from any channel that the user can access. - Users can unsubscribe any user from a channel if they have access to the channel and are a member of the user group specified by the [`can_remove_subscribers_group`][can-remove-parameter] for the channel. Zulip DELETE /users/me/subscriptions.

api
zulip_get_attachmentsREAD

Fetch metadata on files uploaded by the requesting user. Zulip GET /attachments.

api
zulip_get_bot_storageREAD

Note: This endpoint is only available to bot user accounts. Retrieve data stored for a bot user. Zulip GET /bot_storage.

api
zulip_get_bots_by_bot_id_api_keyREAD

Fetch the API key for a bot user. Only the bot's owner and organization administrators have access to a bot's API key. Zulip GET /bots/{bot_id}/api_key.

api
zulip_get_calls_bigbluebutton_createREAD

Create a video call URL for a BigBlueButton video call. Requires BigBlueButton 2.4+ to be configured on the Zulip server. The acting user will be given the moderator role on the call. Zulip GET /calls/bigbluebutton/create.

api
zulip_get_channel_foldersREAD

Fetches all of the channel folders in the organization, sorted by the `order` field. Zulip GET /channel_folders.

api
zulip_get_draftsREAD

Fetch all drafts for the current user. Zulip GET /drafts.

api
zulip_get_eventsREAD

This endpoint allows you to receive new events from a registered event 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. Zulip GET /events. Part of Zulip's long-polling event system: register a queue with zulip_post_register, poll it with zulip_get_events (which BLOCKS for up to the server's timeout unless dont_block is true), and release it with zulip_delete_events. An abandoned queue is garbage-collected by the server.

api
zulip_get_export_realmREAD

Fetch all the public and standard [data exports][export-data] of the organization. Zulip GET /export/realm.

api
zulip_get_export_realm_consentsREAD

Fetches which users have consented for their private data to be exported by organization administrators. Zulip GET /export/realm/consents.

api
zulip_get_get_stream_idREAD

Get the unique ID of a given channel. Zulip GET /get_stream_id.

api
zulip_get_invitesREAD

Fetch all unexpired invitations (i.e. email invitations and reusable invitation links) that can be managed by the user. Note that administrators can manage invitations that were created by other users. Zulip GET /invites.

api
zulip_get_messagesREAD

This endpoint is the primary way to fetch messages. It is used by all official Zulip clients (e.g. the web, desktop, mobile, and terminal clients) as well as many bots, API clients, backup scripts, etc. Most queries will specify a narrow filter, to fetch the messages matching any supported search query. If not specified, it will return messages corresponding to the user's combined feed. There are two ways to specify which messages matching the narrow filter to fetch: - A range of messages, described by an `anchor` message ID (or a string-format specification of how the server should computer an anchor to use) and a maximum number of messages in each direction from that anchor. . Zulip GET /messages.

api
zulip_get_messages_by_message_idREAD

Given a message ID, return the message object. Additionally, a `raw_content` field is included. This field is useful for clients that primarily work with HTML-rendered messages but might need to occasionally fetch the message's raw Zulip-flavored Markdown (e.g. for view source or prefilling a message edit textarea). Zulip GET /messages/{message_id}.

api
zulip_get_messages_by_message_id_historyREAD

Fetch the message edit history of a previously edited message. Note that edit history may be disabled in some organizations; see the [Zulip help center documentation on editing messages][edit-settings]. [edit-settings]: /help/view-a-messages-edit-history. Zulip GET /messages/{message_id}/history.

api
zulip_get_messages_by_message_id_read_receiptsREAD

Returns a list containing the IDs for all users who have marked the message as read (and whose privacy settings allow sharing that information). The list of users IDs will include any bots who have marked the message as read via the API (providing a way for bots to indicate whether they have processed a message successfully in a way that can be easily inspected in a Zulip client). Bots for which this behavior is not desired may disable the `send_read_receipts` setting via the API. It will never contain the message's sender. Zulip GET /messages/{message_id}/read_receipts.

api
zulip_get_messages_matches_narrowREAD

Check whether a set of messages match a narrow. For many common narrows (e.g. a topic), clients can write an efficient client-side check to determine whether a newly arrived message belongs in the view. This endpoint is designed to allow clients to handle more complex narrows for which the client does not (or in the case of full-text search, cannot) implement this check. . Zulip GET /messages/matches_narrow.

api
zulip_get_navigation_viewsREAD

Fetch all configured custom navigation views for the current user. Zulip GET /navigation_views.

api
zulip_get_realm_domainsREAD

Get the set of allowed domains configured in the organization for user account email addresses. As each Zulip user account is associated with an email address, organization owners can restrict new account creation (and email changes) to email addresses with these domains. Zulip GET /realm/domains.

api
zulip_get_realm_emojiREAD

Get all the custom emoji in the user's organization. Zulip GET /realm/emoji.

api
zulip_get_realm_linkifiersREAD

List all of an organization's configured linkifiers, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip GET /realm/linkifiers.

api
zulip_get_realm_presenceREAD

Get the presence information of all the users in an organization. If the `CAN_ACCESS_ALL_USERS_GROUP_LIMITS_PRESENCE` server-level setting is set to `true`, presence information of only accessible users are returned. Complete Zulip apps are recommended to fetch presence information when they post their own state using the `POST /presence` API endpoint. Zulip GET /realm/presence.

api
zulip_get_realm_profile_fieldsREAD

Get all the custom profile fields configured for the user's organization. Zulip GET /realm/profile_fields.

api
zulip_get_remindersREAD

Fetch all reminders for the current user. Reminders are messages the user has scheduled to be sent in the future to themself. Zulip GET /reminders.

api
zulip_get_saved_snippetsREAD

Fetch all the saved snippets for the current user. Zulip GET /saved_snippets.

api
zulip_get_scheduled_messagesREAD

Fetch all scheduled messages for the current user. Scheduled messages are messages the user has scheduled to be sent in the future via the send later feature. Zulip GET /scheduled_messages.

api
zulip_get_server_settingsREAD

Fetch global settings for a Zulip server. Note: this endpoint does not require any authentication at all, and you can use it to check: - If this is a Zulip server, and if so, what version of Zulip it's running. - What a Zulip client (e.g. a mobile app or zulip-terminal) needs to know in order to display a login prompt for the server (e.g. what authentication methods are available). Zulip GET /server_settings.

api
zulip_get_streamsREAD

Get all channels that the user has access to. Zulip GET /streams.

api
zulip_get_streams_by_stream_idREAD

Fetch details for the channel with the ID `stream_id`. Zulip GET /streams/{stream_id}.

api
zulip_get_streams_by_stream_id_email_addressREAD

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. Zulip GET /streams/{stream_id}/email_address.

api
zulip_get_streams_by_stream_id_membersREAD

Get all users subscribed to a channel. Zulip GET /streams/{stream_id}/members.

api
zulip_get_thumbnail_status_by_realm_id_str_by_filenameREAD

Check whether a thumbnail exists for a specific file uploaded by a user. This endpoint is intended to be polled by clients to determine when thumbnail generation is complete. Zulip GET /thumbnail/status/{realm_id_str}/{filename}.

api
zulip_get_user_groupsREAD

Fetches all of the user groups in the organization. Note: This endpoint is not available to guest users. Zulip GET /user_groups.

api
zulip_get_user_groups_by_user_group_id_membersREAD

Get the members of a user group. Zulip GET /user_groups/{user_group_id}/members.

api
zulip_get_user_groups_by_user_group_id_members_by_user_idREAD

Check whether a user is member of user group. Zulip GET /user_groups/{user_group_id}/members/{user_id}.

api
zulip_get_user_groups_by_user_group_id_subgroupsREAD

Get the subgroups of a user group. Zulip GET /user_groups/{user_group_id}/subgroups.

api
zulip_get_user_uploads_by_realm_id_str_by_filenameREAD

Get a temporary URL for access to an uploaded file that doesn't require authentication. The `SIGNED_ACCESS_TOKEN_VALIDITY_IN_SECONDS` server setting controls the valid length of time for temporary access, which generally is set to a default of 60 seconds. Consumers of this API are expected to immediately request the URL that it returns, and should not store it in any way. Zulip GET /user_uploads/{realm_id_str}/{filename}.

api
zulip_get_usersREAD

Retrieve details on users in the organization. By default, returns all accessible users in the organization. The `user_ids` query parameter can be used to limit the results to a specific set of user IDs. Optionally includes values of custom profile fields. You can also fetch details on a single user. Zulip GET /users.

api
zulip_get_users_by_emailREAD

Fetch details for a single user in the organization given a Zulip API email address. You can also fetch details on all users in the organization or by user ID. Fetching by user ID is generally recommended when possible, as a user might change their email address or change their email address visibility, either of which could change the client's ability to look them up by that email address. Zulip GET /users/{email}.

api
zulip_get_users_by_user_idREAD

Fetch details for a single user in the organization. You can also fetch details on all users in the organization or by a user's Zulip API email. Zulip GET /users/{user_id}.

api
zulip_get_users_by_user_id_channelsREAD

Gets the list of channels that the target user is subscribed to. The channel security model 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. Zulip GET /users/{user_id}/channels.

api
zulip_get_users_by_user_id_or_email_presenceREAD

Get the presence status for a specific user. This endpoint is most useful for embedding data about a user's presence status in other sites (e.g. an employee directory). Full Zulip clients like mobile/desktop apps will want to use the main presence endpoint, which returns data for all active users in the organization, instead. Zulip GET /users/{user_id_or_email}/presence.

api
zulip_get_users_by_user_id_statusREAD

Get the status currently set by a user in the organization. Zulip GET /users/{user_id}/status.

api
zulip_get_users_by_user_id_subscriptions_by_stream_idREAD

Check whether a user is subscribed to a channel. Zulip GET /users/{user_id}/subscriptions/{stream_id}.

api
zulip_get_users_meREAD

Get basic data about the user/bot that requests this endpoint. Zulip GET /users/me.

api
zulip_get_users_me_alert_wordsREAD

Get all of the user's configured [alert words][alert-words]. [alert-words]: /help/dm-mention-alert-notifications#alert-words. Zulip GET /users/me/alert_words.

api
zulip_get_users_me_by_stream_id_topicsREAD

Get all topics the user has access to in a specific channel. Note that for private channels with protected history, the user will only have access to topics of messages sent after they subscribed to the channel. Similarly, a user's bot will only have access to messages sent after the bot was subscribed to the channel, instead of when the user subscribed. Zulip GET /users/me/{stream_id}/topics.

api
zulip_get_users_me_subscriptionsREAD

Get all channels that the user is subscribed to. Zulip GET /users/me/subscriptions.

api
zulip_patch_channel_foldersWRITE

Reorder the channel folders in the user's organization. Channel folders are displayed in Zulip UI in order; this endpoint allows administrative settings UI to change the ordering of channel folders. This endpoint is used to implement the dragging feature described in the manage channel folders documentation. Zulip PATCH /channel_folders.

api
zulip_patch_channel_folders_by_channel_folder_idWRITE

Update the name or description of a channel folder with the specified ID. This endpoint is also used to archive or unarchive the specified channel folder. Zulip PATCH /channel_folders/{channel_folder_id}.

api
zulip_patch_drafts_by_draft_idWRITE

Edit a draft on the server. The edit will be automatically synchronized to other clients via `drafts` events. Zulip PATCH /drafts/{draft_id}.

api
zulip_patch_messages_by_message_idWRITE

Update the content, topic, or channel of the message with the specified ID. You can resolve topics by editing the topic to `✔ {original_topic}` with the `propagate_mode` parameter set to `"change_all"`. See [configuring message editing][config-message-editing] for detailed documentation on when users are allowed to edit message content, and [restricting moving messages][restrict-move-messages] for detailed documentation on when users are allowed to change a message's topic and/or channel. . Zulip PATCH /messages/{message_id}.

api
zulip_patch_navigation_views_by_fragmentWRITE

Update the details of an existing configured navigation view, such as its name or whether it's pinned. Zulip PATCH /navigation_views/{fragment}.

api
zulip_patch_realm_domains_by_domainWRITE

Update whether subdomains are allowed in user account email addresses for the specified domain. Zulip PATCH /realm/domains/{domain}.

api
zulip_patch_realm_filters_by_filter_idWRITE

Update a linkifier, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip PATCH /realm/filters/{filter_id}.

api
zulip_patch_realm_linkifiersWRITE

Change the order that the regular expression patterns in the organization's linkifiers are matched in messages and topics. Useful when defining linkifiers with overlapping patterns. Zulip PATCH /realm/linkifiers.

api
zulip_patch_realm_profile_fieldsWRITE

Reorder the custom profile fields in the user's organization. Custom profile fields are displayed in Zulip UI widgets in order; this endpoint allows administrative settings UI to change the field ordering. This endpoint is used to implement the dragging feature described in the custom profile fields documentation. Zulip PATCH /realm/profile_fields.

api
zulip_patch_realm_profile_fields_by_field_idWRITE

Update the configuration of a custom profile field in the user's organization. The type of a custom profile field cannot be changed. At most, 2 custom profile fields can have `display_in_profile_summary` set to `true` in an organization. For custom profile fields with type 7 (External account) that use one of Zulip's configured default external account providers (e.g., GitHub, LinkedIn, etc.), the field's `name`, `hint`, and `field_data` cannot be changed, and attempting to do so will return an error. Zulip PATCH /realm/profile_fields/{field_id}. Documented only in Zulip's development (main) contract, not in the 12.2 release contract, so an older server may not route it.

api
zulip_patch_realm_user_settings_defaultsWRITE

Change the [default values of settings][new-user-defaults] for new users joining the organization. Essentially all personal preference settings are supported. This feature can be invaluable for customizing Zulip's default settings for notifications or UI to be appropriate for how the organization is using Zulip. (Note that this only supports personal preference settings, like when to send push notifications or what emoji set to use, not profile or identity settings that naturally should be different for each user). Note that this endpoint cannot, at present, be used to modify settings for existing users in any way. Zulip PATCH /realm/user_settings_defaults.

api
zulip_patch_saved_snippets_by_saved_snippet_idWRITE

Edit a saved snippet for the current user. Zulip PATCH /saved_snippets/{saved_snippet_id}.

api
zulip_patch_scheduled_messages_by_scheduled_message_idWRITE

Edit an existing scheduled message. Zulip PATCH /scheduled_messages/{scheduled_message_id}.

api
zulip_patch_settingsWRITE

This endpoint is used to edit the current user's settings. When invoked by a realm admin, it supports bulk updates to settings for specified users or members of user groups using the `target_users` parameter. Zulip PATCH /settings.

api
zulip_patch_streams_by_stream_idWRITE

Configure the channel with the ID `stream_id`. This endpoint supports an organization administrator editing any property of a channel, including: - Channel name and description - Channel permissions, including privacy and who can send. Note that an organization administrator's ability to change a private channel's permissions depends on them being subscribed to the channel. Zulip PATCH /streams/{stream_id}.

api
zulip_patch_user_groups_by_user_group_idWRITE

Update the name, description or any of the permission settings of a user group. This endpoint is also used to reactivate a user group. Note that while permissions settings of deactivated groups can be edited by this API endpoint, and those permissions settings do affect the ability to modify the deactivated group and its membership, the deactivated group itself cannot be mentioned or used in the value of any permission without first being reactivated. Zulip PATCH /user_groups/{user_group_id}.

api
zulip_patch_users_by_emailWRITE

Administrative endpoint to update the details of another user in the organization by their email address. Works the same way as `PATCH /users/{user_id}` but fetching the target user by their real email address. The requester needs to have permission to view the target user's real email address, subject to the user's email address visibility setting. Otherwise, the dummy address of the format `user{id}@{realm.host}` needs be used. This follows the same rules as `GET /users/{email}`. Zulip PATCH /users/{email}.

api
zulip_patch_users_by_user_idWRITE

Administrative endpoint to update the details of another user in the organization. Supports everything an administrator can do to edit details of another user's account, including editing full name, role, and custom profile fields. Zulip PATCH /users/{user_id}.

api
zulip_patch_users_me_profile_dataWRITE

Update the current user's profile data for one or more of the custom profile fields configured in the organization. Zulip PATCH /users/me/profile_data.

api
zulip_patch_users_me_subscriptionsWRITE

Update which channels you are subscribed to. Zulip PATCH /users/me/subscriptions.

api
zulip_patch_users_me_subscriptions_by_stream_idWRITE

Update the current user's personal settings for a specific channel they are subscribed to. These settings include color, muting, pinning and per-channel notification settings. This is a single channel alternative to the bulk endpoint: `POST /users/me/subscriptions/properties`. Zulip PATCH /users/me/subscriptions/{stream_id}.

api
zulip_patch_users_me_subscriptions_muted_topicsWRITE

Mute or unmute a topic within a channel that the current user is subscribed to. Zulip PATCH /users/me/subscriptions/muted_topics.

api
zulip_post_bots_by_bot_id_api_key_regenerateWRITE

Generate a new API key for a bot user. Only the bot's owner and organization administrators have access to a bot's API key. Zulip POST /bots/{bot_id}/api_key/regenerate.

api
zulip_post_calls_constructorgroups_createWRITE

Create a video call URL for a Constructor Groups video call. Requires Constructor Groups to be configured on the Zulip server. Zulip POST /calls/constructorgroups/create.

api
zulip_post_calls_nextcloud_talk_createWRITE

Create a video call URL for a Nextcloud Talk video call. Requires Nextcloud Talk to be configured on the Zulip server. Zulip POST /calls/nextcloud_talk/create.

api
zulip_post_calls_webex_createWRITE

Create a video call URL for a Webex video call. Requires Webex integration to be configured on the Zulip server. Clients should confirm that the user has completed the OAuth process with Webex and has a Webex token before attempting to create a video call URL. See the `has_webex_token` field in the `POST /register` response, as well as the `has_webex_token` event type. Zulip POST /calls/webex/create.

api
zulip_post_channel_folders_createWRITE

Create a new channel folder. Zulip POST /channel_folders/create.

api
zulip_post_channels_createWRITE

Create a new channel, and optionally subscribe users to the newly created channel. The initial channel settings will be determined by the optional parameters, like `invite_only`, detailed below. Zulip POST /channels/create.

api
zulip_post_default_streamsWRITE

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. Zulip POST /default_streams.

api
zulip_post_draftsWRITE

Create one or more drafts on the server. These drafts will be automatically synchronized to other clients via `drafts` events. Zulip POST /drafts.

api
zulip_post_export_realmWRITE

Create a public or a standard [data export][export-data] of the organization. Note: If you're the administrator of a self-hosted installation, you may be looking for the documentation on [server data export and import][data-export] or [server backups][backups]. Zulip POST /export/realm. Starts a full export of the organization's data, including private messages and uploaded files. Exports are rate-limited to a handful per organization per week and the resulting archive is downloadable by anyone with the link.

api
zulip_post_fetch_api_keyWRITE

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, the mobile apps reuse the web login flow passing the `mobile_flow_otp` in a webview, and the credentials are returned to the app (encrypted) via a redirect to a `zulip://` URL. . Zulip POST /fetch_api_key. This operation takes a Zulip account PASSWORD as an argument and returns that account's API key. The password becomes part of the tool call, so it is recorded wherever the call is. Prefer connecting with an API key minted in the Zulip web app (Personal settings > Account & privacy > API key) over sending a password through a tool.

api
zulip_post_invitesWRITE

Send invitations to specified email addresses. Zulip POST /invites.

api
zulip_post_invites_by_invite_id_resendWRITE

Resend an email invitation. A user can only resend invitations that they can manage. Zulip POST /invites/{invite_id}/resend.

api
zulip_post_invites_multiuseWRITE

Create a reusable invitation link which can be used to invite new users to the organization. Zulip POST /invites/multiuse.

api
zulip_post_jwt_fetch_api_keyWRITE

This API endpoint is used by clients to implement JSON Web Token (JWT) authentication. Given a JWT identifying a Zulip user, it returns a Zulip API key that the client can use to make requests as the user. Note: This endpoint is only useful for Zulip servers/organizations with [JSON web token authentication][prod-jwt-auth] enabled. See the API keys documentation for more details on how to manage API keys manually. Zulip POST /jwt/fetch_api_key.

api
zulip_post_mark_all_as_readWRITE

Marks all of the current user's unread messages as read. Because this endpoint marks messages as read in batches, it is possible for the request to time out after only marking some messages as read. 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 were marked as read, then the success response will return `"complete": true`. Zulip POST /mark_all_as_read.

api
zulip_post_mark_stream_as_readWRITE

Mark all the unread messages in a channel as read. Zulip POST /mark_stream_as_read.

api
zulip_post_mark_topic_as_readWRITE

Mark all the unread messages in a topic as read. Zulip POST /mark_topic_as_read.

api
zulip_post_messagesWRITE

Send a channel message or a direct message. Zulip POST /messages.

api
zulip_post_messages_by_message_id_reactionsWRITE

Add an emoji reaction to a message. Zulip POST /messages/{message_id}/reactions.

api
zulip_post_messages_by_message_id_reportWRITE

Sends a notification to the organization's moderation request channel, if it is configured, that reports the targeted message for review and moderation. Clients should check the `moderation_request_channel` realm setting to decide whether to show the option to report messages in the UI. If the `report_type` parameter value is `"other"`, the `description` parameter is required. Clients should also enforce and communicate this behavior in the UI. Zulip POST /messages/{message_id}/report.

api
zulip_post_messages_by_message_id_typingWRITE

Notify other users whether the current user is editing a message. Typing notifications for editing messages follow the same protocol as set-typing-status, see that endpoint for details. Zulip POST /messages/{message_id}/typing.

api
zulip_post_messages_flagsWRITE

Add or remove personal message flags like `read` and `starred` on a collection of message IDs. See also the endpoint for updating flags on a range of messages within a narrow. Zulip POST /messages/flags.

api
zulip_post_messages_flags_narrowWRITE

Add or remove personal message flags like `read` and `starred` on a range of messages within a narrow. See also the endpoint for updating flags on specific message IDs. Zulip POST /messages/flags/narrow.

api
zulip_post_messages_renderWRITE

Render a message to HTML. Zulip POST /messages/render.

api
zulip_post_mobile_push_e2ee_test_notificationWRITE

Trigger sending an end-to-end encrypted (E2EE) test push notification to the user's selected mobile device or all of their mobile devices. Zulip POST /mobile_push/e2ee/test_notification.

api
zulip_post_mobile_push_registerWRITE

Register a device to receive end-to-end encrypted mobile push notifications, or update such a registration. To perform an initial registration, clients must provide both the push key fields (`push_key` and `push_key_id`) and the token fields (`token_kind`, `token_id`, `bouncer_public_key`, and `encrypted_push_registration`). Once registered, clients should use this endpoint to rotate `push_key` or FCM/APNs provided token: - Rotate push key: Provide only the push key fields. - Rotate token: Provide only the token fields. On a successful registration, the server automatically removes any legacy push device registration with a matching token for the user. . Zulip POST /mobile_push/register.

api
zulip_post_mobile_push_test_notificationWRITE

Trigger sending a test push notification to the user's selected mobile device or all of their mobile devices. Zulip POST /mobile_push/test_notification.

api
zulip_post_navigation_viewsWRITE

Adds a new custom left sidebar navigation view configuration for the current user. This can be used both to configure built-in navigation views, or to add new navigation views. Zulip POST /navigation_views.

api
zulip_post_realm_deactivateWRITE

Deactivate an organization on the Zulip server. Deactivating an organization immediately logs out all of its users and prevents them from logging in again. A deactivated organization can be reactivated via a management command, unless its data has been permanently deleted (see the `deletion_delay_days` parameter below). This endpoint is primarily useful for Zulip servers that host multiple organizations. Zulip POST /realm/deactivate. This deactivates the WHOLE ZULIP ORGANIZATION -- every user loses access, not just this connection. The ledger classes it `write` rather than `destructive`, so it carries no destructive badge and no confirmation gate; the consequence is stated here because nothing else states it. Documented only in Zulip's development (main) contract, not in the 12.2 release contract, so an older server may not route it.

api
zulip_post_realm_domainsWRITE

Add a domain to the set of allowed domains configured in the organization for user account email addresses. Zulip POST /realm/domains.

api
zulip_post_realm_filtersWRITE

Configure linkifiers, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip POST /realm/filters.

api
zulip_post_realm_playgroundsWRITE

Configure code playgrounds for the organization. Zulip POST /realm/playgrounds.

api
zulip_post_realm_profile_fieldsWRITE

Create a custom profile field in the user's organization. Zulip POST /realm/profile_fields.

api
zulip_post_realm_test_welcome_bot_custom_messageWRITE

Sends a test Welcome Bot custom message to the acting administrator. This allows administrators to preview how the custom welcome message will appear when received by new users upon joining the organization. Zulip POST /realm/test_welcome_bot_custom_message.

api
zulip_post_registerWRITE

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 be used in subsequent calls to the "events" endpoint to request events from the Zulip server using long-polling. The server will queue events for up to `idle_queue_timeout_secs` seconds of inactivity. . Zulip POST /register. Part of Zulip's long-polling event system: register a queue with zulip_post_register, poll it with zulip_get_events (which BLOCKS for up to the server's timeout unless dont_block is true), and release it with zulip_delete_events. An abandoned queue is garbage-collected by the server.

api
zulip_post_register_client_deviceWRITE

Logged-in mobile devices use this endpoint as an initial step to register themselves, before registering for E2EE push notifications. This endpoint is currently not useful for clients other than mobile. Zulip POST /register_client_device.

api
zulip_post_remindersWRITE

Schedule a reminder to be sent to the current user at the specified time. The reminder will link the relevant message. Zulip POST /reminders.

api
zulip_post_remotes_push_e2ee_registerWRITE

Register a push device to bouncer to receive end-to-end encrypted mobile push notifications. Self-hosted servers use this endpoint to asynchronously register a push device to the bouncer server after receiving a request from the mobile client to register E2EE push device. It is not meant to be used by mobile clients directly. Zulip POST /remotes/push/e2ee/register.

api
zulip_post_remove_client_deviceWRITE

Mobile devices use this endpoint to remove their device record registered using `POST /register_client_device` when the user logs out. This endpoint is currently not useful for clients other than mobile. Zulip POST /remove_client_device.

api
zulip_post_saved_snippetsWRITE

Create a new saved snippet for the current user. Zulip POST /saved_snippets.

api
zulip_post_scheduled_messagesWRITE

Create a new scheduled message. Zulip POST /scheduled_messages.

api
zulip_post_streams_by_stream_id_delete_topicWRITE

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 were deleted, then the success response will return `"complete": true`. Zulip POST /streams/{stream_id}/delete_topic.

api
zulip_post_typingWRITE

Notify other users whether the current user is [typing a message][help-typing]. Clients implementing Zulip's typing notifications protocol should work as follows: - Send a request to this endpoint with `"op": "start"` when a user starts composing a message. - While the user continues to actively type or otherwise interact with the compose UI (e.g. interacting with the compose box emoji picker), send regular `"op": "start"` requests to this endpoint, using `server_typing_started_wait_period_milliseconds` in the [`POST /register`][api-register] response as the time interval between each request. . Zulip POST /typing.

api
zulip_post_user_groups_by_user_group_id_deactivateWRITE

Deactivate a user group. Deactivated user groups cannot be used for mentions, permissions, or any other purpose, but can be reactivated or renamed. Deactivating user groups is preferable to deleting them from the database, since the deactivation model allows audit logs of changes to sensitive group-valued permissions to be maintained. Zulip POST /user_groups/{user_group_id}/deactivate.

api
zulip_post_user_groups_by_user_group_id_membersWRITE

Update the members of a user group. The user IDs must correspond to non-deactivated users. Zulip POST /user_groups/{user_group_id}/members.

api
zulip_post_user_groups_by_user_group_id_subgroupsWRITE

Update the subgroups of a user group. Zulip POST /user_groups/{user_group_id}/subgroups.

api
zulip_post_user_groups_createWRITE

Create a new user group. Zulip POST /user_groups/create.

api
zulip_post_user_topicsWRITE

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 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. Zulip POST /user_topics.

api
zulip_post_usersWRITE

Create a new user account via the API. Note: On Zulip Cloud, this feature is available only for organizations on a Zulip Cloud Standard or Zulip Cloud Plus plan. Administrators can request the required `can_create_users` permission for a bot or user by contacting [Zulip Cloud support][support] with an explanation for why it is needed. Self-hosted installations can toggle `can_create_users` on an account using the `manage.py change_user_role` [management command][management-commands]. Zulip POST /users.

api
zulip_post_users_by_user_id_reactivateWRITE

Reactivates a user given their user ID. Zulip POST /users/{user_id}/reactivate.

api
zulip_post_users_by_user_id_statusWRITE

Administrator endpoint for changing the status of another user. Zulip POST /users/{user_id}/status.

api
zulip_post_users_me_alert_wordsWRITE

Add words (or phrases) to the user's set of configured [alert words][alert-words]. [alert-words]: /help/dm-mention-alert-notifications#alert-words. Zulip POST /users/me/alert_words.

api
zulip_post_users_me_android_gcm_reg_idWRITE

This endpoint adds an FCM registration token for push notifications. Zulip POST /users/me/android_gcm_reg_id.

api
zulip_post_users_me_api_key_regenerateWRITE

Note: Users should treat their Zulip API key as carefully as they would their password. Generate a new API key for the user making the request. Changing a user's API key will immediately log them out of Zulip on devices registered for [mobile push notifications][mobile-push]. Zulip POST /users/me/api_key/regenerate. This REPLACES the API key of the account this connection authenticates as, which immediately invalidates the credential Agentic Fabriq holds: every later call on this connection fails until the connection is reconnected with the new key. The new key is returned in the response.

api
zulip_post_users_me_apns_device_tokenWRITE

This endpoint adds an APNs device token to register for iOS push notifications. Zulip POST /users/me/apns_device_token.

api
zulip_post_users_me_muted_users_by_muted_user_idWRITE

Mute a user from the perspective of the requesting user. Messages sent by muted users will be automatically marked as read and hidden for the user who muted them. Muted users should be implemented by clients as follows: - The server will immediately mark all messages sent by the muted user as read. This will automatically clear any existing mobile push notifications related to the muted user. - The server will mark any new messages sent by the muted user as read for the requesting user's account, which prevents all email and mobile push notifications. - Clients should exclude muted users from presence lists or other UI for viewing or composing one-on-one direct messages. . Zulip POST /users/me/muted_users/{muted_user_id}.

api
zulip_post_users_me_presenceWRITE

Update the current user's [presence][availability] and fetch presence data of other users in the organization. This endpoint is meant to be used by clients for both: - Reporting the current user's presence status (`"active"` or `"idle"`) to the server. - Obtaining the presence data of all other users in the organization via regular polling. Accurate user presence is one of the most expensive parts of any chat application (in terms of bandwidth and other resources). Therefore, it is important that clients implementing Zulip's user presence system use the modern `last_update_id` protocol to minimize fetching duplicate user presence data. . Zulip POST /users/me/presence.

api
zulip_post_users_me_statusWRITE

Change your status. A request to this endpoint will only change the parameters passed. For example, passing just `status_text` requests a change in the status text, but will leave the status emoji unchanged. Clients that wish to set the user's status to a specific value should pass all supported parameters. Zulip POST /users/me/status.

api
zulip_post_users_me_subscriptionsWRITE

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 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. Zulip POST /users/me/subscriptions.

api
zulip_post_users_me_subscriptions_propertiesWRITE

Update the current user's personal settings for channels they are subscribed to. These settings include color, muting, pinning and per-channel notification settings. There is a single channel alternative to this bulk endpoint: `POST /users/me/subscriptions/{stream_id}`. Zulip POST /users/me/subscriptions/properties.

api
zulip_put_bot_storageWRITE

Note: This endpoint is only available to bot user accounts. Add or update data stored for a bot user. Each bot has a limited storage set by the server, which normally is a default of 10,000,000 characters. Zulip PUT /bot_storage.

api

Put Zulip behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.