Search
Full-text search across all content
GET /search
Section titled “GET /search”Unified search
Word-match search across shows, episodes, transcripts, patterns and sponsors, returned as five independent groups. Show and episode titles also get a substring match so a mid-word fragment still finds them; descriptions and transcripts match whole words only. Every group honours the limit parameter. Patterns and sponsors are Advanced-page-only groups; the Dashboard box and keyboard palette ignore them and request only shows, episodes and transcripts via the groups parameter. The former type parameter is gone: a request that still sends it is rejected with 400 rather than served a different payload shape, so use groups instead.
Parameters
Section titled “Parameters”q(query, string, required): Search query. A query shorter than two characters after trimming returns all five groups empty without running a search.limit(query, integer): Maximum results per groupgroups(query, array of string, one ofshows,episodes,transcripts,patterns,sponsors): Comma-separated subset of groups to compute. An unrequested group is still present in the response as an empty array rather than omitted. A blank or omitted value means all five. Names are case-sensitive, empty tokens from a stray comma are ignored, and duplicates are tolerated.
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Grouped search results | object |
| 400 | Bad request - invalid input | Error |
200 response body
Section titled “200 response body”query(string)shows(array of SearchShowResult)episodes(array of SearchEpisodeResult)transcripts(array of SearchTranscriptResult)patterns(array of SearchPatternResult)sponsors(array of SearchSponsorResult)
POST /search/rebuild
Section titled “POST /search/rebuild”Rebuild search index
Rebuild the full-text search index from scratch. Reindexes all content including podcasts, episodes, patterns, and sponsors. Rate limited to 1 request per minute.
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Search index rebuilt | object |
200 response body
Section titled “200 response body”message(string)indexedCount(integer): Total items indexed
GET /search/stats
Section titled “GET /search/stats”Get search index statistics
Returns statistics about the search index including item counts by type
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Search index statistics | object |
200 response body
Section titled “200 response body”stats(object)