Endpoints for browsing comic book podcasts and episodes.
Podcasts
List all podcasts with optional search
/api/v1/podcastsReturns a paginated list of comic book podcasts and YouTube channels, plus
the languages and categories present in the catalog. Filter with q, type,
language, or category, and order with sort.
Query parameters
qstringSearch by podcast name.
Example:
"comic"typestringFilter by type (podcast or youtube).
Example:
"youtube"languagestringFilter by language code (e.g., en, ja, fr).
Example:
"en"categoryarray of stringsFilter by category name; a podcast matching any of them is returned.
Example:
["Reviews"]sortstringOrder: name (default), latest_episodes, newest, popular (most followers) or updated (recently synced).
Example:
"latest_episodes"limitintegerNumber of results per page (max 50).
Example:
20pageintegerPage number; meta.last_page says where the list ends.
Example:
1
Responses
200Success
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsrequireddata[].idintegerrequiredExample:
56data[].namestring or nullrequiredExample:
"War Rocket Ajax"data[].slugstring or nullrequiredExample:
"war-rocket-ajax"data[].typestringrequiredExample:
"podcast"data[].languagestring or nullrequiredExample:
"en"data[].logo_urlstring or nullrequiredExample:
"https://...-full_lg.webp"data[].imagesobject or nullrequireddata[].images.tile_smstringExample:
"https://...-tile_sm.webp"data[].images.full_lgstringExample:
"https://...-full_lg.webp"data[].follower_countintegerrequiredExample:
1240data[].subscriber_countinteger or nullrequiredExample:
8800data[].categoriesarray of stringsrequiredThe category names.
Example:
["Comics","Pop Culture"]linksobjectrequiredlinks.firststringrequiredlinks.laststringrequiredlinks.prevstring or nullrequiredlinks.nextstring or nullrequiredmetaobjectrequiredmeta.current_pageintegerrequiredExample:
1meta.frominteger or nullrequiredExample:
1meta.last_pageintegerrequiredExample:
25meta.linksarray of objectsrequiredmeta.links[].urlstring or nullrequiredmeta.links[].labelstringrequiredmeta.links[].pageinteger or nullmeta.links[].activebooleanrequiredmeta.pathstringrequiredmeta.per_pageintegerrequiredExample:
20meta.tointeger or nullrequiredExample:
20meta.totalintegerrequiredExample:
500languagesarray of stringsrequiredExample:
["en","es","fr","ja"]categoriesarray of stringsrequiredExample:
["Comics","Pop Culture","Reviews"]
401Unauthenticated. The bearer token is missing, invalid, or revoked.
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample:
"Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}403The token lacks the read:public ability.
The token lacks the read:public ability.
messagestringrequiredExample:
"Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}429Rate limit exceeded. This endpoint allows 300/hour (free) or 1,000/hour (PRO). Wait for the number of seconds in the Retry-After header before retrying.
Rate limit exceeded. This endpoint allows 300/hour (free) or 1,000/hour (PRO). Wait for the number of seconds in the Retry-After header before retrying.
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample:
"Too Many Attempts."
Example body, from the documented examples
{
"message": "Too Many Attempts."
}Example request
curl --request GET \
'https://versedb.com/api/v1/podcasts' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 56,
"name": "War Rocket Ajax",
"slug": "war-rocket-ajax",
"type": "podcast",
"language": "en",
"logo_url": "https://...-full_lg.webp",
"images": {
"tile_sm": "https://...-tile_sm.webp",
"full_lg": "https://...-full_lg.webp"
},
"follower_count": 1240,
"subscriber_count": 8800,
"categories": [
"Comics",
"Pop Culture"
]
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
},
"languages": [
"en",
"es",
"fr",
"ja"
],
"categories": [
"Comics",
"Pop Culture",
"Reviews"
]
}Get a specific podcast.
/api/v1/podcasts/{podcast_id}Returns full detail for one podcast, including its feed, platform links, and categories.
Path parameters
podcast_idintegerrequiredThe ID of the podcast.
Example:
56
Responses
200Success
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample:
56data.namestring or nullrequiredExample:
"War Rocket Ajax"data.slugstring or nullrequiredExample:
"war-rocket-ajax"data.typestringrequiredExample:
"podcast"data.languagestring or nullrequiredExample:
"en"data.logo_urlstring or nullrequiredExample:
"https://...-full_lg.webp"data.imagesobject or nullrequireddata.images.tile_smstringExample:
"https://...-tile_sm.webp"data.images.full_lgstringExample:
"https://...-full_lg.webp"data.website_urlstring or number or boolean or array or object or nullrequiredsocial_links.website as stored (a URL in production), or null; always printed.
Example:
"https://warrocketajax.com"data.rss_feed_urlstring or nullrequiredExample:
"https://feeds.example.com/war-rocket-ajax"data.youtube_channel_idstring or nullrequiredExample:
"UC1234567890"data.social_linksobject or array or nullrequiredLinks by name, or null; an empty map prints as
[].data.social_links.websiteanydata.social_links.twitteranydata.platform_linksobject or string or number or boolean or array or nullrequiredLinks by name, or null; an empty map prints as
[].data.platform_links.spotifyanydata.follower_countintegerrequiredExample:
1240data.subscriber_countinteger or nullrequiredExample:
8800data.categoriesarray of stringsrequiredThe category names.
Example:
["Comics","Pop Culture"]
401Unauthenticated. The bearer token is missing, invalid, or revoked.
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample:
"Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}403The token lacks the read:public ability.
The token lacks the read:public ability.
messagestringrequiredExample:
"Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}404Not Found
Not Found
messagestringrequiredExample:
"No query results for model [App\\Models\\Podcast] 1"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Podcast] 1"
}429Rate limit exceeded. This endpoint allows 300/hour (free) or 1,000/hour (PRO). Wait for the number of seconds in the Retry-After header before retrying.
Rate limit exceeded. This endpoint allows 300/hour (free) or 1,000/hour (PRO). Wait for the number of seconds in the Retry-After header before retrying.
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample:
"Too Many Attempts."
Example body, from the documented examples
{
"message": "Too Many Attempts."
}Example request
curl --request GET \
'https://versedb.com/api/v1/podcasts/56' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": {
"id": 56,
"name": "War Rocket Ajax",
"slug": "war-rocket-ajax",
"type": "podcast",
"language": "en",
"logo_url": "https://...-full_lg.webp",
"images": {
"tile_sm": "https://...-tile_sm.webp",
"full_lg": "https://...-full_lg.webp"
},
"website_url": "https://warrocketajax.com",
"rss_feed_url": "https://feeds.example.com/war-rocket-ajax",
"youtube_channel_id": "UC1234567890",
"social_links": {
"website": "https://warrocketajax.com"
},
"platform_links": {
"spotify": "https://open.spotify.com/show/abc123"
},
"follower_count": 1240,
"subscriber_count": 8800,
"categories": [
"Comics",
"Pop Culture"
]
}
}Response headers
X-RateLimit-LimitintegerRequest quota per hour for your tier.
X-RateLimit-RemainingintegerRequests remaining in the current window.
Retry-AfterintegerSeconds to wait before retrying.