Endpoints for browsing comic book titles (franchises/properties).
A title represents a franchise (e.g., "Batman"), which may have multiple series under it.
Endpoints for browsing comic book titles (franchises/properties).
A title represents a franchise (e.g., "Batman"), which may have multiple series under it.
/api/v1/titles/{title_id}Returns: id, name, slug, start_year, end_year, status, type, image_url, content_rating_label, min_age, is_nsfw, imprint_id, series_count, issues_count, average_rating, aliases
Use relationship endpoints for richer data:
title_idintegerrequiredThe ID of the title.
Example: 7
languagesstringKeep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes.
Example: "ja,ko"
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 12
data.namestring or nullrequiredExample: "Batman"
data.slugstring or nullrequiredExample: "batman"
data.start_yearinteger or nullrequiredExample: 1939
data.end_yearinteger or nullrequiredExample: 2011
data.statusstring or nullrequiredExample: "ongoing"
data.typestring or nullrequiredExample: "Series"
data.image_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.imagesobject or nullrequireddata.images.cover_smstringExample: "https://...-cover_sm.webp"
data.images.cover_mdstringExample: "https://...-cover_md.webp"
data.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.content_rating_labelstring or nullrequiredExample: "15+"
data.min_ageinteger or nullrequiredExample: 15
data.is_nsfwboolean or nullrequireddata.imprint_idinteger or nullrequiredExample: 3
data.series_countinteger or nullrequiredExample: 25
data.issues_countinteger or nullrequiredExample: 1450
data.average_ratingstring or nullrequiredExample: "4.30"
data.aliasesstring or number or boolean or array or object or nullrequiredThe other names, as stored: a list of strings in production.
Example: ["The Dark Knight"]
data.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data.aliases_i18nobjectrequiredAlternative names per language.
data.original_localestring or nullrequiredThe language the title is from, a BCP 47 tag.
Example: "en"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token lacks the read:public ability.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}Not Found
messagestringrequiredExample: "No query results for model [App\\Models\\Title] 12"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Title] 12"
}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."
}curl --request GET \
'https://versedb.com/api/v1/titles/7' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": {
"id": 12,
"name": "Batman",
"slug": "batman",
"start_year": 1939,
"end_year": 2011,
"status": "ongoing",
"type": "Series",
"image_url": "https://...-cover_md.webp",
"images": {
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"content_rating_label": "15+",
"min_age": 15,
"imprint_id": 3,
"series_count": 25,
"issues_count": 1450,
"average_rating": "4.30",
"aliases": [
"The Dark Knight"
],
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"original_locale": "en"
}
}/api/v1/titlesReturns: id, name, slug, start_year, end_year, status, type, image_url, content_rating_label, min_age, is_nsfw, series_count, issues_count, average_rating, total_reviews
qstringSearch by title name.
Example: "spider-man"
publisher_idintegerFilter by publisher ID.
Example: 1
publisherintegerDeprecated alias for publisher_id, kept for existing callers.
Example: 1
publisher_idsstringComma-separated publisher IDs. Returns a title published by any one of them.
Example: "1,4"
hide_unreleasedbooleanReturn only titles whose start year has already arrived.
Example: true
mediumstringReturn titles with a series in this medium: comic, manga, manhwa, manhua, bande_dessinee or magazine.
Example: "manga"
languagesstringComma-separated language codes. Returns titles with a series in any one of them.
Example: "en,ja"
ongoingbooleanReturn only titles with an ongoing series. Combined with medium or languages, that same series has to match them.
Example: true
sortstringSort field. One of name, start_year, average_rating, cached_series_count, cached_issues_count; anything else falls back to name. Passing sort replaces the relevance ordering applied to q results.
Example: "start_year"
directionstringSort direction, asc or desc. Anything else falls back to asc.
Example: "desc"
limitintegerNumber of results per page (max 50).
Example: 20
pageintegerPage number; meta.last_page says where the list ends.
Example: 1
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsrequireddata[].idintegerrequiredExample: 12
data[].namestring or nullrequiredExample: "Batman"
data[].slugstring or nullrequiredExample: "batman"
data[].start_yearinteger or nullrequiredExample: 1939
data[].end_yearinteger or nullrequiredExample: 2011
data[].statusstring or nullrequiredExample: "ongoing"
data[].typestring or nullrequiredExample: "Series"
data[].image_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data[].imagesobject or nullrequireddata[].images.cover_smstringExample: "https://...-cover_sm.webp"
data[].images.cover_mdstringExample: "https://...-cover_md.webp"
data[].images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].average_ratingstring or nullrequiredExample: "4.30"
data[].series_countinteger or nullrequiredExample: 25
data[].issues_countinteger or nullrequiredExample: 1450
data[].content_rating_labelstring or nullrequiredExample: "15+"
data[].min_ageinteger or nullrequiredExample: 15
data[].is_nsfwboolean or nullrequireddata[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].aliases_i18nobjectrequiredAlternative names per language.
data[].original_localestring or nullrequiredThe language the title is from, a BCP 47 tag.
Example: "en"
linksobjectrequiredlinks.firststringrequiredlinks.laststringrequiredlinks.prevstring or nullrequiredlinks.nextstring or nullrequiredmetaobjectrequiredmeta.current_pageintegerrequiredExample: 1
meta.frominteger or nullrequiredExample: 1
meta.last_pageintegerrequiredExample: 25
meta.linksarray of objectsrequiredmeta.links[].urlstring or nullrequiredmeta.links[].labelstringrequiredmeta.links[].pageinteger or nullmeta.links[].activebooleanrequiredmeta.pathstringrequiredmeta.per_pageintegerrequiredExample: 20
meta.tointeger or nullrequiredExample: 20
meta.totalintegerrequiredExample: 500
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token lacks the read:public ability.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}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."
}curl --request GET \
'https://versedb.com/api/v1/titles' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 12,
"name": "Batman",
"slug": "batman",
"start_year": 1939,
"end_year": 2011,
"status": "ongoing",
"type": "Series",
"image_url": "https://...-cover_md.webp",
"images": {
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"average_rating": "4.30",
"series_count": 25,
"issues_count": 1450,
"content_rating_label": "15+",
"min_age": 15,
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"original_locale": "en"
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}X-RateLimit-LimitintegerRequest quota per hour for your tier.
X-RateLimit-RemainingintegerRequests remaining in the current window.
Retry-AfterintegerSeconds to wait before retrying.