curl -X POST \
-H "X-API-Key: $PARTICLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"episode_id": "5HZ8M9tlTQ0yTgtObZ5zJs"
}' \
"https://api.particle.pro/v1/podcasts/transcription/requests"{
"episode_id": "<string>",
"state": "queued",
"admitted_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"web_url": "<string>"
},
"failure_reason": "<string>",
"id": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"podcast_id": "<string>",
"refunded_at": "2023-11-07T05:31:56Z"
}{
"episode_id": "<string>",
"state": "queued",
"admitted_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"web_url": "<string>"
},
"failure_reason": "<string>",
"id": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"podcast_id": "<string>",
"refunded_at": "2023-11-07T05:31:56Z"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Request an episode's transcription
Queues an episode discovered in its podcast’s back catalogue (transcript_status requestable) to be transcribed. Returns 202 with the new request that queues the episode, the only outcome billed as a transcription, which counts as 100 requests against your monthly request usage. Returns 200, billed as a lookup, when there is nothing to transcribe: you have requested the episode before (the existing request), another organization’s request already queued it (your own request, tracking it), or we already hold the episode (no request is created, and state says where its transcript stands). There is no limit on how many episodes you request. Requests are transcribed concurrently, usually within a few minutes; a large batch is worked through as earlier requests finish, with organizations served by plan and then evenly. Poll GET /v1/podcasts/transcription/requests/ or the episode’s transcript_status. The episode keeps its ID once transcribed, and every episode endpoint then serves it. 422 episode_audio_unavailable when its audio cannot be fetched. Send an Idempotency-Key to retry safely: a retry under the same key returns the first response and is not billed.
curl -X POST \
-H "X-API-Key: $PARTICLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"episode_id": "5HZ8M9tlTQ0yTgtObZ5zJs"
}' \
"https://api.particle.pro/v1/podcasts/transcription/requests"{
"episode_id": "<string>",
"state": "queued",
"admitted_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"web_url": "<string>"
},
"failure_reason": "<string>",
"id": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"podcast_id": "<string>",
"refunded_at": "2023-11-07T05:31:56Z"
}{
"episode_id": "<string>",
"state": "queued",
"admitted_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"web_url": "<string>"
},
"failure_reason": "<string>",
"id": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"source": "apple",
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"podcast_id": "<string>",
"refunded_at": "2023-11-07T05:31:56Z"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Authorizations
Pass your API key in the X-API-Key header (recommended).
Headers
A key you choose, such as a UUID, to retry this request safely. Resend the same key with the same request and the first response is returned with Idempotent-Replayed: true instead of the request running again, for 24 hours after it succeeded. The same key with a different request returns 422 idempotency_key_reused; a retry while the first request is still running returns 409 idempotency_key_in_use. A request that fails does not use up its key.
8 - 128Body
The episode to transcribe: the id of an episode whose transcript_status is requestable, as GET /v1/podcasts/episodes?podcast_id=…&transcript_status=requestable lists them.
Response
Nothing to transcribe, billed as a lookup: an existing request, your own request joining another organization's queue, or an episode we already hold.
The episode, for GET /v1/podcasts/episodes/{id}. It keeps this ID once transcribed.
queued: waiting its turn. admitted: being transcribed. transcribed: the transcript is available. failed: it will not be transcribed; failure_reason says why.
queued, admitted, transcribed, failed When transcription started.
When the request was transcribed or failed.
When the request was made.
The episode's id, title and publication date, so a list can be read without looking each one up. slug is set once the episode is transcribed or being transcribed, and absent if it was since removed. Its podcast is the podcast field beside it, not episode.podcast.
Show child attributes
Show child attributes
Why a failed request will not be transcribed, e.g. enclosure_gone when the publisher removed the audio, or timed_out.
The request's ID, for GET /v1/podcasts/transcription/requests/{id}. Absent when no request was needed because we already hold the episode: state then reports where its transcript stands.
The episode's podcast, with its slug and title. Absent if the podcast was removed from the catalogue.
Show child attributes
Show child attributes
The episode's podcast.
When a failed request's transcription charge was returned to your organization: the included request, prepaid credit or overage it drew. Absent until then, and on requests that were billed as a lookup.
Was this page helpful?