---
title: "Render a failed short again, without paying twice"
method: POST
path: "/api/x402/short/retry"
---

# Render a failed short again, without paying twice

`POST /api/x402/short/retry`

## Request

- Base URL: `https://www.trezalabs.com`
- URL: `https://www.trezalabs.com/api/x402/short/retry`
- Auth: HTTP bearer

POST with the failed run's claim ticket. With no body the run resumes: steps that succeeded are reused and only what failed re-renders (a writer whose script a later step could not use is re-run, with everything after it), and the wallet balance must cover what will re-run, never more than the full price. With {"topic": "..."} it starts over, at the full price, from the wallet balance. Each failed run can be retried once.

## Query parameters

- `runId` string, required
- `token` string, required

## Headers

- `Prefer` string

## Request body

- object
  - `topic` string
  - `async` boolean

## Response `200`

The retry started and the response waited for it, streamed like the paid POST.

## Other responses

- `400`: runId and token are required, or the topic sent is empty or too long
- `402`: The wallet balance does not cover this retry
- `403`: Invalid, expired, or mismatched token
- `404`: Run not found, or the ticket is not for a short
- `409`: The run is still going, finished successfully, or has already been retried
- `429`: Rate limit exceeded
- `503`: Shorts are temporarily unavailable, or the retry could not be queued; nothing was charged and the retry is still available

---

[API](https://skmtc.dev/trezalabs/apis/treza-pipelines-api.md) · [All operations](https://skmtc.dev/trezalabs/apis/treza-pipelines-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trezalabs/apis/treza-pipelines-api/revisions/a76574c1731b?raw)
