Send Message
zulip.send_message
ActionChat & messagingconnection required
Calls the Zulip API with the connection's credentials.
Send a message to a channel topic, or a direct message to people.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Username & password
- Providers
- Zulip
- Secret shape
- {"email": "…", "api_key": "…"} — HTTP Basic, email as the username
- Config it needs
- base_url
- Resolved by
- config.connection_id, else node.connection_id
Configuration
5 fields, 3 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
type Whether this is a direct message to people or a message in a channel; 'private' and 'stream' are Zulip's older names for the same two. | string | Yes | — | one of "direct", "channel", "private", "stream" | — |
to For a channel message, the channel name or id; for a direct message, the recipients as an email, or a JSON array of emails or user ids. | string | Yes | — | — | ops@acme.com |
content The message body, in Zulip's Markdown format. | string | Yes | — | — | Deploy finished — release 2026.09 is live. |
topic The topic within the channel; required for a channel message and ignored for a direct one. | string | No | — | — | deploys |
read_by_sender Mark the message as already read by the account that sent it. | boolean | No | false | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"content": "Deploy finished — release 2026.09 is live.",
"read_by_sender": false,
"to": "ops@acme.com",
"topic": "deploys"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The id Zulip assigned to the new message. | number | — |
result Zulip's result field, 'success' on a delivered send. | string | — |
msg Zulip's message field, empty on success. | string | — |
{
"id": 0,
"msg": "",
"result": ""
}Notes
- A 'topic' is required when type is 'channel' or 'stream'; the node refuses the send before the call when one is missing.
- For a direct message the recipients are sent as a JSON array, even when there is only one.
See Send Message run in a workflow.
In a technical demo we add the Zulip connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.