Skip to main content
Messages are removed from the database shortly after they’re delivered, so you will not be able to retrieve a message after. This endpoint is intended to be used for accessing messages that are in the process of being delivered/retried.

Retrieve a message

import { Client } from "@upstash/qstash";

const client = new Client({ token: "<QSTASH_TOKEN>" });
const messages = client.messages
const msg = await messages.get("msgId");

Cancel a message

import { Client } from "@upstash/qstash";

const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.messages.cancel("msgId");

Cancel multiple messages

import { Client } from "@upstash/qstash";

const client = new Client({ token: "<QSTASH_TOKEN>" });

// cancel two messages at once
await client.messages.cancel(["message-id-1", "message-id-2"])

// cancel all messages
let cancelled: number;
do {
  const result = await client.messages.cancel({ all: true });
  cancelled = result.cancelled;
} while (cancelled > 0);

Cancel messages with filters

import { Client } from "@upstash/qstash";

const client = new Client({ token: "<QSTASH_TOKEN>" });

// cancel messages matching a URL and label
let cancelled: number;
do {
  const result = await client.messages.cancel({
    filter: {
      url: "https://example.com",
      label: "my-label",
    }
  });
  cancelled = result.cancelled;
} while (cancelled > 0);

client.messages.delete(), client.messages.deleteMany(), and client.messages.deleteAll() are deprecated. Use client.messages.cancel() instead.