Endpoints for browsing and searching comic book series.
A series represents a specific volume or run of a title (e.g., "Amazing Spider-Man (2018)").
Endpoints for browsing and searching comic book series.
A series represents a specific volume or run of a title (e.g., "Amazing Spider-Man (2018)").
/api/v1/series/api/v1/series/{id}/issues/api/v1/series/{series_id}/api/v1/series/{id}/creators/api/v1/series/{id}/characters/api/v1/seriesReturns paginated series with optional search and filtering.
qstringSearch by series name.
Example: "spider-man"
title_idintegerFilter by title ID.
Example: 1
publisher_idintegerFilter by publisher ID.
Example: 1
statusstringFilter by series status (Ongoing, Completed, Canceled).
Example: "Ongoing"
genre_idsstringComma-separated genre IDs. Returns a series carrying any one of them.
Example: "3,11"
publisher_idsstringComma-separated publisher IDs. Returns a series published by any one of them; use this instead of publisher_id to pass more than one.
Example: "1,4"
creator_idsstringComma-separated creator IDs. Returns a series credited to any one of them.
Example: "812,1907"
character_idsstringComma-separated character IDs. Returns a series any one of them appears in.
Example: "55,204"
languagesstringComma-separated ISO 639-1 language codes. Returns a series published in any one of them.
Example: "en,ja"
mediumstringFilter by medium (comic, manga, manhwa, manhua, bande_dessinee, magazine).
Example: "manga"
publication_typestringFilter by publication type (regular_series, limited_series, one_shot, graphic_novel, graphic_novel_series, collected_edition, special).
Example: "limited_series"
formatstringFilter by physical format (Standard, Deluxe, Omnibus, TPB, Hardcover, Other).
Example: "Omnibus"
start_yearintegerFilter by the year the series began.
Example: 2018
end_yearintegerFilter by the year the series ended.
Example: 2022
decadestringFilter by the decade the series began, written as a four-digit year ending in s. Accepts 1900s through the current decade.
Example: "1990s"
hide_unreleasedbooleanReturn only series whose start year has already arrived.
Example: true
sortstringSort field (name, start_year, average_rating, latest_release_date, cached_issues_count).
Example: "start_year"
directionstringSort direction (asc, desc).
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: 123
data[].title_idinteger or nullrequiredExample: 1
data[].namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].display_namestringrequiredExample: "The Amazing Spider-Man (2018)"
data[].slugstring or nullrequiredExample: "amazing-spider-man-2018"
data[].numberinteger or nullrequiredExample: 6
data[].start_yearinteger or nullrequiredExample: 2018
data[].end_yearinteger or nullrequiredExample: 2022
data[].cover_urlstring or nullrequiredExample: "https://...-cover_lg.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[].mediumstring or nullrequiredExample: "comic"
data[].publication_typestring or nullrequiredExample: "regular_series"
data[].formatstring or nullrequiredExample: "Standard"
data[].statusstring or nullrequiredExample: "Ongoing"
data[].original_namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].original_languagestring or nullrequiredExample: "en"
data[].languagestring or nullrequiredExample: "en"
data[].cached_issues_countinteger or nullrequiredExample: 94
data[].average_ratingstring or nullrequiredExample: "4.25"
data[].total_reviewsinteger or nullrequiredExample: 12
data[].issues_average_ratingstring or nullrequiredExample: "4.10"
data[].issues_rated_countinteger or nullrequiredExample: 40
data[].content_rating_labelstring or nullrequiredExample: "Teen"
data[].min_ageinteger or nullrequiredExample: 13
data[].is_nsfwboolean or nullrequireddata[].publisher_namestring or nullrequiredExample: "Marvel"
data[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].aliases_i18nobjectrequiredAlternative names per language.
data[].original_localestring or nullrequiredThe language the series is from, a BCP 47 tag.
Example: "ja"
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/series' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 123,
"title_id": 1,
"name": "The Amazing Spider-Man",
"display_name": "The Amazing Spider-Man (2018)",
"slug": "amazing-spider-man-2018",
"number": 6,
"start_year": 2018,
"end_year": 2022,
"cover_url": "https://...-cover_lg.webp",
"images": {
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"medium": "comic",
"publication_type": "regular_series",
"format": "Standard",
"status": "Ongoing",
"original_name": "The Amazing Spider-Man",
"original_language": "en",
"language": "en",
"cached_issues_count": 94,
"average_rating": "4.25",
"total_reviews": 12,
"issues_average_rating": "4.10",
"issues_rated_count": 40,
"content_rating_label": "Teen",
"min_age": 13,
"publisher_name": "Marvel",
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"original_locale": "ja"
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}/api/v1/series/{id}/issuesReturns paginated issues for a specific series.
idintegerrequiredThe series ID.
Example: 123
qstringSearch within this series' issues (number, name).
Example: "247"
sortstringSort field (issue_number, release_date, name).
Example: "issue_number"
directionstringSort direction (asc, desc).
Example: "asc"
limitintegerResults per page (max 100).
Example: 20
pageintegerPage number; meta.last_page says where the list ends.
Example: 1
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
dataarray of objectsrequireddata[].idintegerrequiredExample: 5432
data[].slugstring or nullrequiredExample: "amazing-spider-man-1"
data[].series_idinteger or nullrequiredExample: 123
data[].issue_numberstring or nullrequiredExample: "1"
data[].namestring or nullrequiredExample: "The Chameleon Strikes!"
data[].cover_datestring or nullrequiredExample: "2018-09-01"
data[].release_datestring or nullrequiredExample: "2018-07-11"
data[].foc_datestring or nullrequiredExample: "2018-06-18"
data[].is_unreleasedbooleanrequireddata[].cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].imagesobject or nullrequireddata[].images.thumbstringExample: "https://...-thumb.webp"
data[].images.cover_smstringExample: "https://...-cover_sm.webp"
data[].images.cover_mdstringExample: "https://...-cover_md.webp"
data[].images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].is_reprintbooleanrequireddata[].content_rating_labelstring or nullrequiredExample: "Teen"
data[].min_ageinteger or nullrequiredExample: 13
data[].is_nsfwbooleanrequireddata[].average_ratingnumber or nullrequiredExample: 4.5
data[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
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/series/123/issues' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 5432,
"slug": "amazing-spider-man-1",
"series_id": 123,
"issue_number": "1",
"name": "The Chameleon Strikes!",
"cover_date": "2018-09-01",
"release_date": "2018-07-11",
"foc_date": "2018-06-18",
"cover_url": "https://...-cover_lg.webp",
"images": {
"thumb": "https://...-thumb.webp",
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"content_rating_label": "Teen",
"min_age": 13,
"average_rating": 4.5,
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}/api/v1/series/{series_id}Returns a single series with full details including related title, publishers, and genres. For relationship data (issues, creators, characters), use the relationship endpoints.
series_idintegerrequiredThe series ID.
Example: 123
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: 123
data.title_idinteger or nullrequiredExample: 45
data.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.original_namestring or nullrequiredExample: "アメイジング・スパイダーマン"
data.display_namestringrequiredExample: "The Amazing Spider-Man (2018)"
data.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.numberinteger or nullrequiredExample: 5
data.start_yearinteger or nullrequiredExample: 2018
data.end_yearinteger or nullrequiredExample: 2022
data.cover_urlstring or nullrequiredExample: "https://...-cover_lg.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.publisher_descriptionstring or nullrequiredExample: "The publisher's own words."
data.mediumstring or nullrequiredExample: "comic"
data.adapted_fromstring or nullrequiredExample: "anime"
data.publication_typestring or nullrequiredExample: "regular_series"
data.formatstring or nullrequiredExample: "Standard"
data.statusstring or nullrequiredExample: "Ongoing"
data.original_languagestring or nullrequiredExample: "en"
data.cached_issues_countinteger or nullrequiredExample: 93
data.cached_creators_countintegerrequiredExample: 40
data.cached_characters_countintegerrequiredExample: 120
data.cached_teams_countintegerrequiredExample: 12
data.lists_countintegerrequiredExample: 8
data.average_ratingstring or nullrequiredExample: "4.25"
data.total_reviewsinteger or nullrequiredExample: 3
data.issues_average_ratingstring or nullrequiredExample: "4.10"
data.issues_rated_countinteger or nullrequiredExample: 20
data.imprint_idinteger or nullrequiredExample: 7
data.content_rating_labelstring or nullrequiredExample: "Teen"
data.min_ageinteger or nullrequiredExample: 13
data.languagestring or nullrequiredExample: "en"
data.aliasesarray of strings or nullrequireddata.is_nsfwboolean or nullrequireddata.titleobject or nullrequireddata.title.idintegerrequiredExample: 1
data.title.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.title.slugstring or nullrequiredExample: "the-amazing-spider-man"
data.publisherobjectdata.publisher.idintegerrequiredExample: 1
data.publisher.namestring or nullrequiredExample: "Marvel"
data.publisher.slugstring or nullrequiredExample: "marvel"
data.publishersarray of objectsrequireddata.publishers[].idintegerrequiredExample: 1
data.publishers[].namestring or nullrequiredExample: "Marvel"
data.publishers[].slugstring or nullrequiredExample: "marvel"
data.imprintobject or nullrequireddata.imprint.idintegerrequiredExample: 7
data.imprint.namestring or nullrequiredExample: "Marvel Knights"
data.effective_imprintobject or nullrequireddata.effective_imprint.idintegerrequiredExample: 7
data.effective_imprint.namestring or nullrequiredExample: "Marvel Knights"
data.genresarray of objectsrequireddata.genres[].idintegerrequiredExample: 1
data.genres[].namestring or nullrequiredExample: "Superhero"
data.genres[].slugstring or nullrequiredExample: "superhero"
data.awardsarray of objectsrequireddata.awards[].idintegerrequiredExample: 3
data.awards[].namestring or nullrequiredExample: "Eisner Award"
data.awards[].categorystring or nullrequiredExample: "Best Continuing Series"
data.awards[].yearinteger or nullrequiredExample: 2019
data.foreign_edition_ofarray of objectsrequireddata.foreign_edition_of[].idintegerrequiredExample: 1
data.foreign_edition_of[].namestringrequireddata.foreign_edition_of[].slugstring or nullrequiredExample: "slug"
data.foreign_edition_of[].languagestring or nullrequireddata.foreign_editionsarray of objectsrequireddata.foreign_editions[].idintegerrequiredExample: 1
data.foreign_editions[].namestringrequireddata.foreign_editions[].slugstring or nullrequiredExample: "slug"
data.foreign_editions[].languagestring or nullrequireddata.availabilitiesarray of objectsrequireddata.availabilities[].idinteger or nullrequiredExample: 10
data.availabilities[].providerstringrequiredExample: "midtown_comics"
data.availabilities[].provider_labelstringrequiredExample: "Midtown Comics"
data.availabilities[].kindstringrequiredbuy, read or watch.
Example: "buy"
data.availabilities[].store_namestring or nullrequiredExample: "Midtown Comics"
data.availabilities[].custom_namestring or nullrequiredExample: "Signed edition"
data.availabilities[].display_namestringrequiredExample: "Midtown Comics"
data.availabilities[].store_logostring or nullrequiredExample: "/images/brands/midtown.png"
data.availabilities[].urlstringrequiredExample: "https://www.midtowncomics.com/..."
data.availabilities[].external_idstring or nullrequiredExample: "12345"
data.availabilities[].pricenumber or nullrequiredExample: 19.99
data.availabilities[].formatted_pricestring or nullrequiredExample: "$19.99"
data.availabilities[].currencystring or nullrequiredExample: "USD"
data.availabilities[].is_digitalboolean or nullrequireddata.availabilities[].is_affiliatebooleanrequireddata.availabilities[].is_synthesizedbooleanrequireddata.availabilities[].verified_atstring or nullrequiredExample: "2026-01-01T00:00:00+00:00"
data.creatorsarray of objectsrequireddata.creators[].idintegerrequiredExample: 81
data.creators[].namestring or nullrequiredExample: "Nick Spencer"
data.creators[].slugstring or nullrequiredExample: "nick-spencer"
data.creators[].photo_urlstring or nullrequiredExample: "https://...-profile_md.webp"
data.creators[].imagesobject or nullrequireddata.creators[].images.tile_smstringExample: "https://...-tile_sm.webp"
data.creators[].images.profile_mdstringExample: "https://...-profile_md.webp"
data.creators[].images.full_lgstringExample: "https://...-full_lg.webp"
data.creators[].rolestringrequiredExample: "Writer"
data.creators[].is_uncreditedbooleanrequireddata.charactersarray of objectsdata.characters[].idintegerrequiredExample: 1
data.characters[].namestring or nullrequiredExample: "Spider-Man"
data.characters[].slugstring or nullrequiredExample: "spider-man"
data.characters[].real_namestring or nullrequiredExample: "Peter Parker"
data.characters[].aliasesarrayrequireddata.characters[].image_urlstring or nullrequiredExample: "https://...-full_lg.webp"
data.characters[].appearances_countintegerrequiredExample: 400
data.teamsarray of objectsdata.teams[].idintegerrequiredExample: 1
data.teams[].namestring or nullrequiredExample: "The Avengers"
data.teams[].slugstring or nullrequiredExample: "avengers"
data.teams[].image_urlstring or nullrequiredExample: "https://...-tile_sm.webp"
data.teams[].members_countintegerrequiredExample: 12
data.foc_issuesarray of objectsrequireddata.foc_issues[].idintegerrequiredExample: 5432
data.foc_issues[].slugstring or nullrequiredExample: "amazing-spider-man-1"
data.foc_issues[].series_idinteger or nullrequiredExample: 123
data.foc_issues[].issue_numberstring or nullrequiredExample: "1"
data.foc_issues[].namestring or nullrequiredExample: "The Chameleon Strikes!"
data.foc_issues[].cover_datestring or nullrequiredExample: "2018-09-01"
data.foc_issues[].release_datestring or nullrequiredExample: "2018-07-11"
data.foc_issues[].foc_datestring or nullrequiredExample: "2018-06-18"
data.foc_issues[].is_unreleasedbooleanrequireddata.foc_issues[].cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.foc_issues[].imagesobject or nullrequireddata.foc_issues[].images.thumbstringExample: "https://...-thumb.webp"
data.foc_issues[].images.cover_smstringExample: "https://...-cover_sm.webp"
data.foc_issues[].images.cover_mdstringExample: "https://...-cover_md.webp"
data.foc_issues[].images.cover_lgstringExample: "https://...-cover_lg.webp"
data.foc_issues[].is_reprintbooleanrequireddata.foc_issues[].content_rating_labelstring or nullrequiredExample: "Teen"
data.foc_issues[].min_ageinteger or nullrequiredExample: 13
data.foc_issues[].is_nsfwbooleanrequireddata.foc_issues[].average_ratingnumber or nullrequiredExample: 4.5
data.foc_issues[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data.upcoming_issuesarray of objectsrequireddata.upcoming_issues[].idintegerrequiredExample: 5432
data.upcoming_issues[].slugstring or nullrequiredExample: "amazing-spider-man-1"
data.upcoming_issues[].series_idinteger or nullrequiredExample: 123
data.upcoming_issues[].issue_numberstring or nullrequiredExample: "1"
data.upcoming_issues[].namestring or nullrequiredExample: "The Chameleon Strikes!"
data.upcoming_issues[].cover_datestring or nullrequiredExample: "2018-09-01"
data.upcoming_issues[].release_datestring or nullrequiredExample: "2018-07-11"
data.upcoming_issues[].foc_datestring or nullrequiredExample: "2018-06-18"
data.upcoming_issues[].is_unreleasedbooleanrequireddata.upcoming_issues[].cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.upcoming_issues[].imagesobject or nullrequireddata.upcoming_issues[].images.thumbstringExample: "https://...-thumb.webp"
data.upcoming_issues[].images.cover_smstringExample: "https://...-cover_sm.webp"
data.upcoming_issues[].images.cover_mdstringExample: "https://...-cover_md.webp"
data.upcoming_issues[].images.cover_lgstringExample: "https://...-cover_lg.webp"
data.upcoming_issues[].is_reprintbooleanrequireddata.upcoming_issues[].content_rating_labelstring or nullrequiredExample: "Teen"
data.upcoming_issues[].min_ageinteger or nullrequiredExample: 13
data.upcoming_issues[].is_nsfwbooleanrequireddata.upcoming_issues[].average_ratingnumber or nullrequiredExample: 4.5
data.upcoming_issues[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data.aliases_i18nobjectrequiredAlternative names per language.
data.original_localestring or nullrequiredThe language the series 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\\Series] 123"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Series] 123"
}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/series/123' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": {
"id": 123,
"title_id": 45,
"name": "The Amazing Spider-Man",
"original_name": "アメイジング・スパイダーマン",
"display_name": "The Amazing Spider-Man (2018)",
"slug": "the-amazing-spider-man-2018",
"number": 5,
"start_year": 2018,
"end_year": 2022,
"cover_url": "https://...-cover_lg.webp",
"images": {
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"publisher_description": "The publisher's own words.",
"medium": "comic",
"adapted_from": "anime",
"publication_type": "regular_series",
"format": "Standard",
"status": "Ongoing",
"original_language": "en",
"cached_issues_count": 93,
"cached_creators_count": 40,
"cached_characters_count": 120,
"cached_teams_count": 12,
"lists_count": 8,
"average_rating": "4.25",
"total_reviews": 3,
"issues_average_rating": "4.10",
"issues_rated_count": 20,
"imprint_id": 7,
"content_rating_label": "Teen",
"min_age": 13,
"language": "en",
"title": {
"id": 1,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man"
},
"publisher": {
"id": 1,
"name": "Marvel",
"slug": "marvel"
},
"publishers": [
{
"id": 1,
"name": "Marvel",
"slug": "marvel"
}
],
"imprint": {
"id": 7,
"name": "Marvel Knights"
},
"effective_imprint": {
"id": 7,
"name": "Marvel Knights"
},
"genres": [
{
"id": 1,
"name": "Superhero",
"slug": "superhero"
}
],
"awards": [
{
"id": 3,
"name": "Eisner Award",
"category": "Best Continuing Series",
"year": 2019
}
],
"foreign_edition_of": [
{
"id": 1,
"slug": "slug"
}
],
"foreign_editions": [
{
"id": 1,
"slug": "slug"
}
],
"availabilities": [
{
"id": 10,
"provider": "midtown_comics",
"provider_label": "Midtown Comics",
"kind": "buy",
"store_name": "Midtown Comics",
"custom_name": "Signed edition",
"display_name": "Midtown Comics",
"store_logo": "/images/brands/midtown.png",
"url": "https://www.midtowncomics.com/...",
"external_id": "12345",
"price": 19.99,
"formatted_price": "$19.99",
"currency": "USD",
"verified_at": "2026-01-01T00:00:00+00:00"
}
],
"creators": [
{
"id": 81,
"name": "Nick Spencer",
"slug": "nick-spencer",
"photo_url": "https://...-profile_md.webp",
"images": {
"tile_sm": "https://...-tile_sm.webp",
"profile_md": "https://...-profile_md.webp",
"full_lg": "https://...-full_lg.webp"
},
"role": "Writer"
}
],
"characters": [
{
"id": 1,
"name": "Spider-Man",
"slug": "spider-man",
"real_name": "Peter Parker",
"image_url": "https://...-full_lg.webp",
"appearances_count": 400
}
],
"teams": [
{
"id": 1,
"name": "The Avengers",
"slug": "avengers",
"image_url": "https://...-tile_sm.webp",
"members_count": 12
}
],
"foc_issues": [
{
"id": 5432,
"slug": "amazing-spider-man-1",
"series_id": 123,
"issue_number": "1",
"name": "The Chameleon Strikes!",
"cover_date": "2018-09-01",
"release_date": "2018-07-11",
"foc_date": "2018-06-18",
"cover_url": "https://...-cover_lg.webp",
"images": {
"thumb": "https://...-thumb.webp",
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"content_rating_label": "Teen",
"min_age": 13,
"average_rating": 4.5,
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
}
}
],
"upcoming_issues": [
{
"id": 5432,
"slug": "amazing-spider-man-1",
"series_id": 123,
"issue_number": "1",
"name": "The Chameleon Strikes!",
"cover_date": "2018-09-01",
"release_date": "2018-07-11",
"foc_date": "2018-06-18",
"cover_url": "https://...-cover_lg.webp",
"images": {
"thumb": "https://...-thumb.webp",
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"content_rating_label": "Teen",
"min_age": 13,
"average_rating": 4.5,
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
}
}
],
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"original_locale": "en"
}
}/api/v1/series/{id}/creatorsReturns paginated creators associated with a specific series.
idintegerrequiredThe series ID.
Example: 123
pageintegerPage number; meta.last_page says where the list ends.
Example: 1
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
current_pageintegerrequiredExample: 1
dataarray of objectsrequireddata[].idintegerrequiredExample: 789
data[].namestringrequiredExample: "Nick Spencer"
data[].slugstringrequiredExample: "nick-spencer"
data[].role_idinteger or nullrequiredExample: 1
data[].profile_photo_pathstring or nullrequiredExample: "uploads/creators/2024/01/nick-spencer.jpg"
data[].biographystring or nullrequiredExample: "An American comic book writer."
data[].genderstring or nullrequiredExample: "male"
data[].birthstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].deathstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].birth_placestring or nullrequiredExample: "Cincinnati, Ohio"
data[].countrystring or nullrequiredExample: "US"
data[].linksobject or nullrequireddata[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].deleted_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].aliasesarray of strings or nullrequireddata[].cached_issues_countintegerrequiredExample: 250
data[].cached_series_countintegerrequiredExample: 30
data[].cached_titles_countintegerrequiredExample: 20
data[].last_edited_byinteger or nullrequiredExample: 12
data[].last_edited_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].public_lists_countintegerrequiredExample: 4
data[].original_localestring or nullrequiredExample: "en"
data[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].aliases_i18nobjectrequiredAlternative names per language.
data[].roleobject or nullrequireddata[].role.idintegerrequiredExample: 1
data[].role.namestringrequiredExample: "Writer"
data[].role.descriptionstring or nullrequiredExample: "Writes the script."
data[].role.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].role.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pivotobjectrequireddata[].pivot.series_idintegerrequiredExample: 123
data[].pivot.creator_idintegerrequiredExample: 789
data[].pivot.creator_role_idinteger or nullrequiredExample: 1
data[].pivot.is_uncreditedbooleanrequireddata[].pivot.sort_orderinteger or nullrequiredExample: 0
data[].pivot.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pivot.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
first_page_urlstringrequiredfrominteger or nullrequiredExample: 1
last_pageintegerrequiredExample: 1
last_page_urlstringrequiredlinksarray of objectsrequiredlinks[].urlstring or nullrequiredlinks[].labelstringrequiredlinks[].pageinteger or nulllinks[].activebooleanrequirednext_page_urlstring or nullrequiredpathstringrequiredper_pageintegerrequiredExample: 50
prev_page_urlstring or nullrequiredtointeger or nullrequiredExample: 15
totalintegerrequiredExample: 15
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/series/123/creators' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"current_page": 1,
"data": [
{
"id": 789,
"name": "Nick Spencer",
"slug": "nick-spencer",
"role_id": 1,
"profile_photo_path": "uploads/creators/2024/01/nick-spencer.jpg",
"biography": "An American comic book writer.",
"gender": "male",
"birth": "2024-01-15T10:30:00.000000Z",
"death": "2024-01-15T10:30:00.000000Z",
"birth_place": "Cincinnati, Ohio",
"country": "US",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"deleted_at": "2024-01-15T10:30:00.000000Z",
"cached_issues_count": 250,
"cached_series_count": 30,
"cached_titles_count": 20,
"last_edited_by": 12,
"last_edited_at": "2024-01-15T10:30:00.000000Z",
"public_lists_count": 4,
"original_locale": "en",
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"role": {
"id": 1,
"name": "Writer",
"description": "Writes the script.",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
},
"pivot": {
"series_id": 123,
"creator_id": 789,
"creator_role_id": 1,
"sort_order": 0,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
}
}
],
"from": 1,
"last_page": 1,
"per_page": 50,
"to": 15,
"total": 15
}/api/v1/series/{id}/charactersReturns paginated characters appearing in a specific series.
idintegerrequiredThe series ID.
Example: 123
pageintegerPage number; meta.last_page says where the list ends.
Example: 1
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
current_pageintegerrequiredExample: 1
dataarray of objectsrequireddata[].idintegerrequiredExample: 456
data[].namestringrequiredExample: "Spider-Man"
data[].slugstringrequiredExample: "spider-man"
data[].real_namestring or nullrequiredExample: "Peter Parker"
data[].descriptionstring or nullrequiredExample: "Bitten by a radioactive spider."
data[].alter_egostring or number or boolean or array or object or nullrequiredOther identities, as stored: a list of strings in production.
Example: ["Spidey"]
data[].birthdaystring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].birth_placestring or nullrequiredExample: "Queens, New York"
data[].occupationstring or nullrequiredExample: "Photographer"
data[].heightstring or nullrequiredExample: "5'10\""
data[].weightstring or nullrequiredExample: "167 lbs"
data[].citizenshipstring or nullrequiredExample: "American"
data[].educationstring or nullrequiredExample: "College"
data[].aliasesarray of strings or nullrequireddata[].profile_photo_pathstring or nullrequiredExample: "uploads/characters/2024/01/spider-man.jpg"
data[].genderstring or nullrequiredExample: "male"
data[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].deleted_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].last_edited_byinteger or nullrequiredExample: 12
data[].last_edited_atstring or nullrequiredExample: "2024-01-15 10:30:00"
data[].public_lists_countintegerrequiredExample: 4
data[].debut_datestring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].debut_issue_idinteger or nullrequiredExample: 5432
data[].debut_editorialbooleanrequireddata[].original_localestring or nullrequiredExample: "en"
data[].name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].aliases_i18nobjectrequiredAlternative names per language.
data[].real_name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].racestring or nullrequiredExample: "Human"
data[].tagsarray of objectsrequireddata[].tags[].idintegerrequiredExample: 12
data[].tags[].nameobjectrequireddata[].tags[].slugobjectrequireddata[].tags[].typestring or nullrequiredExample: "ability"
data[].tags[].order_columninteger or nullrequiredExample: 1
data[].tags[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].tags[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].tags[].pivotobjectrequireddata[].tags[].pivot.taggable_typestringrequireddata[].tags[].pivot.taggable_idintegerrequiredExample: 456
data[].tags[].pivot.tag_idintegerrequiredExample: 12
data[].pivotobjectrequireddata[].pivot.series_idintegerrequiredExample: 123
data[].pivot.character_idintegerrequiredExample: 456
data[].pivot.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pivot.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
first_page_urlstringrequiredfrominteger or nullrequiredExample: 1
last_pageintegerrequiredExample: 1
last_page_urlstringrequiredlinksarray of objectsrequiredlinks[].urlstring or nullrequiredlinks[].labelstringrequiredlinks[].pageinteger or nulllinks[].activebooleanrequirednext_page_urlstring or nullrequiredpathstringrequiredper_pageintegerrequiredExample: 50
prev_page_urlstring or nullrequiredtointeger or nullrequiredExample: 15
totalintegerrequiredExample: 15
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/series/123/characters' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"current_page": 1,
"data": [
{
"id": 456,
"name": "Spider-Man",
"slug": "spider-man",
"real_name": "Peter Parker",
"description": "Bitten by a radioactive spider.",
"alter_ego": [
"Spidey"
],
"birthday": "2024-01-15T10:30:00.000000Z",
"birth_place": "Queens, New York",
"occupation": "Photographer",
"height": "5'10\"",
"weight": "167 lbs",
"citizenship": "American",
"education": "College",
"profile_photo_path": "uploads/characters/2024/01/spider-man.jpg",
"gender": "male",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"deleted_at": "2024-01-15T10:30:00.000000Z",
"last_edited_by": 12,
"last_edited_at": "2024-01-15 10:30:00",
"public_lists_count": 4,
"debut_date": "2024-01-15T10:30:00.000000Z",
"debut_issue_id": 5432,
"original_locale": "en",
"name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"aliases_i18n": {
"en": [
"Kodansha Comics"
]
},
"real_name_i18n": {
"ja": {
"value": "講談社",
"reading": "こうだんしゃ",
"source": "madb"
}
},
"race": "Human",
"tags": [
{
"id": 12,
"name": {
"en": "Wall-crawling"
},
"slug": {
"en": "wall-crawling"
},
"type": "ability",
"order_column": 1,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"pivot": {
"taggable_id": 456,
"tag_id": 12
}
}
],
"pivot": {
"series_id": 123,
"character_id": 456,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
}
}
],
"from": 1,
"last_page": 1,
"per_page": 50,
"to": 15,
"total": 15
}X-RateLimit-LimitintegerRequest quota per hour for your tier.
X-RateLimit-RemainingintegerRequests remaining in the current window.
Retry-AfterintegerSeconds to wait before retrying.