Manage projects, credits, feeds, shows, preferences and email reports.
List projects your key can access. Use a returned _id for the other project endpoints.
200The projects.The projects.
curl -X GET "https://api.fountain.fm/v1/projects" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY"{
"projects": [
{
"_id": "j7k8l9m0n1o2",
"meta": {
"credits": 100,
"owners": {
"u1v2w3x4y5z6": {
"role": "ADMIN",
"permissions": []
}
},
"label": "My Podcast Network"
},
"settings": {
"label": "My Podcast Network",
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
],
"workflows": {
"growth": {
"enabled": true
}
}
},
"billing": {
"subscription": "sub_1A2b3C4d5E6f"
},
"credits": 100,
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
]
}
]
}Get remaining credits, feeds, shows and settings, such as the Daily Growth setting.
idstringrequiredYour project ID.
200The project overview.The project.
curl -X GET "https://api.fountain.fm/v1/projects/{id}" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY"{
"project": {
"_id": "j7k8l9m0n1o2",
"meta": {
"credits": 100,
"owners": {
"u1v2w3x4y5z6": {
"role": "ADMIN",
"permissions": []
}
},
"label": "My Podcast Network"
},
"settings": {
"label": "My Podcast Network",
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
],
"workflows": {
"growth": {
"enabled": true
}
}
},
"billing": {
"subscription": "sub_1A2b3C4d5E6f"
},
"credits": 100,
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
]
}
}Change the project name or turn Daily Growth on or off. The keys are field paths of ProjectOverview.
With settings.workflows.growth.enabled set to true, Fountain makes draft clip posts from the project’s shows each day, renders their videos and emails the day’s report to the addresses in the preferences. Nothing is approved or published until you approve it.
idstringrequiredYour project ID.
Each key is a field path in the project. Omitted keys stay unchanged.
settings.labelstringoptionalProject name.
settings.workflows.growth.enabledbooleanoptionalDaily Growth: each day, Fountain makes draft clip posts from the project's shows.
200The updated project.The project.
400The body has an unknown key or an invalid value.403The key is not an admin or editor of the project.curl -X PATCH "https://api.fountain.fm/v1/projects/{id}" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"settings.workflows.growth.enabled":true}'{
"settings.workflows.growth.enabled": true
}{
"project": {
"_id": "j7k8l9m0n1o2",
"meta": {
"credits": 100,
"owners": {
"u1v2w3x4y5z6": {
"role": "ADMIN",
"permissions": []
}
},
"label": "My Podcast Network"
},
"settings": {
"label": "My Podcast Network",
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
],
"workflows": {
"growth": {
"enabled": true
}
}
},
"billing": {
"subscription": "sub_1A2b3C4d5E6f"
},
"credits": 100,
"feeds": [
"a1b2c3d4"
],
"shows": [
"def456"
]
}
}Get transcript indexing progress for each connected show.
idstringrequiredYour project ID.
200The indexing stats.transcriptsobject[]requiredOne row per connected show.
Show ID.
episodesnumberrequiredEpisodes in the show.
indexednumberrequiredEpisodes with an indexed transcript.
indexingnumberrequiredEpisodes queued or being transcribed.
failednumberrequiredEpisodes whose transcription failed and will not be retried.
curl -X GET "https://api.fountain.fm/v1/projects/{id}/stats" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY"{
"transcripts": [
{
"show": "show:id:def456",
"episodes": 120,
"indexed": 96,
"indexing": 4,
"failed": 2
}
]
}Load the Markdown preferences agents use across sessions. Agents should read them at the start of each session. This is the only persistent store for agent user data; it is empty until preferences are saved.
Use no frontmatter and only these ## headings:
Narratives: stories and angles for clips and posts.Editorial: tone, structure and publishing rules.Captions: font, position and case.Other: other preferences.idstringrequiredYour project ID.
200The project preferences.preferencesstringrequiredMarkdown preferences. Empty if unset.
curl -X GET "https://api.fountain.fm/v1/projects/{id}/preferences" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY"{
"preferences": "## Editorial\n\nCasual and direct. No emoji.\n\n## Captions\n\nBold sans-serif, bottom third, sentence case."
}Replace the entire preferences document. Read Load Project Preferences first, preserve its headings and existing preferences, then add new preferences as they are given. Pass an empty string to clear it.
idstringrequiredYour project ID.
preferencesstringrequiredProject preferences in Markdown.
200Preferences saved.okbooleanrequiredAlways true on success.
curl -X PATCH "https://api.fountain.fm/v1/projects/{id}/preferences" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"preferences":"## Editorial\n\nCasual and direct. No emoji.\n\n## Captions\n\nBold sans-serif, bottom third, sentence case."}'{
"preferences": "## Editorial\n\nCasual and direct. No emoji.\n\n## Captions\n\nBold sans-serif, bottom third, sentence case."
}{
"ok": true
}Connect a show you own. Find it with Search Content and pass its _id.
idstringrequiredYour project ID.
ID of the show to connect. Fountain show ID show:id:{id}. The ID of fountain.fm/show/{id} is show:id:{id}.
200The connected show.The connected show.
400The `show` ID is missing, malformed, or not a show.403The key is not an admin of the project.404No show with that ID exists.curl -X POST "https://api.fountain.fm/v1/projects/{id}/shows" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"show":"show:id:def456"}'{
"show": "show:id:def456"
}{
"show": {
"_id": "episode:id:abc123",
"_type": "EPISODE",
"_guid": "abcdef",
"info": {
"title": "#2394 - Palmer Luckey",
"subtitle": "The Joe Rogan Experience",
"publisher": "Joe Rogan",
"audio": "https://example.com/episodes/abc123/audio.mp3",
"video": "https://example.com/episodes/abc123/video.m3u8",
"duration": 11294,
"published": "2025-10-16T17:00:00.000Z"
},
"links": [
"show:id:def456",
"show:guid:abcdef"
]
}
}Email a project report formatted as Markdown.
idstringrequiredYour project ID.
method'EMAIL'requiredDelivery method.
destinationstringrequiredRecipient email address.
titlestringrequiredReport title in plain text.
markdownstringrequiredReport body in Markdown.
200Email sent.curl -X POST "https://api.fountain.fm/v1/projects/{id}/reports" \
-H "Authorization: Bearer $FOUNTAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method":"EMAIL","destination":"alice@example.com","title":"Weekly Report","markdown":"## Episode Trends\n\nYour latest episode..."}'{
"method": "EMAIL",
"destination": "alice@example.com",
"title": "Weekly Report",
"markdown": "## Episode Trends\n\nYour latest episode..."
}