# Zulip integrations: messages

> Send a message, create a scheduled message and update a channel in Zulip, and start a workflow when Zulip sends “Bot mentioned in a channel”.

**Canonical page:** https://tray.ai/connectors/zulip-integrations/
**Categories:** Communication
**Connects through:** HTTP Connector

## Overview

Zulip is a team chat app that organizes conversations into channels and topics, available as a hosted service or self-hosted open-source software. Tray.ai connects to Zulip through the HTTP Connector, so your workflows can call the Zulip API alongside the rest of your stack.

## Use cases

### Messages

Read, create, update, and delete messages in Zulip from any Tray.ai workflow. The Zulip API covers calls such as send a message and edit a message.

- Send a message
- Edit a message
- Delete a message

### Scheduled messages

Read, create, and delete scheduled messages in Zulip from any Tray.ai workflow. The Zulip API covers calls such as create a scheduled message and get scheduled messages.

- Create a scheduled message
- Get scheduled messages
- Delete a scheduled message

### Channels

Read, update, and delete channels in Zulip from any Tray.ai workflow. The Zulip API covers calls such as subscribe to a channel and get subscribed channels.

- Subscribe to a channel
- Get subscribed channels
- Update a channel

### Users

Read, create, and update users in Zulip from any Tray.ai workflow. The Zulip API covers calls such as get users and create a user.

- Get users
- Create a user
- Update a user

### User groups

Read, create, and update user groups in Zulip from any Tray.ai workflow. The Zulip API covers calls such as create a user group and get user groups.

- Create a user group
- Get user groups
- Update a user group

### Zulip events

Start a Tray.ai workflow the moment something happens in Zulip. Zulip sends events such as bot mentioned in a channel and direct message sent to bot to a Tray.ai webhook trigger.

- Bot mentioned in a channel
- Direct message sent to bot

## Challenges Tray.ai solves

### Keeping Zulip credentials out of logs

A raw API call usually means pasting a key or token into the request, where it ends up in step inputs, logs, and screenshots.

**How Tray.ai helps:** Store Zulip credentials once as a Tray.ai authentication and reference them from the HTTP Connector. Tray.ai masks authentication values in logs, so the secret never shows up in a step's input or output.

### Going from the Zulip API docs to a working call

Translating an example request from API docs into a workflow step means copying the method, URL, headers, and body by hand.

**How Tray.ai helps:** Paste a cURL example from the Zulip API docs into the HTTP Connector and Tray.ai fills in the method, URL, headers, and body for you.

### Handling files and non-JSON responses

Not every API answers in JSON. Some return XML, files, or binary data, or expect a multipart upload.

**How Tray.ai helps:** The HTTP Connector parses JSON and XML responses, returns files you can pass to the next step, and sends multipart form data for uploads.

## Frequently asked questions

### Does Tray.ai connect to Zulip?

Yes. Tray.ai connects to Zulip through the HTTP Connector, which calls the Zulip API directly. Any call the Zulip API documents can run as a step in a Tray.ai workflow.

### How does Tray.ai authenticate with Zulip?

The Zulip API uses basic authentication. You save it once as a Tray.ai authentication, and the HTTP Connector adds it to every request.

### Can I get a dedicated Zulip connector?

Zulip runs through the HTTP Connector rather than a dedicated connector. If your team wants one, the Tray.ai connector SDK can build a dedicated Zulip connector from the Zulip API.

## Learn more

- Intelligent Integration: https://tray.ai/platform/intelligent-ipaas/
- Merlin Agent Builder: https://tray.ai/platform/merlin-agent-builder/
- Agent Gateway for MCP: https://tray.ai/platform/agent-gateway/
- Book a demo: https://tray.ai/contact/
