Skip to content
Go To Dashboard

Messaging Tools

Sapiom provides async messaging via Upstash QStash: Messages for at-least-once delivery to URLs, Schedules for recurring cron-based delivery, and Queues for ordered, rate-limited processing.

All messaging tools accept an optional agentName parameter for spend attribution.


Publish messages to URLs with guaranteed at-least-once delivery and automatic retries.

Publish a message to a URL via Upstash QStash. QStash guarantees at-least-once delivery with automatic retries. Use for webhooks, background jobs, and async workflows.

destination string required

Destination URL to deliver the message to

body object

JSON message body

delay string

Delay before delivery (e.g. "10s", "5m", "1h")

retries number default: 3

Number of retries (0–5)

Enqueue a message to a named QStash queue for ordered, rate-limited delivery. Unlike publish, enqueued messages are processed one at a time per queue.

queueName string required

Queue name to enqueue the message into

destination string required

Destination URL to deliver the message to

body object

JSON message body

delay string

Delay before delivery (e.g. "10s", "5m", "1h")

retries number default: 3

Number of retries (0–5)

Publish or enqueue multiple QStash messages in a single request. Each message can target a different destination and optionally be enqueued to a named queue.

messages object[] required

Array of messages. Each message: { destination: string, body?: object, queue?: string, delay?: string, retries?: number }

Get the status of a QStash message by its message ID. Returns delivery state and metadata.

messageId string required

Message ID returned from publish or enqueue

Cancel a pending QStash message before it is delivered. Only works for messages not yet delivered.

messageId string required

Message ID to cancel


Create recurring cron-based schedules that call a URL at specified intervals.

Create a recurring cron-based QStash schedule. The schedule will call the destination URL at the specified cron interval.

destination string required

Destination URL to call on each schedule tick

cron string required

Cron expression (e.g. "0 9 * * 1-5" for weekdays at 9am UTC)

body object

JSON body to send on each tick

retries number

Number of retries per delivery attempt (0–5)

List all QStash schedules owned by your account.

This tool takes no required parameters.

Get details of a specific QStash schedule by its schedule ID.

scheduleId string required

Schedule ID to retrieve

Delete a QStash schedule permanently. The schedule will stop triggering immediately.

scheduleId string required

Schedule ID to delete

Pause a QStash schedule. The schedule will stop triggering until resumed.

scheduleId string required

Schedule ID to pause

Resume a paused QStash schedule.

scheduleId string required

Schedule ID to resume


Manage named QStash queues for ordered, rate-limited message delivery.

List all QStash queues owned by your account.

This tool takes no required parameters.

Get details of a specific QStash queue by name, including lag and parallelism.

queueName string required

Queue name to retrieve

Delete a QStash queue permanently. Any pending messages in the queue will be cancelled.

queueName string required

Queue name to delete

Pause message delivery for a QStash queue. Queued messages are held until the queue is resumed.

queueName string required

Queue name to pause

Resume message delivery for a paused QStash queue.

queueName string required

Queue name to resume