---
title: "Publish or schedule an episode"
method: POST
path: "/v1/episodes/{episode_id}/publish"
tags: ["Episodes"]
---

# Publish or schedule an episode

`POST /v1/episodes/{episode_id}/publish`

## Request

- Base URL: `https://api.jellypod.com`
- URL: `https://api.jellypod.com/v1/episodes/{episode_id}/publish`
- Auth: HTTP bearer

## Path parameters

- `episode_id` string, uuid, required: Episode UUID

## Request body

- PublishEpisodeInput: Optional publishing options. Omit to publish immediately; provide `scheduled_time` to schedule for later.
  - `scheduled_time` string, date-time

## Response `200`

Episode published or scheduled

- PublishEpisodeResponse: Result of a publish or schedule operation.
  - `data` object, required
    - `id` string, required
    - `scheduled_time` string
    - `status` 'published' | 'scheduled', required

## Other responses

- `400`: Validation failed or malformed request.
- `401`: Missing or invalid API key.
- `403`: Authenticated, but this API key does not have access to this resource.
- `404`: Resource not found.
- `415`: Request `Content-Type` is not supported for this endpoint.
- `422`: Request was well-formed but the resource is in a state that does not allow this operation (e.g. publishing an episode that has not finished rendering).
- `429`: Rate limit exceeded. Response includes `Retry-After`, `RateLimit`, and `RateLimit-Policy` headers (IETF draft).
- `500`: Internal server error.

---

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