---
title: "retry_episode"
description: "Retry an episode"
canonical: "https://poddub.com/docs/agents/tools/retry_episode"
last-updated: "2026-10-29"
---

# retry_episode

Retry an episode

Resumes a failed episode at the step where it stopped; when making the audio failed, the retry can name another voice engine or mode to try. Any member who can see the episode can use it, and a retry counts as one of the period's script generations. It never names an engine the show does not offer.

## What the server says

The description an agent is given, word for word. This tool makes changes.

> Resume a failed episode at the step it failed in; a rendering may name another engine or mode as fallback. Refused with episode_state_conflict when the episode has not failed, and with generation_paused while poddub's operator has paused generation (nothing is counted; try again later).

## Input

| Field             | Type   | Required | What it takes                                                                                                          |
| ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `fallback`        | object | no       |                                                                                                                        |
| `fallback.engine` | text   | no       | one of `fish_audio`, `openai`, `grok`, `gemini_openrouter`, `mai_openrouter`, `gemini_38`, `eleven_v4`, `voxtral_mini` |
| `fallback.mode`   | text   | no       | one of `dialogue`, `narrator`                                                                                          |
| `episodeId`       | text   | yes      | not empty; The episode's id, as list_episodes or create_episode answers it.                                            |

## Refusals

A refusal comes back as the tool's result, marked as an error, with the code and what explains it.

| Code                     | What it means                                                                                                                                                                          |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `episode_not_found`      | No such episode among the ones the person can see.                                                                                                                                     |
| `episode_state_conflict` | The episode is not in a state that allows this: a script no longer in review, or a retry of an episode that has not failed. The refusal says the state it is in.                       |
| `invalid_body`           | What was sent breaks a rule the input table cannot show: a new text that would break the script, or a fallback for a step that is not the audio, or an engine the show does not offer. |
| `generation_paused`      | poddub's operator has paused generation for now. Nothing was counted or charged. Try again later; reading, editing by hand and publishing still work.                                  |
| `plan_required`          | The organization has no plan. An owner chooses one in the app.                                                                                                                         |
| `attempts_exhausted`     | The period's script generations are spent. The refusal carries the allowance and when it resets.                                                                                       |

Every tool can also answer `rate_limited` and `not_a_member`: see [Limits](/docs/agents/limits) and [Keys](/docs/agents/keys).
