MESSAGING · MESSAGING
Messages, channels, topics and subscriptions as the person the agent acts for.
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.
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.
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.
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_idWRITEDelete 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}.
zulip_delete_bot_storageWRITENote: This endpoint is only available to bot user accounts. Delete data stored for a bot user. Zulip DELETE /bot_storage.
zulip_delete_default_streamsWRITERemove 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.
zulip_delete_drafts_by_draft_idWRITEDelete a single draft from the server. The deletion will be automatically synchronized to other clients via a `drafts` event. Zulip DELETE /drafts/{draft_id}.
zulip_delete_eventsWRITEDelete 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.
zulip_delete_export_realm_by_export_idWRITEDelete 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.
zulip_delete_invites_by_invite_idWRITERevoke an email invitation. A user can only revoke invitations that they can manage. Zulip DELETE /invites/{invite_id}.
zulip_delete_invites_multiuse_by_invite_idWRITERevoke a reusable invitation link. A user can only revoke invitations that they can manage. Zulip DELETE /invites/multiuse/{invite_id}.
zulip_delete_messages_by_message_idWRITEPermanently 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}.
zulip_delete_messages_by_message_id_reactionsWRITERemove an emoji reaction from a message. Zulip DELETE /messages/{message_id}/reactions.
zulip_delete_navigation_views_by_fragmentWRITERemove a navigation view. Zulip DELETE /navigation_views/{fragment}.
zulip_delete_realm_domains_by_domainWRITERemove the specified domain from the set of allowed domains configured in the organization for user account email addresses. Zulip DELETE /realm/domains/{domain}.
zulip_delete_realm_emoji_by_emoji_nameWRITEDeactivate 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}.
zulip_delete_realm_filters_by_filter_idWRITERemove linkifiers, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip DELETE /realm/filters/{filter_id}.
zulip_delete_realm_playgrounds_by_playground_idWRITERemove a code playground previously configured for an organization. Zulip DELETE /realm/playgrounds/{playground_id}.
zulip_delete_realm_profile_fields_by_field_idWRITEDelete 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.
zulip_delete_reminders_by_reminder_idWRITEDelete, and therefore cancel sending, a previously scheduled reminder. Zulip DELETE /reminders/{reminder_id}.
zulip_delete_saved_snippets_by_saved_snippet_idWRITEDelete a saved snippet. Zulip DELETE /saved_snippets/{saved_snippet_id}.
zulip_delete_scheduled_messages_by_scheduled_message_idWRITEDelete, and therefore cancel sending, a previously scheduled message. Zulip DELETE /scheduled_messages/{scheduled_message_id}.
zulip_delete_streams_by_stream_idWRITEArchive the channel with the ID `stream_id`. Zulip DELETE /streams/{stream_id}.
zulip_delete_users_by_user_idWRITEDeactivates 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}.
zulip_delete_users_meWRITEDeactivates 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.
zulip_delete_users_me_alert_wordsWRITERemove 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.
zulip_delete_users_me_android_gcm_reg_idWRITEThis endpoint removes an FCM registration token for push notifications. Zulip DELETE /users/me/android_gcm_reg_id.
zulip_delete_users_me_apns_device_tokenWRITEThis endpoint removes an APNs device token for iOS push notifications. Zulip DELETE /users/me/apns_device_token.
zulip_delete_users_me_avatarWRITEDelete 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.
zulip_delete_users_me_muted_users_by_muted_user_idWRITEUnmute a user from the perspective of the requesting user. Zulip DELETE /users/me/muted_users/{muted_user_id}.
zulip_delete_users_me_profile_dataWRITERemove 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.
zulip_delete_users_me_subscriptionsWRITEUnsubscribe 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.
zulip_get_attachmentsREADFetch metadata on files uploaded by the requesting user. Zulip GET /attachments.
zulip_get_bot_storageREADNote: This endpoint is only available to bot user accounts. Retrieve data stored for a bot user. Zulip GET /bot_storage.
zulip_get_bots_by_bot_id_api_keyREADFetch 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.
zulip_get_calls_bigbluebutton_createREADCreate 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.
zulip_get_channel_foldersREADFetches all of the channel folders in the organization, sorted by the `order` field. Zulip GET /channel_folders.
zulip_get_draftsREADFetch all drafts for the current user. Zulip GET /drafts.
zulip_get_eventsREADThis 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.
zulip_get_export_realmREADFetch all the public and standard [data exports][export-data] of the organization. Zulip GET /export/realm.
zulip_get_export_realm_consentsREADFetches which users have consented for their private data to be exported by organization administrators. Zulip GET /export/realm/consents.
zulip_get_get_stream_idREADGet the unique ID of a given channel. Zulip GET /get_stream_id.
zulip_get_invitesREADFetch 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.
zulip_get_messagesREADThis 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.
zulip_get_messages_by_message_idREADGiven 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}.
zulip_get_messages_by_message_id_historyREADFetch 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.
zulip_get_messages_by_message_id_read_receiptsREADReturns 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.
zulip_get_messages_matches_narrowREADCheck 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.
zulip_get_navigation_viewsREADFetch all configured custom navigation views for the current user. Zulip GET /navigation_views.
zulip_get_realm_domainsREADGet 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.
zulip_get_realm_emojiREADGet all the custom emoji in the user's organization. Zulip GET /realm/emoji.
zulip_get_realm_linkifiersREADList 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.
zulip_get_realm_presenceREADGet 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.
zulip_get_realm_profile_fieldsREADGet all the custom profile fields configured for the user's organization. Zulip GET /realm/profile_fields.
zulip_get_remindersREADFetch all reminders for the current user. Reminders are messages the user has scheduled to be sent in the future to themself. Zulip GET /reminders.
zulip_get_saved_snippetsREADFetch all the saved snippets for the current user. Zulip GET /saved_snippets.
zulip_get_scheduled_messagesREADFetch 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.
zulip_get_server_settingsREADFetch 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.
zulip_get_streamsREADGet all channels that the user has access to. Zulip GET /streams.
zulip_get_streams_by_stream_idREADFetch details for the channel with the ID `stream_id`. Zulip GET /streams/{stream_id}.
zulip_get_streams_by_stream_id_email_addressREADGet 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.
zulip_get_streams_by_stream_id_membersREADGet all users subscribed to a channel. Zulip GET /streams/{stream_id}/members.
zulip_get_thumbnail_status_by_realm_id_str_by_filenameREADCheck 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}.
zulip_get_user_groupsREADFetches all of the user groups in the organization. Note: This endpoint is not available to guest users. Zulip GET /user_groups.
zulip_get_user_groups_by_user_group_id_membersREADGet the members of a user group. Zulip GET /user_groups/{user_group_id}/members.
zulip_get_user_groups_by_user_group_id_members_by_user_idREADCheck whether a user is member of user group. Zulip GET /user_groups/{user_group_id}/members/{user_id}.
zulip_get_user_groups_by_user_group_id_subgroupsREADGet the subgroups of a user group. Zulip GET /user_groups/{user_group_id}/subgroups.
zulip_get_user_uploads_by_realm_id_str_by_filenameREADGet 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}.
zulip_get_usersREADRetrieve 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.
zulip_get_users_by_emailREADFetch 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}.
zulip_get_users_by_user_idREADFetch 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}.
zulip_get_users_by_user_id_channelsREADGets 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.
zulip_get_users_by_user_id_or_email_presenceREADGet 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.
zulip_get_users_by_user_id_statusREADGet the status currently set by a user in the organization. Zulip GET /users/{user_id}/status.
zulip_get_users_by_user_id_subscriptions_by_stream_idREADCheck whether a user is subscribed to a channel. Zulip GET /users/{user_id}/subscriptions/{stream_id}.
zulip_get_users_meREADGet basic data about the user/bot that requests this endpoint. Zulip GET /users/me.
zulip_get_users_me_alert_wordsREADGet 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.
zulip_get_users_me_by_stream_id_topicsREADGet 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.
zulip_get_users_me_subscriptionsREADGet all channels that the user is subscribed to. Zulip GET /users/me/subscriptions.
zulip_patch_channel_foldersWRITEReorder 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.
zulip_patch_channel_folders_by_channel_folder_idWRITEUpdate 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}.
zulip_patch_drafts_by_draft_idWRITEEdit a draft on the server. The edit will be automatically synchronized to other clients via `drafts` events. Zulip PATCH /drafts/{draft_id}.
zulip_patch_messages_by_message_idWRITEUpdate 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}.
zulip_patch_navigation_views_by_fragmentWRITEUpdate the details of an existing configured navigation view, such as its name or whether it's pinned. Zulip PATCH /navigation_views/{fragment}.
zulip_patch_realm_domains_by_domainWRITEUpdate whether subdomains are allowed in user account email addresses for the specified domain. Zulip PATCH /realm/domains/{domain}.
zulip_patch_realm_filters_by_filter_idWRITEUpdate a linkifier, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip PATCH /realm/filters/{filter_id}.
zulip_patch_realm_linkifiersWRITEChange 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.
zulip_patch_realm_profile_fieldsWRITEReorder 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.
zulip_patch_realm_profile_fields_by_field_idWRITEUpdate 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.
zulip_patch_realm_user_settings_defaultsWRITEChange 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.
zulip_patch_saved_snippets_by_saved_snippet_idWRITEEdit a saved snippet for the current user. Zulip PATCH /saved_snippets/{saved_snippet_id}.
zulip_patch_scheduled_messages_by_scheduled_message_idWRITEEdit an existing scheduled message. Zulip PATCH /scheduled_messages/{scheduled_message_id}.
zulip_patch_settingsWRITEThis 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.
zulip_patch_streams_by_stream_idWRITEConfigure 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}.
zulip_patch_user_groups_by_user_group_idWRITEUpdate 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}.
zulip_patch_users_by_emailWRITEAdministrative 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}.
zulip_patch_users_by_user_idWRITEAdministrative 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}.
zulip_patch_users_me_profile_dataWRITEUpdate 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.
zulip_patch_users_me_subscriptionsWRITEUpdate which channels you are subscribed to. Zulip PATCH /users/me/subscriptions.
zulip_patch_users_me_subscriptions_by_stream_idWRITEUpdate 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}.
zulip_patch_users_me_subscriptions_muted_topicsWRITEMute or unmute a topic within a channel that the current user is subscribed to. Zulip PATCH /users/me/subscriptions/muted_topics.
zulip_post_bots_by_bot_id_api_key_regenerateWRITEGenerate 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.
zulip_post_calls_constructorgroups_createWRITECreate 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.
zulip_post_calls_nextcloud_talk_createWRITECreate 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.
zulip_post_calls_webex_createWRITECreate 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.
zulip_post_channel_folders_createWRITECreate a new channel folder. Zulip POST /channel_folders/create.
zulip_post_channels_createWRITECreate 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.
zulip_post_default_streamsWRITEAdd 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.
zulip_post_draftsWRITECreate one or more drafts on the server. These drafts will be automatically synchronized to other clients via `drafts` events. Zulip POST /drafts.
zulip_post_export_realmWRITECreate 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.
zulip_post_fetch_api_keyWRITEThis 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.
zulip_post_invitesWRITESend invitations to specified email addresses. Zulip POST /invites.
zulip_post_invites_by_invite_id_resendWRITEResend an email invitation. A user can only resend invitations that they can manage. Zulip POST /invites/{invite_id}/resend.
zulip_post_invites_multiuseWRITECreate a reusable invitation link which can be used to invite new users to the organization. Zulip POST /invites/multiuse.
zulip_post_jwt_fetch_api_keyWRITEThis 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.
zulip_post_mark_all_as_readWRITEMarks 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.
zulip_post_mark_stream_as_readWRITEMark all the unread messages in a channel as read. Zulip POST /mark_stream_as_read.
zulip_post_mark_topic_as_readWRITEMark all the unread messages in a topic as read. Zulip POST /mark_topic_as_read.
zulip_post_messagesWRITESend a channel message or a direct message. Zulip POST /messages.
zulip_post_messages_by_message_id_reactionsWRITEAdd an emoji reaction to a message. Zulip POST /messages/{message_id}/reactions.
zulip_post_messages_by_message_id_reportWRITESends 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.
zulip_post_messages_by_message_id_typingWRITENotify 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.
zulip_post_messages_flagsWRITEAdd 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.
zulip_post_messages_flags_narrowWRITEAdd 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.
zulip_post_messages_renderWRITERender a message to HTML. Zulip POST /messages/render.
zulip_post_mobile_push_e2ee_test_notificationWRITETrigger 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.
zulip_post_mobile_push_registerWRITERegister 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.
zulip_post_mobile_push_test_notificationWRITETrigger sending a test push notification to the user's selected mobile device or all of their mobile devices. Zulip POST /mobile_push/test_notification.
zulip_post_navigation_viewsWRITEAdds 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.
zulip_post_realm_deactivateWRITEDeactivate 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.
zulip_post_realm_domainsWRITEAdd a domain to the set of allowed domains configured in the organization for user account email addresses. Zulip POST /realm/domains.
zulip_post_realm_filtersWRITEConfigure linkifiers, regular expression patterns that are automatically linkified when they appear in messages and topics. Zulip POST /realm/filters.
zulip_post_realm_playgroundsWRITEConfigure code playgrounds for the organization. Zulip POST /realm/playgrounds.
zulip_post_realm_profile_fieldsWRITECreate a custom profile field in the user's organization. Zulip POST /realm/profile_fields.
zulip_post_realm_test_welcome_bot_custom_messageWRITESends 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.
zulip_post_registerWRITEThis 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.
zulip_post_register_client_deviceWRITELogged-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.
zulip_post_remindersWRITESchedule a reminder to be sent to the current user at the specified time. The reminder will link the relevant message. Zulip POST /reminders.
zulip_post_remotes_push_e2ee_registerWRITERegister 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.
zulip_post_remove_client_deviceWRITEMobile 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.
zulip_post_saved_snippetsWRITECreate a new saved snippet for the current user. Zulip POST /saved_snippets.
zulip_post_scheduled_messagesWRITECreate a new scheduled message. Zulip POST /scheduled_messages.
zulip_post_streams_by_stream_id_delete_topicWRITEDelete 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.
zulip_post_typingWRITENotify 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.
zulip_post_user_groups_by_user_group_id_deactivateWRITEDeactivate 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.
zulip_post_user_groups_by_user_group_id_membersWRITEUpdate the members of a user group. The user IDs must correspond to non-deactivated users. Zulip POST /user_groups/{user_group_id}/members.
zulip_post_user_groups_by_user_group_id_subgroupsWRITEUpdate the subgroups of a user group. Zulip POST /user_groups/{user_group_id}/subgroups.
zulip_post_user_groups_createWRITECreate a new user group. Zulip POST /user_groups/create.
zulip_post_user_topicsWRITEThis 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.
zulip_post_usersWRITECreate 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.
zulip_post_users_by_user_id_reactivateWRITEReactivates a user given their user ID. Zulip POST /users/{user_id}/reactivate.
zulip_post_users_by_user_id_statusWRITEAdministrator endpoint for changing the status of another user. Zulip POST /users/{user_id}/status.
zulip_post_users_me_alert_wordsWRITEAdd 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.
zulip_post_users_me_android_gcm_reg_idWRITEThis endpoint adds an FCM registration token for push notifications. Zulip POST /users/me/android_gcm_reg_id.
zulip_post_users_me_api_key_regenerateWRITENote: 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.
zulip_post_users_me_apns_device_tokenWRITEThis endpoint adds an APNs device token to register for iOS push notifications. Zulip POST /users/me/apns_device_token.
zulip_post_users_me_muted_users_by_muted_user_idWRITEMute 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}.
zulip_post_users_me_presenceWRITEUpdate 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.
zulip_post_users_me_statusWRITEChange 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.
zulip_post_users_me_subscriptionsWRITESubscribe 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.
zulip_post_users_me_subscriptions_propertiesWRITEUpdate 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.
zulip_put_bot_storageWRITENote: 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.
Put Zulip behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.