upstash-qstash-js

Publish, schedule, and verify HTTP messages with the QStash JavaScript SDK.

2|1|Updated Jun 9, 2026
One-click install
npx skills add https://github.com/zester4/zilmate --skill upstash-qstash-js-zester4
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: upstash-qstash-js
Source: https://github.com/zester4/zilmate/tree/main/.agents/skills/upstash-qstash-js
Command: npx skills add https://github.com/zester4/zilmate --skill upstash-qstash-js-zester4

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @upstash/qstash, and includes references (resource) and scripts (resource) components.

What problem does it solve? Serverless and edge applications cannot reliably deliver HTTP messages, run cron jobs, or process background tasks because they lack persistent infrastructure. This Skill guides you through the QStash TypeScript/JavaScript SDK to publish messages, create schedules, manage queues, and verify incoming webhook signatures. ## Core Features & Use Cases - Message Publishing & Scheduling: Publish JSON messages to endpoints or URL groups with retries, delays, callbacks, and deduplication, plus cron-based schedules for recurring jobs. - Queues & Flow Control: Enforce FIFO ordering with queues and rate-limit processing per user or tenant using flow control keys. - Signature Verification & DLQ: Verify incoming QStash requests with the Receiver class or Next.js helpers, and inspect or recover failed messages from the Dead Letter Queue. - Use Case: You need a nightly cleanup job in a Next.js app on Vercel. Create a QStash schedule with a cron expression targeting your API route, then wrap the handler with verifySignatureAppRouter so only genuine QStash requests are processed. ## Quick Start Ask the assistant to publish a JSON message to an HTTPS endpoint using the QStash client with your QSTASH_TOKEN environment variable.

Frequently Asked Questions about upstash-qstash-js

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I publish a message with the QStash JavaScript SDK?

Create a Client with your QSTASH_TOKEN and call publishJSON with a destination url and body. The SDK returns a messageId, and you can add options like delay, retries, headers, callbacks, and deduplicationId.

How do I verify incoming QStash webhook signatures in Next.js?

Use verifySignatureAppRouter from @upstash/qstash/nextjs to wrap your App Router POST handler, or verifySignature for Pages Router. Both validate the upstash-signature header against your current and next signing keys automatically.

What is the difference between QStash queues and flow control?

Queues provide strict FIFO ordering where each message waits for the previous one to finish. Flow control limits rate and parallelism per key without ordering guarantees, making it better for per-user or per-tenant rate limiting.

Can I test QStash locally without a public URL?

Yes, pass devMode: true to the Client and Receiver. The SDK downloads the QStash CLI binary, starts a dev server on port 8080, and injects deterministic credentials, with no real account or tunnel required.

What happens to QStash messages that fail all retries?

Failed messages move to the Dead Letter Queue, where you can list, filter, inspect, and delete them via client.dlq. You can also set a failureCallback URL to receive real-time notifications instead of polling the DLQ.

Does QStash support multi-region deployments?

Yes, setting QSTASH_REGION to EU_CENTRAL_1 or US_EAST_1 enables multi-region mode with region-specific tokens and signing keys. The SDK detects the upstash-region header on incoming requests to select the correct verification keys.