Skip to content

Episodes API

Episodes are the core resource in Veronese. Use these endpoints to create, read, and update episodes programmatically.

GET /episodes/:id.json

Returns the full episode state including transcript status.

Example response:

{
"success": true,
"episode": {
"id": "abc123",
"title": "My Recording",
"canonical_state": "ready",
"duration_seconds": 1840,
"serie_id": "xyz789",
"created_at": "2026-03-15T12:00:00Z",
"transcript": {
"status": "completed",
"raw_text": "Hello, this is the transcript..."
}
}
}
PATCH /episodes/:id.json

Update the episode title or content.

Request:

{
"episode": {
"title": "Updated Title"
}
}
POST /series/:series_id/episodes.json

Create a new episode with a URL source.

Request:

{
"episode": {
"title": "My Episode",
"source_url": "https://youtube.com/watch?v=..."
},
"idempotency_key": "unique-key-per-request"
}

The idempotency_key is optional. If provided, a duplicate request with the same key returns the existing episode instead of creating a new one.

POST /dashboard/start_episode.json

Alternative endpoint for creating an episode without specifying a series upfront. Supports the same idempotency_key.

GET /episodes/:id/events.json

Returns the event log for an episode — useful for polling state changes.

Example response:

{
"success": true,
"events": [
{
"type": "state_change",
"from": "ingesting",
"to": "transcribing",
"occurred_at": "2026-03-15T12:01:00Z"
}
]
}
StateMeaning
draftEpisode created, no audio yet
ingestingAudio is being downloaded/normalized
ready_for_transcriptionAudio ready, waiting for transcription
transcribingAI model is processing the audio
readyTranscript complete and available
failedAn error occurred; see events for details

Poll GET /episodes/:id.json until canonical_state is ready or failed. The CLI provides a veronese episode poll command that handles this automatically.