Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _snippets/workflow/logs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@

<ResponseField name="responseBody" type="string">
Response body of the failure function/url.
When [failure function](/workflow/basics/serve#failurefunction) is used, this contains
When [failure function](/workflow/basics/serve/advanced#param-failure-function) is used, this contains
the returned message from the failure function.
</ResponseField>

Expand Down
32 changes: 16 additions & 16 deletions llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19640,7 +19640,7 @@ QStash is especially useful for LLM processing because LLM response times are of

## QStash LLM API

You can publish (or enqueue) single LLM request or batch LLM requests using all existing QStash features natively. To do this, specify the destination `api` as `llm` with a valid provider. The body of the published or enqueued message should contain a valid chat completion request. For these integrations, you must specify the `Upstash-Callback` header so that you can process the response asynchronously. Note that streaming chat completions cannot be used with them. Use [the chat API](#chat-api) for streaming completions.
You can publish (or enqueue) single LLM request or batch LLM requests using all existing QStash features natively. To do this, specify the destination `api` as `llm` with a valid provider. The body of the published or enqueued message should contain a valid chat completion request. For these integrations, you must specify the `Upstash-Callback` header so that you can process the response asynchronously. Note that streaming chat completions cannot be used with them.

All the examples below can be used with **OpenAI-compatible LLM providers**.

Expand Down Expand Up @@ -21022,7 +21022,7 @@ Source: https://upstash.com/docs/qstash/overall/changelog
</Update>

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

Expand Down Expand Up @@ -85191,7 +85191,7 @@ commands introduced in Redis 7.
<Update label="July 2024">
* Added REST API support for [`MONITOR`](/docs/redis/commands/server/monitor) and [`SUBSCRIBE`](/docs/redis/commands/pub-sub/subscribe)
commands using [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events).
See [Monitor](../features/restapi#monitor-command) and [Subscribe](../features/restapi#subscribe-and-publish-commands) docs.
See [Monitor](../features/restapi#monitor-command) and [Subscribe](../features/restapi#subscribe-&-publish-commands) docs.
* Added [`JSON.MSET`](/docs/redis/commands/json/json-mset) and [`JSON.MERGE`](/docs/redis/commands/json/json-merge) commands.
* Introduced the `IP Allowlist` feature for enhanced security on newly created databases. By default, all IP addresses will be allowed.
However, access can be restricted by specifying permitted IP addresses or CIDR ranges.
Expand Down Expand Up @@ -90561,7 +90561,7 @@ Values passed in `identifier`, `ip`, `userAgent` and `country` are checked with
The other command is TTL which is for checking the status of the current ip deny list to figure out whether
it is expired, valid or disabled.

If [Auto IP deny list](/docs/redis/sdks/ratelimit-ts/features#auto-ip-deny-list) is enabled,
If [Auto IP deny list](/docs/redis/sdks/ratelimit-ts/traffic-protection#auto-ip-deny-list) is enabled,
the Ratelimit SDK will update the ip deny list everyday, in the first `limit` invocation after 2 AM UTC.
This will consume 9 commands per day.

Expand Down Expand Up @@ -91011,7 +91011,7 @@ To configure the your Ratelimit according to your needs, you can make use of sev
<Card
title="Analytics & Dashboard"
icon="magnifying-glass-chart"
href="/redis/sdks/ratelimit-ts/features#analytics-and-dashboard"
href="/redis/sdks/ratelimit-ts/features#analytics-&-dashboard"
>
Collect information on which identifiers made how many requests and how many
were blocked
Expand Down Expand Up @@ -91310,7 +91310,7 @@ for:
<Card
title="Analytics & Dashboard"
icon="magnifying-glass-chart"
href="/redis/sdks/ratelimit-ts/features#analytics-and-dashboard"
href="/redis/sdks/ratelimit-ts/features#analytics-&-dashboard"
>
Collect information on which identifiers made how many requests and how many
were blocked
Expand Down Expand Up @@ -95301,7 +95301,7 @@ SEARCH.CREATE profiles ON STRING PREFIX 1 profiles: SKIPINITIALSCAN SCHEMA name

It is possible to specify the language of the text fields, so that an appropriate tokenizer
and stemmer can be used. For more on tokenization and stemming, see the
[Text Field Options](./schema-definition#text-field-options) section.
[Tokenization & Stemming](./schema-definition#tokenization-&-stemming) section.

When not specified, language defaults to `english`.

Expand Down Expand Up @@ -96927,7 +96927,7 @@ On fields with stemming enabled (the default), regex operates on the stemmed for
For example, "running" might be stored as "run", so a regex pattern `"running.*"` would not match.

To use regex reliably, consider using `NOSTEM` on fields where you need exact pattern matching.
See [Text Field Options](../../schema-definition#text-field-options) for more details.
See [Tokenization & Stemming](../../schema-definition#tokenization-&-stemming) for more details.

### Compatibility

Expand Down Expand Up @@ -111470,7 +111470,7 @@ export const { POST } = serve(async (context) => {
});
```

If you wish to manually use the model results instead of utilizing a [manager LLM](/docs/workflow/agents/overview#multi-agents) as we did in this example, see the [parallelization example](/docs/workflow/agents/patterns/parallelization)
If you wish to manually use the model results instead of utilizing a [manager LLM](/docs/workflow/agents/features#multi-agents) as we did in this example, see the [parallelization example](/docs/workflow/agents/patterns/parallelization)

<img alt="Orchestrator manager workflow logs" />

Expand Down Expand Up @@ -113317,7 +113317,7 @@ The `logs` method retrieves workflow run logs using the [List Workflow Runs API]

<ResponseField name="responseBody" type="string">
Response body of the failure function/url.
When [failure function](/docs/workflow/basics/serve#failurefunction) is used, this contains
When [failure function](/docs/workflow/basics/serve/advanced#param-failure-function) is used, this contains
the returned message from the failure function.
</ResponseField>

Expand Down Expand Up @@ -114523,7 +114523,7 @@ Source: https://upstash.com/docs/workflow/changelog
<Update label="August 2025">
* **TypeScript SDK (`workflow-js`):**
* Added `retryDelay` option to dynamically program the retry duration. It can be configured on
[trigger](/docs/workflow/basics/client/trigger#body-retrydelay), [context.call](/docs/workflow/steps/call)
[trigger](/docs/workflow/basics/client/trigger#param-retry-delay), [context.call](/docs/workflow/steps/call)
or `serve` (later moved to `client.trigger`, see the [migration guide](/docs/workflow/howto/migrations#configuration-moved-from-serve-to-trigger))
* Added ability to detect if a given url is a workflow or not. Starting with `0.2.17` trigger made via the sdk can fail (instead of hanging),
if there is no workflow serve on the given url.
Expand Down Expand Up @@ -119956,7 +119956,7 @@ If you want requests to retry automatically, you can explicitly pass a retry con
</ParamField>

<ParamField body="workflow" >
When using [`serveMany`](/docs/workflow/features/invoke/serveMany#using-serve-manyny), you can call another workflow defined in the same `serveMany` by passing it to this parameter.
When using [`serveMany`](/docs/workflow/features/invoke/serveMany), you can call another workflow defined in the same `serveMany` by passing it to this parameter.
</ParamField>

## Response
Expand Down Expand Up @@ -121039,7 +121039,7 @@ Retry settings can be configured in two locations:
[Changelog](/docs/workflow/changelog) for updates.
</Note>

Use [verbose mode](/docs/workflow/basics/serve/advanced#path-verbose) to diagnose workflow issues.
Use [verbose mode](/docs/workflow/basics/serve/advanced#param-verbose) to diagnose workflow issues.

The logs in this section should be seen very rarely. If you observe these logs consistently, you can reach out to our support.

Expand All @@ -121054,9 +121054,9 @@ localhost. Received: ...
This error indicates that the workflow URL has localhost. Publish requests will fail and workflow won't be able to run.

**Potential Solutions:**
* Verify [baseUrl](/docs/workflow/basics/serve/advanced#path-baseurl)
* Verify [baseUrl](/docs/workflow/basics/serve/advanced#param-base-url)
* Check UPSTASH_WORKFLOW_URL
* Explicitly pass the full [url](/docs/workflow/basics/serve/advanced#path-url)
* Explicitly pass the full [url](/docs/workflow/basics/serve/advanced#param-url)

### Deduplication Log
Since QStash has at least once delivery guarantee, there is a very small chance that a step will run twice. This is why we suggest [idempotancy](/docs/workflow/basics/best-practices/idempotency). When this happens, the duplicate step should print the following log and terminate:
Expand Down Expand Up @@ -121108,7 +121108,7 @@ If it appears like the initial step has failed:
* Verify that you're using the latest SDK version both in the workflow endpoint definition and in the code that calls `client.trigger`.

If it appears like the initial step has completed but the workflow is still stuck:
* Workflow SDK could be unable to correctly infer the workflow URL due to a proxy or an issue in the request object. To check if this is the issue, try passing the [`baseUrl` parameter to the `serve` method](/docs/workflow/basics/serve/advanced#path-baseurl). This will override the automatic URL inference and use the provided base URL instead.
* Workflow SDK could be unable to correctly infer the workflow URL due to a proxy or an issue in the request object. To check if this is the issue, try passing the [`baseUrl` parameter to the `serve` method](/docs/workflow/basics/serve/advanced#param-base-url). This will override the automatic URL inference and use the provided base URL instead.

## Non-workflow Destination Error

Expand Down
2 changes: 1 addition & 1 deletion qstash/integrations/llm.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ QStash is especially useful for LLM processing because LLM response times are of

## QStash LLM API

You can publish (or enqueue) single LLM request or batch LLM requests using all existing QStash features natively. To do this, specify the destination `api` as `llm` with a valid provider. The body of the published or enqueued message should contain a valid chat completion request. For these integrations, you must specify the `Upstash-Callback` header so that you can process the response asynchronously. Note that streaming chat completions cannot be used with them. Use [the chat API](#chat-api) for streaming completions.
You can publish (or enqueue) single LLM request or batch LLM requests using all existing QStash features natively. To do this, specify the destination `api` as `llm` with a valid provider. The body of the published or enqueued message should contain a valid chat completion request. For these integrations, you must specify the `Upstash-Callback` header so that you can process the response asynchronously. Note that streaming chat completions cannot be used with them.

All the examples below can be used with **OpenAI-compatible LLM providers**.

Expand Down
2 changes: 1 addition & 1 deletion qstash/overall/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ title: Changelog
</Update>

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

Expand Down
2 changes: 1 addition & 1 deletion qstash/recipes/periodic-data-updates.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ you can deploy it directly from your local machine using the
[vercel cli](https://vercel.com/docs/cli).

For a more indepth tutorial on how to deploy to Vercel, check out this
[quickstart](/qstash/quickstarts/vercel-nextjs#4-deploy-to-vercel).
[quickstart](/qstash/quickstarts/vercel-nextjs#deploying-to-vercel).

This comment was marked as outdated.


After you have deployed your app, it is time to add your secrets to your
environment variables.
Expand Down
2 changes: 1 addition & 1 deletion redis/overall/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ commands introduced in Redis 7.
<Update label="July 2024">
- Added REST API support for [`MONITOR`](/redis/commands/server/monitor) and [`SUBSCRIBE`](/redis/commands/pub-sub/subscribe)
commands using [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events).
See [Monitor](../features/restapi#monitor-command) and [Subscribe](../features/restapi#subscribe-and-publish-commands) docs.
See [Monitor](../features/restapi#monitor-command) and [Subscribe](../features/restapi#subscribe-&-publish-commands) docs.
- Added [`JSON.MSET`](/redis/commands/json/json-mset) and [`JSON.MERGE`](/redis/commands/json/json-merge) commands.
- Introduced the `IP Allowlist` feature for enhanced security on newly created databases. By default, all IP addresses will be allowed.
However, access can be restricted by specifying permitted IP addresses or CIDR ranges.
Expand Down
2 changes: 1 addition & 1 deletion redis/sdks/py/commands/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ Publish messages to many clients

</CardGroup></Accordion>
<Accordion title="Transactions">
<Card title="TRANSACTION" href="/redis/sdks/py/features#pipelines-and-transactions">
<Card title="TRANSACTION" href="/redis/sdks/py/features#pipelines-&-transactions">
Run multiple commands in a transaction.
</Card>
</Accordion>
Expand Down
2 changes: 1 addition & 1 deletion redis/sdks/ratelimit-ts/costs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ Values passed in `identifier`, `ip`, `userAgent` and `country` are checked with
The other command is TTL which is for checking the status of the current ip deny list to figure out whether
it is expired, valid or disabled.

If [Auto IP deny list](/redis/sdks/ratelimit-ts/features#auto-ip-deny-list) is enabled,
If [Auto IP deny list](/redis/sdks/ratelimit-ts/traffic-protection#auto-ip-deny-list) is enabled,
the Ratelimit SDK will update the ip deny list everyday, in the first `limit` invocation after 2 AM UTC.
This will consume 9 commands per day.

Expand Down
2 changes: 1 addition & 1 deletion redis/sdks/ratelimit-ts/gettingstarted.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ To configure the your Ratelimit according to your needs, you can make use of sev
<Card
title="Analytics & Dashboard"
icon="magnifying-glass-chart"
href="/redis/sdks/ratelimit-ts/features#analytics-and-dashboard"
href="/redis/sdks/ratelimit-ts/features#analytics-&-dashboard"
>
Collect information on which identifiers made how many requests and how many
were blocked
Expand Down
2 changes: 1 addition & 1 deletion redis/sdks/ratelimit-ts/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ for:
<Card
title="Analytics & Dashboard"
icon="magnifying-glass-chart"
href="/redis/sdks/ratelimit-ts/features#analytics-and-dashboard"
href="/redis/sdks/ratelimit-ts/features#analytics-&-dashboard"
>
Collect information on which identifiers made how many requests and how many
were blocked
Expand Down
2 changes: 1 addition & 1 deletion redis/search/index-management.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ SEARCH.CREATE profiles ON STRING PREFIX 1 profiles: SKIPINITIALSCAN SCHEMA name

It is possible to specify the language of the text fields, so that an appropriate tokenizer
and stemmer can be used. For more on tokenization and stemming, see the
[Text Field Options](./schema-definition#text-field-options) section.
[Tokenization & Stemming](./schema-definition#tokenization-&-stemming) section.

When not specified, language defaults to `english`.

Expand Down
2 changes: 1 addition & 1 deletion redis/search/query-operators/field-operators/regex.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ On fields with stemming enabled (the default), regex operates on the stemmed for
For example, "running" might be stored as "run", so a regex pattern `"running.*"` would not match.

To use regex reliably, consider using `NOSTEM` on fields where you need exact pattern matching.
See [Text Field Options](../../schema-definition#text-field-options) for more details.
See [Tokenization & Stemming](../../schema-definition#tokenization-&-stemming) for more details.

### Compatibility

Expand Down
2 changes: 1 addition & 1 deletion workflow/agents/patterns/orchestrator-workers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export const { POST } = serve(async (context) => {
});
```

If you wish to manually use the model results instead of utilizing a [manager LLM](/workflow/agents/overview#multi-agents) as we did in this example, see the [parallelization example](/workflow/agents/patterns/parallelization)
If you wish to manually use the model results instead of utilizing a [manager LLM](/workflow/agents/features#multi-agents) as we did in this example, see the [parallelization example](/workflow/agents/patterns/parallelization)

<img src="/img/workflow/agents/logs/logs-manager.png" alt="Orchestrator manager workflow logs" />

Expand Down
2 changes: 1 addition & 1 deletion workflow/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ title: Changelog
<Update label="August 2025">
- **TypeScript SDK (`workflow-js`):**
- Added `retryDelay` option to dynamically program the retry duration. It can be configured on
[trigger](/workflow/basics/client/trigger#body-retrydelay), [context.call](/workflow/steps/call)
[trigger](/workflow/basics/client/trigger#param-retry-delay), [context.call](/workflow/steps/call)

This comment was marked as outdated.

or `serve` (later moved to `client.trigger`, see the [migration guide](/workflow/howto/migrations#configuration-moved-from-serve-to-trigger))
- Added ability to detect if a given url is a workflow or not. Starting with `0.2.17` trigger made via the sdk can fail (instead of hanging),
if there is no workflow serve on the given url.
Expand Down
2 changes: 1 addition & 1 deletion workflow/quickstarts/nextjs-fastapi.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ To deploy the project at vercel and try the endpoints, you should start with set
vercel
```

Next, you shoud go to vercel.com, find your project and add `QSTASH_TOKEN`, to the project as environment variables. You can find this env variables from the [Upstash Console](https://console.upstash.com/qstash). To learn more about other env variables and their use in the context of Upstash Workflow, you can read [the Secure your Endpoint in our documentation](/workflow/howto/security#using-qstashs-built-in-request-verification-recommended).
Next, you should go to vercel.com, find your project and add `QSTASH_TOKEN`, to the project as environment variables. You can find these env variables from the [Upstash Console](https://console.upstash.com/qstash). To learn more about other env variables and their use in the context of Upstash Workflow, you can read [the Secure your Endpoint in our documentation](/workflow/howto/security#built-in-request-verification-recommended).

Once you add the env variables, you can deploy the project with:

Expand Down
2 changes: 1 addition & 1 deletion workflow/quickstarts/nextjs-flask.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ To deploy the project at vercel and try the endpoints, you should start with set
vercel
```

Next, you shoud go to vercel.com, find your project and add `QSTASH_TOKEN`, to the project as environment variables. You can find this env variables from the [Upstash Console](https://console.upstash.com/qstash). To learn more about other env variables and their use in the context of Upstash Workflow, you can read [the Secure your Endpoint in our documentation](/workflow/howto/security#using-qstashs-built-in-request-verification-recommended).
Next, you should go to vercel.com, find your project and add `QSTASH_TOKEN`, to the project as environment variables. You can find these env variables from the [Upstash Console](https://console.upstash.com/qstash). To learn more about other env variables and their use in the context of Upstash Workflow, you can read [the Secure your Endpoint in our documentation](/workflow/howto/security#built-in-request-verification-recommended).

Once you add the env variables, you can deploy the project with:

Expand Down
2 changes: 1 addition & 1 deletion workflow/steps/call.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ If you want requests to retry automatically, you can explicitly pass a retry con
</ParamField>

<ParamField body="workflow" >
When using [`serveMany`](/workflow/features/invoke/serveMany#using-serve-manyny), you can call another workflow defined in the same `serveMany` by passing it to this parameter.
When using [`serveMany`](/workflow/features/invoke/serveMany), you can call another workflow defined in the same `serveMany` by passing it to this parameter.
</ParamField>

## Response
Expand Down
Loading