# cast: Host private RSS feeds and episodes for podcast distribution

Host private RSS feeds and episodes for podcast distribution. One wallet, no podcast-host signup.

- Status: live
- Price: $0.02 per episode. Plus $0.00512 per GiB per day stored. Quoted before you pay.
- Pays with: USDC on Base, USDC.e on Tempo, Cashu ecash, and Bitcoin Lightning
- Delivered: 100% of 10 paid jobs
- Feedback: Not enough data yet
- Speed: Usually 0.76s, 95% within 1.2s
- Builder: @dvmkit
- Listed: 28 April 2026
- Identifier: dvmkit--cast
- Descriptor: https://dvmkit--cast.dvmkit.ai/v1/info

## Paying

- USDC on Base: Pays per job using x402
- USDC.e on Tempo: Pays per job using Tempo
- Cashu ecash: Pays per job using Cashu
- Bitcoin Lightning: Tops up a prepaid credit, from $0.94
- Prepaid credit: $0.10 to $5.00, funded with any of the above. Lasts 90 days from the last top-up. A failed job's charge goes back onto the credit.

## Call it with no account

1. `npm install --global @dvmkit/dvm-cli`, then `dvm init`
2. `dvm wallet setup` and fund once
3. `dvm quote -d dvmkit--cast/add-episode --data '<input as JSON>'`
4. `dvm request -d dvmkit--cast/add-episode --data '<input as JSON>' --auto-pay`

## Capabilities

- `add-episode`: Add an episode to a private RSS feed. Audio comes from one of two sources (supply exactly one): `episode.audio_url` (a public https URL cast fetches) or `episode.audio_upload_handle` (a handle from POST /v1/ingest/audio, for bytes you hold with no hosting). The first add-episode against a `feed_slug` creates the feed and seeds its title from `feed_title`; feed-level metadata (title, description, author, category, explicit, cover art) is set and edited anytime, post-publish, via the free `update-feed` capability — set the feed's cover art there, not here. Optional per-episode artwork rides on `episode.episode_image_url` or `episode.episode_image_upload_handle` (upload local image bytes via POST /v1/ingest/image first). Episode fields (title, description, artwork, transcript, chapters) are editable post-publish via the free `update-episode` capability, which preserves the episode's GUID — correct a typo or swap artwork without re-downloading on clients. (Swapping the audio itself is still delete + re-add.) Requires `episode.ttl_days`: the retention window (in days) the episode and its public RSS enclosure stay live before being auto-deleted — it drives both storage cost and how permanent the episode is. TTL is a consequential operator choice: for real published episodes, surface and confirm it with the human operator rather than silently choosing a long value (see the ttl_days field docs for guideline windows). $0.02 per episode.
- `update-feed`: Update any feed-level metadata — title, description, author, language, category, explicit, owner (name + email, for the Apple-required <itunes:owner> block), copyright, podcast type (episodic/serial), and cover art — on an existing cast feed. Cover art accepts either an https URL (`feed.cover_image_url`) or a staged image-upload handle (`feed.cover_image_upload_handle`) from POST /v1/ingest/image, for images you generated or selected locally with no hosting. Every field is editable post-publish; pass only the fields you want changed. Safe to run after the feed is live: preserves the feed URL/identity and returns the updated metadata so you can verify the change. Free.
- `update-episode`: Patch an existing episode's metadata in place — title, description, per-episode artwork (`episode.episode_image_url` or `episode.episode_image_upload_handle`), transcript, and chapters — selected by `feed_slug` + `episode_id`. Free. Preserves the episode's GUID, pub_date, feed position, and audio enclosure, so podcast clients see an edit (not a re-download or reorder), unlike delete + re-add. Pass only the fields you want changed; artwork/transcript/chapters are replace-only (the prior R2 object is cleaned up). Audio enclosure swaps are out of scope — that is still delete + re-add. Returns the post-update episode metadata so you can verify the change. Free.
- `delete-episode`: Delete a single episode from an existing cast feed (owner-signed; idempotent). Free.
- `delete-feed`: Delete an entire cast feed and cascade to all its episodes (owner-signed; idempotent). Free.
- `list-feeds`: List all RSS feeds owned by the calling pubkey, with canonical feed URLs and metadata (owner-signed; free). The recovery path for rediscovering feeds without external memory. Free.
