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.

FieldTypeRequiredDefaultConstraintsExample
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.
stringYes—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.
stringYes——ops@acme.com
content
The message body, in Zulip's Markdown format.
stringYes——Deploy finished — release 2026.09 is live.
topic
The topic within the channel; required for a channel message and ignored for a direct one.
stringNo——deploys
read_by_sender
Mark the message as already read by the account that sent it.
booleanNofalse——

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

FieldTypeExample
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.