> ## Documentation Index
> Fetch the complete documentation index at: https://upstash.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

<Note>
  We have moved the roadmap and the changelog to [Github Discussions](https://github.com/orgs/upstash/discussions) starting from October 2025.Now you can follow `In Progress` features. You can see that your `Feature Requests` are recorded. You can vote for them and comment your specific use-cases to shape the feature to your needs.
</Note>

<Update label="February 2026">
  * **TypeScript SDK (`qstash-js`)** and **Python SDK (`qstash-py`):**
    * Added flow control management API: `list()`, `get(key)`, and `reset(key)` methods on `client.flowControl` (TypeScript) and `client.flow_control` (Python).
    * The `get` and `list` responses now include rich metrics: `waitListSize`, `parallelismMax`, `parallelismCount`, `rateMax`, `rateCount`, `ratePeriod`, and `ratePeriodStart`.
    * See the [Flow Control](/qstash/features/flowcontrol#management-api) docs for code examples.
  * **QStash Server:**
    * `GET /v2/flowControl` now supports an optional `search` query parameter to filter keys by name.
    * New `POST /v2/flowControl/:flowControlKey/reset` endpoint resets parallelism and rate counters for a key.
    * `GET /v2/globalParallelism` now returns `{ parallelismMax, parallelismCount }` instead of the old `{ waitListSize }` shape.
</Update>

<Update label="September 2025">
  * **TypeScript SDK (`qstash-js`):**
    * `Label` feature is added. This will enable our users to label their publishes so that
      * Logs can be filtered with user given label.
      * DLQ can be filtered with user given label.
  * **Console:**
    * `Flat view` on the `Logs` tab is removed. The purpose is to simplify the `Logs` tab.
      All the information is already available on the default(grouped) view. Let us know if there is something missing
      via Discord/Support so that we can fill in the gaps.
</Update>

<Update label="August 2025">
  * **Console:**
    * Added ability to hide/show columns on the Schedules tab.
    * Local mode is added to enable our users to use the console with their local development envrionment. See [docs](http://localhost:3000/qstash/howto/local-development) for details.
</Update>

<Update label="July 2025">
  * **TypeScript SDK (`qstash-js`):**
    * Added `retryDelay` option to dynamicaly program the retry duration of a failed message.
      The new parameter is available in publish/batch/enqueue/schedules. See [here](/qstash/features/retry#custom-retry-delay)
    * Full changelog, including all fixes, is available [here](https://github.com/upstash/qstash-js/compare/v2.8.1...v2.8.2).
</Update>

<Update label="June 2025">
  * No new features for QStash this month. We are mostly focused on stability and performance.
</Update>

<Update label="May 2025">
  * **TypeScript SDK (`qstash-js`):**
    * Added `flow control period` and deprecated `ratePerSecond`. See [here](https://github.com/upstash/qstash-js/pull/237).
    * Added `IN_PROGRESS` state filter. See [here](https://github.com/upstash/qstash-js/pull/236).
    * Full changelog, including all fixes, is available [here](https://github.com/upstash/qstash-js/compare/v2.7.23...v2.8.1).
  * **Python SDK (`qstash-py`):**
    * Added `IN_PROGRESS` state filter. See [here](https://github.com/upstash/qstash-js/pull/236).
    * Added various missing features: Callback Headers, Schedule with Queue, Overwrite Schedule ID, Flow Control Period. See [here](https://github.com/upstash/qstash-py/pull/41).
    * Full changelog, including all fixes, is available [here](https://github.com/upstash/qstash-py/compare/v2.0.5...v3.0.0).
  * **Console:**
    * Improved logs tab behavior to prevent collapsing or unnecessary refreshes, increasing usability.
  * **QStash Server:**
    * Added support for filtering messages by `FlowControlKey` (Console and SDK support in progress).
    * Applied performance improvements for bulk cancel operations.
    * Applied performance improvements for bulk publish operations.
    * Fixed an issue where scheduled publishes with queues would reset queue parallelism to 1.
    * Added support for updating existing queue parallelisms even when the max queue limit is reached.
    * Applied several additional performance optimizations.
</Update>

<Update label="April 2025">
  * **QStash Server:**
    * Added support for `flow-control period`, allowing users to define a period for a given rate—up to 1 week.\
      Previously, the period was fixed at 1 second.\
      For example, `rate: 3 period: 1d` means publishes will be throttled to 3 per day.
    * Applied several performance optimizations.
  * **Console:**
    * Added `IN_PROGRESS` as a filter option when grouping by message ID, making it easier to query in-flight messages.\
      See [here](/qstash/howto/debug-logs#lifecycle-of-a-message) for an explanation of message states.
</Update>

<Update label="March 2025">
  * **TypeScript SDK (`qstash-js`):**
    * Renamed `events` to `logs` for clarity when referring to QStash features. `client.events()` is now deprecated, and `client.logs()` has been introduced. See [details here](https://github.com/upstash/qstash-js/pull/225).
    * For all fixes, see the full changelog [here](https://github.com/upstash/qstash-js/compare/v2.7.22...v2.7.23).
  * **QStash Server:**
    * Fixed an issue where messages with delayed callbacks were silently failing. Now, such messages are explicitly rejected during insertion.
</Update>

<Update label="February 2025">
  * **Python SDK (`qstash-py`):**
    * Flow Control Parallelism and Rate. See [here](https://github.com/upstash/qstash-py/pull/36)
    * Addressed a few minor bugs. See the full changelog [here](https://github.com/upstash/qstash-py/compare/v2.0.3...v2.0.5)
  * **QStash Server:**
    * Introduced RateLimit and Parallelism controls to manage the rate and concurrency of message processing. Learn more [here](/qstash/features/flowcontrol).
    * Improved connection timeout detection mechanism to enhance scalability.
    * Added several new features to better support webhook use cases:
      * Support for saving headers in a URL group. See [here](/qstash/howto/webhook#2-url-group).
      * Ability to pass configuration parameters via query strings instead of headers. See [here](/qstash/howto/webhook#1-publish).
      * Introduced a new `Upstash-Header-Forward` header to forward all headers from the incoming request. See [here](/qstash/howto/webhook#1-publish).
</Update>

<Update label="January 2025">
  * **Python SDK (`qstash-py`):**
    * Addressed a few minor bugs. See the full changelog [here](https://github.com/upstash/qstash-py/compare/v2.0.2...v2.0.3).
  * **Local Development Server:**
    * The local development server is now publicly available. This server allows you to test your Qstash setup locally. Learn more about the local development server [here](/qstash/howto/local-development).
  * **Console:**
    * Separated the Workflow and QStash consoles for an improved user experience.
    * Separated their DLQ messages as well.
  * **QStash Server:**
    * The core team focused on RateLimit and Parallelism features. These features are ready on the server and will be announced next month after the documentation and SDKs are completed.
</Update>

<Update label="December 2024">
  * **TypeScript SDK (`qstash-js`):**
    * Added global headers to the client, which are automatically included in every publish request.
    * Resolved issues related to the Anthropics and Resend integrations.
    * Full changelog, including all fixes, is available [here](https://github.com/upstash/qstash-js/compare/v2.7.17...v2.7.20).

  * **Python SDK (`qstash-py`):**
    * Introduced support for custom `schedule_id` values.
    * Enabled passing headers to callbacks using the `Upstash-Callback-Forward-...` prefix.
    * Full changelog, including all fixes, is available [here](https://github.com/upstash/qstash-py/compare/v2.0.0...v2.0.1).

  * **Qstash Server:**
    * Finalized the local development server, now almost ready for public release.
    * Improved error reporting by including the field name in cases of invalid input.
    * Increased the maximum response body size for batch use cases to 100 MB per REST call.
    * Extended event retention to up to 14 days, instead of limiting to the most recent 10,000 events. Learn more on the [Pricing page](https://upstash.com/pricing/qstash).
</Update>

<Update label="November 2024">
  * **TypeScript SDK (qstash-js):**
    * Added support for the Anthropics provider and refactored the `api` field of `publishJSON`. See the documentation [here](/qstash/integrations/anthropic).
    * Full changelog, including fixes, is available [here](https://github.com/upstash/qstash-js/compare/v2.7.14...v2.7.17).
  * **Qstash Server:**
    * Fixed a bug in schedule reporting. The Upstash-Caller-IP header now correctly reports the user’s IP address instead of an internal IP for schedules.
    * Validated the scheduleId parameter. The scheduleId must now be alphanumeric or include hyphens, underscores, or periods.
    * Added filtering support to bulk message cancellation. Users can now delete messages matching specific filters. See Rest API [here](/qstash/api-reference/messages/bulk-cancel-messages).
    * Resolved a bug that caused the DLQ Console to become unusable when data was too large.
    * Fixed an issue with queues that caused them to stop during temporary network communication problems with the storage layer.
</Update>

<Update label="October 2024">
  * **TypeScript SDK (qstash-js):**
    * Fixed a bug on qstash-js where we skipped using the next signing key when the current signing key fails to verify the `upstash-signature`. Released with qstash-js v2.7.14.
    * Added resend API. See [here](/qstash/integrations/resend). Released with qstash-js v2.7.14.
    * Added `schedule to queues` feature to the qstash-js. See [here](/qstash/features/schedules#scheduling-to-a-queue). Released with qstash-js v2.7.14.
  * **Console:**
    * Optimized the console by trimming event bodies, reducing resource usage and enabling efficient querying of events with large payloads.
  * **Qstash Server:**
    * Began development on a new architecture to deliver faster event processing on the server.
    * Added more fields to events in the [REST API](/qstash/api-reference/logs/list-logs), including `Timeout`, `Method`, `Callback`, `CallbackHeaders`, `FailureCallback`, `FailureCallbackHeaders`, and `MaxRetries`.
    * Enhanced retry backoff logic by supporting additional headers for retry timing. Along with `Retry-After`, Qstash now recognizes `X-RateLimit-Reset`, `X-RateLimit-Reset-Requests`, and `X-RateLimit-Reset-Tokens` as backoff time indicators. See [here](/qstash/features/retry#retry-after-headers) for more details.
</Update>

<Update label="September 2024">
  * Improved performance, resulting in reduced latency for average publish times.
  * Set the `nbf` (not before) claim on Signing Keys to 0. This claim specifies the time before which the JWT must not be processed. Previously, this was incorrectly used, causing validation issues when there were minor clock discrepancies between systems.
  * Fixed queue name validation. Queue names must now be alphanumeric or include hyphens, underscores, or periods, consistent with other API resources.
  * Resolved bugs related to [overwriting a schedule](/qstash/features/schedules#overwriting-an-existing-schedule).
</Update>

<Update label="August 2024">
  * Released [Upstash Workflow](/qstash/workflow).
  * Fixed a bug where paused schedules were mistakenly resumed after a process restart (typically occurring during new version releases).
</Update>

<Update label="July 2024">
  * Big update on the UI, where all the Rest functinality exposed in the Console.
  * Addded order query parameter to [/v2/events](/qstash/api-reference/logs/list-logs) and [/v2/dlq](/qstash/api-reference/dlq/list-dlq-messages) endpoints.
  * Added [ability to configure](/qstash/features/callbacks#configuring-callbacks) callbacks(/failure\_callbacks)
  * A critical fix for schedule pause and resume Rest APIs where the endpoints were not working at all before the fix.
</Update>

<Update label="June 2024">
  * Pause and resume for scheduled messages
  * Pause and resume for queues
  * [Bulk cancel](/qstash/api-reference/messages/bulk-cancel-messages) messages
  * Body and headers on [events](/qstash/api-reference/logs/list-logs)
  * Fixed inaccurate queue lag
</Update>

<Update label="May 2024">
  * [Retry-After](/qstash/features/retry#retry-after-header) support for rate-limited endpoints
  * [Upstash-Timeout](/qstash/api-reference/messages/publish-a-message) header
</Update>

<Update label="April 2024">
  * [Queues and parallelism](/qstash/features/queues)
  * [Event filtering](/qstash/api-reference/logs/list-logs)
</Update>

<Update label="March 2024">
  * [Batch publish messages](/qstash/api-reference/messages/batch-messages)
  * [Bulk delete](/qstash/api-reference/dlq/bulk-delete-dlq-messages) for DLQ
</Update>

<Update label="February 2024">
  * Added [failure callback support](/qstash/api-reference/schedules/create-a-schedule) to scheduled messages
  * Added Upstash-Caller-IP header to outgoing messages. See \[[https://upstash.com/docs/qstash/howto/receiving](https://upstash.com/docs/qstash/howto/receiving)] for all headers
  * Added Schedule ID to [events](/qstash/api-reference/logs/list-logs) and [messages](/qstash/api-reference/messages/get-a-message)
</Update>

<Update label="November 2023">
  * Put last response in DLQ
  * DLQ [get message](/qstash/api-reference/dlq/delete-a-dlq-message)
  * Pass schedule ID to the header when calling the user's endpoint
  * Added more information to [callbacks](/qstash/features/callbacks)
</Update>

<Update label="October 2023">
  * Added [Upstash-Failure-Callback](/qstash/features/callbacks#what-is-a-failure-callback)
</Update>
