---
title: "Generate AI show notes"
method: POST
path: "/api/v1/transcriptions/{id}/show-notes"
---

# Generate AI show notes

`POST /api/v1/transcriptions/{id}/show-notes`

## Request

- Base URL: `https://podcaststotext.com`
- URL: `https://podcaststotext.com/api/v1/transcriptions/{id}/show-notes`
- Auth: HTTP bearer

A summary plus bullet points for a completed transcript. Cached on the transcript: the second call returns `cached: true`, spends nothing, and is the cheapest way to read them back. Pass {"force": true} to regenerate. Requires the "ai:write" scope and a paid plan. POST rather than GET because the first call spends money, and a GET that bills is one a proxy or a prefetch can bill you for.

## Path parameters

- `id` string, required

## Request body

- object
  - `force` boolean

## Response `200`

Show notes

- object
  - `id` string
  - `show_notes` string
  - `cached` boolean

## Other responses

- `400`: Transcript has no content yet
- `401`: Missing or invalid API key
- `403`: The account's plan does not allow this: either it includes no API access, or the requested scope needs write access. `error.code` is "plan_required". No plan is in that state today, so in practice you will see 402 insufficient_credits instead, which means the plan is fine and the balance is empty.
- `404`: No such transcription on this account
- `429`: Too many requests. Limits are per API key, counted per minute and per day, and depend on the plan. Operations that cost money to run (transcription, renders, AI) carry a second, tighter limit of their own. Read RateLimit-Remaining on every successful response to pace requests rather than waiting to be refused.

---

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