canonical: https://jentic.com/apis/zulip.com/zulip

# Zulip REST API

Powerful open source group chat. The API exposes 151 endpoints secured with basic authentication.

## For AI agents

Programmatically fetch an API key (production), fetch an API key (jwt). Covers 151 operations with basic authentication.

## Scope

Does not handle payments, crm, or developer tools - use for communications only.

## Capabilities

- Fetch an API key (production)
- List users (development only)
- Get events from an event queue
- Delete an event queue
- Monitor Zulip REST API operational status and events

## Use cases

### Communications Operations

Use the Zulip REST API to perform communications operations programmatically. The API provides 151 endpoints covering core functionality including fetch an API key (production), fetch an API key (jwt), fetch an API key (development only).

Example prompt: Call POST /fetch_api_key to fetch an API key (production)

### Automated Attachments Management

Automate attachments operations by combining multiple Zulip REST API endpoints. Agents can fetch an API key (jwt) and then fetch an API key (development only) in a single workflow.

Example prompt: Call POST /jwt/fetch_api_key to fetch an API key (jwt), then verify the result

### AI Agent Integration via Jentic

AI agents discover and call Zulip REST API endpoints through Jentic without managing credentials directly. An agent searches for the required operation by intent, receives the matching endpoint schema, and executes the call with Jentic-managed authentication. This eliminates the need to read API documentation or handle basic tokens manually.

Example prompt: Search Jentic for 'fetch an API key (production)', load the operation schema, and execute with Jentic-managed credentials

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /fetch_api_key | Fetch an API key (production) |
| POST | /jwt/fetch_api_key | Fetch an API key (JWT) |
| POST | /dev_fetch_api_key | Fetch an API key (development only) |
| GET | /dev_list_users | List users (development only) |
| GET | /events | Get events from an event queue |
| DELETE | /events | Delete an event queue |
| GET | /get_stream_id | Get channel ID |
| POST | /mark_all_as_read | Mark all messages as read |

## Key resources

- **Attachments** — Operations for attachments
- **Bots** — Operations for bots
- **Calls** — Operations for calls
- **Channel_Folders** — Operations for channel_folders
- **Channels** — Operations for channels

## Why Jentic

- **Setup:** Wiring the Zulip REST API by hand means base-authenticating with email and API key, resolving your organization's {subdomain}.zulipchat.com host, and handling the long-poll event queue yourself. Through Jentic you install once, import Zulip from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** The Zulip targets travel in the request body and query, so limit the agent to the operations it needs, such as fetching an API key, marking messages as read, or getting a stream id. You choose that operation set, so ones like deleting an event queue are left out unless you add them.
- **Credential handling:** Your Zulip email and API key are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch an API key' or 'mark all messages as read', and Jentic returns the matching Zulip operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Twilio** — Alternative communications API
- **Sendgrid** — Alternative communications API
- **Pusher** — Complementary communications API

## FAQ

### What authentication does the Zulip REST API use?

The Zulip REST API uses HTTP Basic authentication with username and password. Through Jentic, these credentials are stored encrypted in your Jentic One instance and injected at execution time, so raw secrets never enter the agent context.

### Can I fetch an API key (production) with the Zulip REST API?

Yes. Use the POST /fetch_api_key endpoint. The API returns structured JSON responses that agents can parse and act on directly.

### What are the rate limits for the Zulip REST API?

Rate limits are not specified in the OpenAPI spec. Check the vendor documentation for current limits. Through Jentic, rate limiting is handled automatically with retry logic built into the execution layer.

### How do I fetch an API key (production) through Jentic?

Install the Jentic SDK with pip install jentic, authenticate through Jentic One, the self-hosted execution layer, then search for 'fetch an API key (production)'. Jentic returns the matching Zulip REST API operation with its input schema. Load the schema and execute the call - credentials are injected automatically.

### How many endpoints does the Zulip REST API have?

The Zulip REST API exposes 151 endpoints covering attachments, bots, calls operations.

### Can I limit what my agent is allowed to do with the Zulip REST API?

Yes. Because you self-host Jentic One, your own rules decide which Zulip operations and credentials the agent may use, so you grant only the endpoints it needs, such as fetching an API key, marking all messages as read, or getting a channel (stream) ID. Since the Zulip targets travel in the request body and query, you scope the agent to that chosen operation set, and destructive calls like deleting an event queue stay out of reach unless you explicitly add them. Your Zulip email and API key stay encrypted in your own instance and are injected only at execution time, never entering the agent's prompt or logs.
