diff --git a/_snippets/workflow/logs.mdx b/_snippets/workflow/logs.mdx
index 58db371e5..7789a325e 100644
--- a/_snippets/workflow/logs.mdx
+++ b/_snippets/workflow/logs.mdx
@@ -78,7 +78,7 @@
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.
diff --git a/llms-full.txt b/llms-full.txt
index 82ffb52ef..455dbaf3b 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -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**.
@@ -21022,7 +21022,7 @@ Source: https://upstash.com/docs/qstash/overall/changelog
-* [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
@@ -85191,7 +85191,7 @@ commands introduced in Redis 7.
* 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.
@@ -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.
@@ -91011,7 +91011,7 @@ To configure the your Ratelimit according to your needs, you can make use of sev
Collect information on which identifiers made how many requests and how many
were blocked
@@ -91310,7 +91310,7 @@ for:
Collect information on which identifiers made how many requests and how many
were blocked
@@ -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`.
@@ -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
@@ -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)
@@ -113317,7 +113317,7 @@ The `logs` method retrieves workflow run logs using the [List Workflow Runs API]
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.
@@ -114523,7 +114523,7 @@ Source: https://upstash.com/docs/workflow/changelog
* **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.
@@ -119956,7 +119956,7 @@ If you want requests to retry automatically, you can explicitly pass a retry con
- 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.
## Response
@@ -121039,7 +121039,7 @@ Retry settings can be configured in two locations:
[Changelog](/docs/workflow/changelog) for updates.
-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.
@@ -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:
@@ -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
diff --git a/qstash/integrations/llm.mdx b/qstash/integrations/llm.mdx
index cbed033e2..b78a8ce51 100644
--- a/qstash/integrations/llm.mdx
+++ b/qstash/integrations/llm.mdx
@@ -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**.
diff --git a/qstash/overall/changelog.mdx b/qstash/overall/changelog.mdx
index 37bd0b00b..22a379a86 100644
--- a/qstash/overall/changelog.mdx
+++ b/qstash/overall/changelog.mdx
@@ -180,7 +180,7 @@ title: Changelog
-- [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
diff --git a/qstash/recipes/periodic-data-updates.mdx b/qstash/recipes/periodic-data-updates.mdx
index 2bbb34ffe..8b5e95c71 100644
--- a/qstash/recipes/periodic-data-updates.mdx
+++ b/qstash/recipes/periodic-data-updates.mdx
@@ -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).
After you have deployed your app, it is time to add your secrets to your
environment variables.
diff --git a/redis/overall/changelog.mdx b/redis/overall/changelog.mdx
index 5a9c2145d..f71e24cdf 100644
--- a/redis/overall/changelog.mdx
+++ b/redis/overall/changelog.mdx
@@ -72,7 +72,7 @@ commands introduced in Redis 7.
- 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.
diff --git a/redis/sdks/py/commands/overview.mdx b/redis/sdks/py/commands/overview.mdx
index d6dffdee1..2a0e94101 100644
--- a/redis/sdks/py/commands/overview.mdx
+++ b/redis/sdks/py/commands/overview.mdx
@@ -611,7 +611,7 @@ Publish messages to many clients
-
+
Run multiple commands in a transaction.
diff --git a/redis/sdks/ratelimit-ts/costs.mdx b/redis/sdks/ratelimit-ts/costs.mdx
index a7cec0f2f..e4d6a14f4 100644
--- a/redis/sdks/ratelimit-ts/costs.mdx
+++ b/redis/sdks/ratelimit-ts/costs.mdx
@@ -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.
diff --git a/redis/sdks/ratelimit-ts/gettingstarted.mdx b/redis/sdks/ratelimit-ts/gettingstarted.mdx
index b8065a28d..26ff00d77 100644
--- a/redis/sdks/ratelimit-ts/gettingstarted.mdx
+++ b/redis/sdks/ratelimit-ts/gettingstarted.mdx
@@ -171,7 +171,7 @@ To configure the your Ratelimit according to your needs, you can make use of sev
Collect information on which identifiers made how many requests and how many
were blocked
diff --git a/redis/sdks/ratelimit-ts/overview.mdx b/redis/sdks/ratelimit-ts/overview.mdx
index 55f5c4272..1f6d9c549 100644
--- a/redis/sdks/ratelimit-ts/overview.mdx
+++ b/redis/sdks/ratelimit-ts/overview.mdx
@@ -45,7 +45,7 @@ for:
Collect information on which identifiers made how many requests and how many
were blocked
diff --git a/redis/search/index-management.mdx b/redis/search/index-management.mdx
index 4f3f749f8..ac6a05a81 100644
--- a/redis/search/index-management.mdx
+++ b/redis/search/index-management.mdx
@@ -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`.
diff --git a/redis/search/query-operators/field-operators/regex.mdx b/redis/search/query-operators/field-operators/regex.mdx
index fa746e95a..ec0a1a6c5 100644
--- a/redis/search/query-operators/field-operators/regex.mdx
+++ b/redis/search/query-operators/field-operators/regex.mdx
@@ -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
diff --git a/workflow/agents/patterns/orchestrator-workers.mdx b/workflow/agents/patterns/orchestrator-workers.mdx
index 3a0df57ea..9bbe782f9 100644
--- a/workflow/agents/patterns/orchestrator-workers.mdx
+++ b/workflow/agents/patterns/orchestrator-workers.mdx
@@ -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)
diff --git a/workflow/changelog.mdx b/workflow/changelog.mdx
index 655a1906f..f31e50337 100644
--- a/workflow/changelog.mdx
+++ b/workflow/changelog.mdx
@@ -33,7 +33,7 @@ title: Changelog
- **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)
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.
diff --git a/workflow/quickstarts/nextjs-fastapi.mdx b/workflow/quickstarts/nextjs-fastapi.mdx
index eb04d2ab0..18858345f 100644
--- a/workflow/quickstarts/nextjs-fastapi.mdx
+++ b/workflow/quickstarts/nextjs-fastapi.mdx
@@ -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:
diff --git a/workflow/quickstarts/nextjs-flask.mdx b/workflow/quickstarts/nextjs-flask.mdx
index 4706babe8..cc0045636 100644
--- a/workflow/quickstarts/nextjs-flask.mdx
+++ b/workflow/quickstarts/nextjs-flask.mdx
@@ -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:
diff --git a/workflow/steps/call.mdx b/workflow/steps/call.mdx
index 1d3d69958..4cf41c949 100644
--- a/workflow/steps/call.mdx
+++ b/workflow/steps/call.mdx
@@ -68,7 +68,7 @@ If you want requests to retry automatically, you can explicitly pass a retry con
- 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.
## Response
diff --git a/workflow/troubleshooting/general.mdx b/workflow/troubleshooting/general.mdx
index 26beab714..057b46df0 100644
--- a/workflow/troubleshooting/general.mdx
+++ b/workflow/troubleshooting/general.mdx
@@ -240,7 +240,7 @@ Retry settings can be configured in two locations:
[Changelog](/workflow/changelog) for updates.
-Use [verbose mode](/workflow/basics/serve/advanced#path-verbose) to diagnose workflow issues.
+Use [verbose mode](/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.
@@ -255,9 +255,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](/workflow/basics/serve/advanced#path-baseurl)
+- Verify [baseUrl](/workflow/basics/serve/advanced#param-base-url)
- Check UPSTASH_WORKFLOW_URL
-- Explicitly pass the full [url](/workflow/basics/serve/advanced#path-url)
+- Explicitly pass the full [url](/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](/workflow/basics/best-practices/idempotency). When this happens, the duplicate step should print the following log and terminate:
@@ -309,7 +309,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](/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](/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