> ## 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.

# Advanced failureUrl Option

The `failureUrl` is an advanced option that sends failure callback to a different endpoint rather than to the workflow endpoint (failure function).
This approach is useful for handling failures on separate infrastructure.

<Tip>You can use either `failureFunction` or `failureUrl`, but not both. These options are mutually exclusive.</Tip>

For most users, **Failure Function** is the better choice because:

* It runs alongside your workflow and has access to the same context and dependencies
* Failure function requests are automatically retried on failure as well.
* You can manually retry failure function if it fails via DLQ.

If you think this advanced option fits your need, you can configure it by passing `failureUrl` configuration.

<CodeGroup>
  ```typescript theme={"system"}
  import { Client } from "@upstash/workflow";

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

  const { workflowRunId } = await client.trigger({
    url: "https://<YOUR_WORKFLOW_URL>/workflow"
    failureUrl: "https://<YOUR_FAILURE_URL>/workflow-failure"
  })
  ```

  ```python Python theme={"system"}
  @serve.post("/api/example", failure_url="https://<YOUR_FAILURE_URL>/workflow-failure")
  async def example(context: AsyncWorkflowContext[str]) -> None:
      # Your workflow logic...
      pass
  ```
</CodeGroup>
