Endpoints for managing the authenticated user's pull list, follows, and reading progress.
All endpoints in this group require authentication with a Bearer API token.
Endpoints for managing the authenticated user's pull list, follows, and reading progress.
All endpoints in this group require authentication with a Bearer API token.
/api/v1/user/api/v1/user/read-status/api/v1/user/wishlist/api/v1/user/collections/api/v1/issues/{issue_id}/collection/check/api/v1/user/pull-list/api/v1/issues/{issue_id}/read-status/api/v1/issues/{issue_id}/read-status/api/v1/issues/{issue_id}/read-status/api/v1/issues/{issue_id}/wishlist/api/v1/issues/{issue_id}/wishlist/api/v1/pull-list/items/api/v1/pull-list/items/{item_id}/api/v1/issues/{issue_id}/collection/api/v1/issues/{issue_id}/collection/api/v1/issues/{issue_id}/collection/api/v1/user/collections/{collection_item_id}/loan/api/v1/user/collections/{collection_item_id}/loan/api/v1/user/follows/api/v1/follow/{type}/{id}/check/api/v1/follow/api/v1/follow/{type}/{id}/api/v1/user/activity/api/v1/userReturns the profile of the user the token belongs to.
Needs read:user or read:showcase. A read:showcase token gets only id, name,
username, bio, the avatar and banner fields, is_pro, the level and XP fields,
created_at and updated_at: no email, location, birth date, preferences, or
notification and account settings.
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 123
data.namestring or nullrequiredExample: "comic_fan_42"
data.usernamestring or nullrequiredExample: "comic_fan_42"
data.emailstring or nullExample: "[email protected]"
data.biostring or nullrequiredExample: "Comic collector since 1985"
data.avatarstring or nullrequiredExample: "https://...-profile_md.webp"
data.profile_imagestring or nullrequiredExample: "users/123/comic-fan-42.jpg"
data.profile_image_urlstring or nullrequiredExample: "https://...-profile_md.webp"
data.banner_pathstring or nullrequiredExample: null
data.banner_urlstring or nullrequiredExample: null
data.country_codestring or nullExample: "US"
data.citystring or nullExample: "New York"
data.regionstring or nullExample: "NY"
data.postal_codestring or nullExample: "10001"
data.formatted_locationstring or nullExample: "New York, NY, United States"
data.is_privateboolean or nullExample: false
data.is_wishlist_publicboolean or nullExample: true
data.public_wishlist_idstring or nullExample: "9d1c6b0e-7f0a-4c55-9a51-2f4a3f1d2b7e"
data.email_notificationsboolean or nullExample: true
data.content_edit_notificationsboolean or nullExample: true
data.comment_reply_notificationsboolean or nullExample: true
data.show_nsfw_warningsboolean or nullExample: true
data.birth_datestring or nullExample: "1990-05-01"
data.can_view_nsfwbooleanExample: true
data.show_reading_listboolean or nullExample: true
data.show_collectionboolean or nullExample: true
data.show_activityboolean or nullExample: true
data.show_followersboolean or nullExample: true
data.show_followingboolean or nullExample: true
data.show_spoilersboolean or nullExample: false
data.prompt_review_on_collectbooleanExample: false
data.preferred_mediumsarray of stringsExample: ["comic"]
data.preferred_genresarrayExample: []
data.preferred_languagesarray of stringsExample: ["en"]
data.localestring or nullExample: "en"
data.onboarding_completed_atstring or nullExample: "2024-01-15T10:30:00.000000Z"
data.onboarding_stepintegerExample: 0
data.ai_discovery_enabledboolean or nullExample: true
data.is_proboolean or nullrequiredExample: true
data.can_change_usernamebooleanExample: false
data.levelintegerrequiredExample: 5
data.xpintegerrequiredExample: 1200
data.xp_for_next_levelinteger or nullrequiredExample: 2000
data.xp_progress_percentnumberrequiredExample: 60
data.contributions_countintegerrequiredExample: 42
data.level_namestring or nullrequiredExample: "Collector"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2026-06-20T14:32:00.000000Z"
data.has_passwordbooleanExample: true
data.deletion_requested_atstring or nullExample: null
data.deletion_confirmed_atstring or nullExample: null
data.deletion_scheduled_forstring or nullExample: null
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither read:user nor read:showcase.
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/user' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": {
"id": 123,
"name": "comic_fan_42",
"username": "comic_fan_42",
"email": "[email protected]",
"bio": "Comic collector since 1985",
"avatar": "https://...-profile_md.webp",
"profile_image": "users/123/comic-fan-42.jpg",
"profile_image_url": "https://...-profile_md.webp",
"banner_path": null,
"banner_url": null,
"country_code": "US",
"city": "New York",
"region": "NY",
"postal_code": "10001",
"formatted_location": "New York, NY, United States",
"is_private": false,
"is_wishlist_public": true,
"public_wishlist_id": "9d1c6b0e-7f0a-4c55-9a51-2f4a3f1d2b7e",
"email_notifications": true,
"content_edit_notifications": true,
"comment_reply_notifications": true,
"show_nsfw_warnings": true,
"birth_date": "1990-05-01",
"can_view_nsfw": true,
"show_reading_list": true,
"show_collection": true,
"show_activity": true,
"show_followers": true,
"show_following": true,
"show_spoilers": false,
"prompt_review_on_collect": false,
"preferred_mediums": [
"comic"
],
"preferred_genres": [],
"preferred_languages": [
"en"
],
"locale": "en",
"onboarding_completed_at": "2024-01-15T10:30:00.000000Z",
"onboarding_step": 0,
"ai_discovery_enabled": true,
"is_pro": true,
"can_change_username": false,
"level": 5,
"xp": 1200,
"xp_for_next_level": 2000,
"xp_progress_percent": 60,
"contributions_count": 42,
"level_name": "Collector",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2026-06-20T14:32:00.000000Z",
"has_password": true,
"deletion_requested_at": null,
"deletion_confirmed_at": null,
"deletion_scheduled_for": null
}
}/api/v1/user/read-statusReturns all issues the user has marked as read with timestamps.
Needs read:user or read:showcase; both get the same response.
per_pageintegerItems per page (max 100).
Example: 20
unreviewedbooleanWhen true, only returns reads for issues the user has not yet reviewed.
Example: true
qstringSearch your reads by series name or issue number.
Example: "saga 12"
sortstringOne of read_at_desc, read_at_asc, title_asc, title_desc. Default: newest marked first.
Example: "read_at_asc"
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsrequireddata[].idintegerrequiredExample: 1234
data[].user_idintegerrequiredExample: 42
data[].readable_typestringrequiredExample: "Issue"
data[].readable_idintegerrequiredExample: 5432
data[].variant_idinteger or nullrequiredExample: null
data[].read_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].readableobject or nullrequiredNull once the issue is gone.
data[].readable.idintegerrequiredExample: 5432
data[].readable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data[].readable.series_idinteger or nullrequiredExample: 123
data[].readable.issue_numberstring or nullrequiredExample: "1"
data[].readable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data[].readable.cover_datestring or nullrequiredExample: "2018-09-01"
data[].readable.release_datestring or nullrequiredExample: "2018-07-11"
data[].readable.foc_datestring or nullrequiredExample: "2018-06-18"
data[].readable.is_unreleasedbooleanrequireddata[].readable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].readable.imagesobject or nullrequireddata[].readable.images.thumbstringExample: "https://...-thumb.webp"
data[].readable.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].readable.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].readable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].readable.is_reprintbooleanrequireddata[].readable.content_rating_labelstring or nullrequiredExample: "Teen"
data[].readable.min_ageinteger or nullrequiredExample: 13
data[].readable.is_nsfwbooleanrequireddata[].readable.average_ratingnumber or nullrequiredExample: 4.5
data[].readable.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].readable.seriesobject or nulldata[].readable.series.idintegerrequiredExample: 123
data[].readable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].readable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data[].readable.series.start_yearinteger or nullrequiredExample: 2018
data[].readable.series.end_yearinteger or nullrequiredExample: 2022
data[].readable.series.volume_numberinteger or nullrequiredExample: 5
data[].readable.series.publication_typestring or nullrequiredExample: "regular_series"
data[].readable.series.formatstring or nullrequiredExample: "Standard"
data[].readable.series.cached_issues_countinteger or nullrequiredExample: 93
data[].readable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].readable.series.imagesobject or nullrequireddata[].readable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].readable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].readable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].readable.series.publisher_namestring or nullrequiredExample: "Marvel"
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 holds neither read:user nor read:showcase.
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/user/read-status' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 1234,
"user_id": 42,
"readable_type": "Issue",
"readable_id": 5432,
"variant_id": null,
"read_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"readable": {
"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"
}
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}/api/v1/user/wishlistReturns the authenticated user's wishlist issues, most recently added first.
Needs read:user or read:showcase. A read:showcase token gets each item without note.
per_pageintegerItems per page (max 100).
Example: 20
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsrequireddata[].idintegerrequiredExample: 9876
data[].positioninteger or nullrequiredExample: null
data[].notestring or nullLeft out for a read:showcase token.
Example: null
data[].created_atstringrequiredExample: "2024-01-15T10:30:00+00:00"
data[].updated_atstringrequiredExample: "2024-01-15T10:30:00+00:00"
data[].variant_idinteger or nullrequiredExample: null
data[].variantobjectThe pinned cover, while it exists.
data[].variant.idintegerrequiredExample: 7
data[].variant.namestring or nullrequiredExample: "Cover B"
data[].variant.ratiostring or nullrequiredExample: "1:25"
data[].variant.cover_image_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data[].entity_typestringrequiredExample: "issues"
data[].entityobjectLeft out once the issue is gone.
data[].entity.idintegerrequiredExample: 5432
data[].entity.slugstring or nullrequiredExample: "amazing-spider-man-1"
data[].entity.namestring or nullrequiredExample: "Amazing Spider-Man #1"
data[].entity.issue_numberstring or nullrequiredExample: "1"
data[].entity.release_datestring or nullrequiredExample: "2018-07-11"
data[].entity.foc_datestring or nullrequiredExample: "2018-06-18"
data[].entity.image_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data[].entity.is_nsfwboolean or nullrequireddata[].entity.publisherstring or nullrequiredExample: "Marvel"
data[].entity.seriesobject or nullrequireddata[].entity.series.idintegerrequiredExample: 123
data[].entity.series.namestring or nullrequiredExample: "Amazing Spider-Man"
data[].entity.series.slugstring or nullrequiredExample: "amazing-spider-man-2018"
data[].entity.series.start_yearinteger or nullrequiredExample: 2018
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 holds neither read:user nor read:showcase.
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/user/wishlist' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 9876,
"position": null,
"note": null,
"created_at": "2024-01-15T10:30:00+00:00",
"updated_at": "2024-01-15T10:30:00+00:00",
"variant_id": null,
"variant": {
"id": 7,
"name": "Cover B",
"ratio": "1:25",
"cover_image_url": "https://...-cover_md.webp"
},
"entity_type": "issues",
"entity": {
"id": 5432,
"slug": "amazing-spider-man-1",
"name": "Amazing Spider-Man #1",
"issue_number": "1",
"release_date": "2018-07-11",
"foc_date": "2018-06-18",
"image_url": "https://...-cover_md.webp",
"publisher": "Marvel",
"series": {
"id": 123,
"name": "Amazing Spider-Man",
"slug": "amazing-spider-man-2018",
"start_year": 2018
}
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}/api/v1/user/collectionsReturns the issues in the user's collection, newest added first, each with its issue, series and publisher.
Needs read:user or read:showcase. A read:showcase token gets each copy without
price_paid, estimated_value, value_last_updated, price_sold, sold_at,
purchased_at, purchase_source, purchase_store, acquisition_method,
comic_shop_id, comic_shop, notes, grader_notes, storage_location,
custom_label, bagged_at, personal_rating, tags or loan, leaves out copies
marked not public, and the estimated_value and price_paid sorts fall back to date_added.
per_pageintegerItems per page (max 100).
Example: 20
pageintegerPage number; meta.last_page says where the list ends.
Example: 1
searchstringFilter by issue name, issue number, or series name.
Example: "spider"
formatstringFilter by stored format.
Example: "single"
gradedbooleanFilter to graded (true) or raw (false) copies.
Example: true
is_signedbooleanFilter to signed (true) or unsigned (false) copies. PRO; ignored for other members.
Example: true
conditionstringFilter by condition grade code.
Example: "NM"
statusstringWhich copies to return: owned, for_sale, sold, or all. Sold copies are excluded by default.
Example: "sold"
for_salebooleanFilter to copies marked for sale.
Example: true
for_tradebooleanFilter to copies marked for trade.
Example: true
read_statusstringFilter by read state. One of: read, unread.
Example: "unread"
publisher_idintegerFilter to issues from a publisher.
Example: 1
series_idintegerFilter to copies of issues in a series.
Example: 123
grade_minnumberFilter to copies with a numeric grade at or above this value. PRO; ignored for other members.
Example: 9
grade_maxnumberFilter to copies with a numeric grade at or below this value. PRO; ignored for other members.
Example: 9.8
sort_bystringSort field. One of: date_added, title, release_date, estimated_value, price_paid.
Example: "title"
sort_orderstringSort direction. One of: asc, desc.
Example: "asc"
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: 1001
data[].user_idintegerrequiredExample: 42
data[].collectable_typestringrequiredExample: "Issue"
data[].collectable_idintegerrequiredExample: 5432
data[].variant_idinteger or nullrequiredExample: null
data[].conditionstring or nullrequiredExample: "NM"
data[].purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data[].notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data[].formatstring or nullrequiredExample: "single"
data[].storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data[].price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data[].is_variantboolean or nullrequireddata[].variant_descriptionstring or nullrequiredExample: "Cover B"
data[].variant_typestring or nullrequiredExample: "cover"
data[].gradedboolean or nullrequireddata[].grade_scorestring or nullrequiredExample: "9.8"
data[].grading_companystring or nullrequiredExample: "CGC"
data[].grading_numberstring or nullrequiredExample: "1234567001"
data[].label_typestring or nullrequiredExample: "universal"
data[].page_qualitystring or nullrequiredExample: "white"
data[].grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data[].purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data[].comic_shop_idinteger or nullLeft out for a read:showcase token.
Example: 17
data[].comic_shopobjectThe shop the copy came from, while it is listed; left out otherwise and for a read:showcase token.
data[].comic_shop.idintegerrequiredExample: 17
data[].comic_shop.namestring or nullrequiredExample: "Comic Corner"
data[].comic_shop.slugstring or nullrequiredExample: "comic-corner"
data[].comic_shop.citystring or nullrequiredExample: "Portland"
data[].comic_shop.state_provincestring or nullrequiredExample: "OR"
data[].acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data[].purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data[].custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data[].bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data[].personal_ratingstring or nullLeft out for a read:showcase token.
Example: "4.5"
data[].tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data[].loanobject or nullLeft out for a read:showcase token.
data[].loan.idintegerrequiredExample: 3
data[].loan.loaned_tostring or nullrequiredExample: "Sam"
data[].loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data[].loan.due_atstring or nullrequiredExample: "2024-02-15"
data[].loan.is_overduebooleanrequireddata[].loan.days_until_dueinteger or nullrequiredExample: 12
data[].is_signedboolean or nullrequireddata[].signed_bystring or nullrequiredExample: "Stan Lee"
data[].signature_witnessstring or nullrequiredExample: "CGC"
data[].signature_authenticatedbooleanrequireddata[].is_cgc_ssbooleanrequireddata[].print_numberstring or nullrequiredExample: "1"
data[].estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data[].value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data[].statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data[].for_saleboolean or nullrequireddata[].for_tradeboolean or nullrequireddata[].sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data[].price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data[].is_publicboolean or nullrequireddata[].cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data[].cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].collectableobject or nullrequiredNull once the issue is gone.
data[].collectable.idintegerrequiredExample: 5432
data[].collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data[].collectable.series_idinteger or nullrequiredExample: 123
data[].collectable.issue_numberstring or nullrequiredExample: "1"
data[].collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data[].collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data[].collectable.release_datestring or nullrequiredExample: "2018-07-11"
data[].collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data[].collectable.is_unreleasedbooleanrequireddata[].collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].collectable.imagesobject or nullrequireddata[].collectable.images.thumbstringExample: "https://...-thumb.webp"
data[].collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].collectable.is_reprintbooleanrequireddata[].collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data[].collectable.min_ageinteger or nullrequiredExample: 13
data[].collectable.is_nsfwbooleanrequireddata[].collectable.average_ratingnumber or nullrequiredExample: 4.5
data[].collectable.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].collectable.seriesobject or nulldata[].collectable.series.idintegerrequiredExample: 123
data[].collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data[].collectable.series.start_yearinteger or nullrequiredExample: 2018
data[].collectable.series.end_yearinteger or nullrequiredExample: 2022
data[].collectable.series.volume_numberinteger or nullrequiredExample: 5
data[].collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data[].collectable.series.formatstring or nullrequiredExample: "Standard"
data[].collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data[].collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].collectable.series.imagesobject or nullrequireddata[].collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
data[].collectable.key_issue_reasonsarray of objectsrequireddata[].collectable.key_issue_reasons[].idintegerrequiredExample: 7
data[].collectable.key_issue_reasons[].namestring or nullrequiredExample: "First appearance"
data[].collectable.key_issue_reasons[].categorystringrequiredExample: "appearance"
data[].collectable.key_issue_reasons[].slugstring or nullrequiredExample: "first-appearance"
data[].collectable.key_issue_reasons[].notesstring or nullrequiredExample: "Cameo"
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 holds neither read:user nor read:showcase.
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/user/collections' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": null,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"comic_shop": {
"id": 17,
"name": "Comic Corner",
"slug": "comic-corner",
"city": "Portland",
"state_province": "OR"
},
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": "4.5",
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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"
}
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
},
"key_issue_reasons": [
{
"id": 7,
"name": "First appearance",
"category": "appearance",
"slug": "first-appearance",
"notes": "Cameo"
}
]
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 25,
"per_page": 20,
"to": 20,
"total": 500
}
}/api/v1/issues/{issue_id}/collection/checkChecks if an issue (optionally a specific variant) is in the user's collection: the copies still held (sold ones left out), oldest first, and the first of them in full.
Needs read:user.
issue_idintegerrequiredThe issue ID.
Example: 5432
variant_idintegerSpecific variant ID to check (optional).
Example: 789
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
in_collectionbooleanrequiredis_unreleasedbooleanrequiredThe issue is more than a day from its release, so it cannot be added yet.
copies_countintegerrequiredExample: 1
copiesarray of objectsrequiredcopies[].idintegerrequiredExample: 1001
copies[].variant_idinteger or nullrequiredExample: 789
copies[].conditionstring or nullrequiredExample: "NM"
copies[].gradedbooleanrequiredcopies[].grade_scorestring or nullrequiredExample: "9.8"
copies[].grading_companystring or nullrequiredExample: "CGC"
copies[].is_signedbooleanrequiredcopies[].signed_bystring or nullrequiredExample: "Stan Lee"
copies[].is_cgc_ssbooleanrequiredcopies[].formatstring or nullrequiredExample: "single"
copies[].storage_locationstring or nullrequiredExample: "Long box 3"
copies[].purchased_atstring or nullrequiredExample: "2024-01-15T00:00:00+00:00"
copies[].notesstring or nullrequiredExample: "First print"
copies[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00+00:00"
copies[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00+00:00"
dataobject or nullrequiredThe first copy, or null when there is none.
data.idintegerrequiredExample: 1001
data.user_idintegerrequiredExample: 42
data.collectable_typestringrequiredExample: "Issue"
data.collectable_idintegerrequiredExample: 5432
data.variant_idinteger or nullrequiredExample: null
data.conditionstring or nullrequiredExample: "NM"
data.purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data.formatstring or nullrequiredExample: "single"
data.storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data.price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data.is_variantboolean or nullrequireddata.variant_descriptionstring or nullrequiredExample: "Cover B"
data.variant_typestring or nullrequiredExample: "cover"
data.gradedboolean or nullrequireddata.grade_scorestring or nullrequiredExample: "9.8"
data.grading_companystring or nullrequiredExample: "CGC"
data.grading_numberstring or nullrequiredExample: "1234567001"
data.label_typestring or nullrequiredExample: "universal"
data.page_qualitystring or nullrequiredExample: "white"
data.grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data.purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data.comic_shop_idinteger or nullLeft out for a read:showcase token.
Example: 17
data.acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data.purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data.custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data.bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.personal_ratingstring or nullLeft out for a read:showcase token.
Example: "4.5"
data.tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data.loanobject or nullLeft out for a read:showcase token.
data.loan.idintegerrequiredExample: 3
data.loan.loaned_tostring or nullrequiredExample: "Sam"
data.loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data.loan.due_atstring or nullrequiredExample: "2024-02-15"
data.loan.is_overduebooleanrequireddata.loan.days_until_dueinteger or nullrequiredExample: 12
data.is_signedboolean or nullrequireddata.signed_bystring or nullrequiredExample: "Stan Lee"
data.signature_witnessstring or nullrequiredExample: "CGC"
data.signature_authenticatedbooleanrequireddata.is_cgc_ssbooleanrequireddata.print_numberstring or nullrequiredExample: "1"
data.estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data.value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data.for_saleboolean or nullrequireddata.for_tradeboolean or nullrequireddata.sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data.is_publicboolean or nullrequireddata.cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data.cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.collectableobject or nullrequiredThe issue with its series.
data.collectable.idintegerrequiredExample: 5432
data.collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data.collectable.series_idinteger or nullrequiredExample: 123
data.collectable.issue_numberstring or nullrequiredExample: "1"
data.collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data.collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data.collectable.release_datestring or nullrequiredExample: "2018-07-11"
data.collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data.collectable.is_unreleasedbooleanrequireddata.collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.imagesobject or nullrequireddata.collectable.images.thumbstringExample: "https://...-thumb.webp"
data.collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.is_reprintbooleanrequireddata.collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data.collectable.min_ageinteger or nullrequiredExample: 13
data.collectable.is_nsfwbooleanrequireddata.collectable.average_ratingnumber or nullrequiredExample: 4.5
data.collectable.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data.collectable.seriesobject or nulldata.collectable.series.idintegerrequiredExample: 123
data.collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.collectable.series.start_yearinteger or nullrequiredExample: 2018
data.collectable.series.end_yearinteger or nullrequiredExample: 2022
data.collectable.series.volume_numberinteger or nullrequiredExample: 5
data.collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data.collectable.series.formatstring or nullrequiredExample: "Standard"
data.collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data.collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.series.imagesobject or nullrequireddata.collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token does not hold read:user.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}A variant that does not exist.
messagestringrequiredExample: "The selected variant id is invalid."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The selected variant id is invalid.",
"errors": {
"variant_id": [
"The selected variant id is invalid."
]
}
}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/issues/5432/collection/check' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"copies_count": 1,
"copies": [
{
"id": 1001,
"variant_id": 789,
"condition": "NM",
"grade_score": "9.8",
"grading_company": "CGC",
"signed_by": "Stan Lee",
"format": "single",
"storage_location": "Long box 3",
"purchased_at": "2024-01-15T00:00:00+00:00",
"notes": "First print",
"created_at": "2024-01-15T10:30:00+00:00",
"updated_at": "2024-01-15T10:30:00+00:00"
}
],
"data": {
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": null,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": "4.5",
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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"
}
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
}
}/api/v1/user/pull-listReturns all series on the user's pull list (series they're tracking for new releases), most recently added first.
Needs read:user or read:showcase. A read:showcase token gets each entry without
personal_notes, notify_on_release, notification_settings, auto_pull,
last_pulled_at, preferred_cover_type, pull_priority or the pull source fields.
per_pageintegerItems 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: 1234
data[].user_idintegerrequiredExample: 42
data[].pullable_typestring or nullrequiredExample: "Series"
data[].pullable_idinteger or nullrequiredExample: 456
data[].series_idinteger or nullrequiredExample: 456
data[].variant_idinteger or nullrequiredExample: null
data[].statusstringrequiredactive, paused or canceled.
Example: "active"
data[].auto_pullboolean or nullLeft out for a read:showcase token.
data[].last_pulled_atstring or nullLeft out for a read:showcase token.
data[].preferred_cover_typestring or nullLeft out for a read:showcase token.
data[].pull_priorityinteger or nullLeft out for a read:showcase token.
data[].notify_on_releaseboolean or nullLeft out for a read:showcase token.
data[].notification_settingsstring or number or boolean or array or object or nullLeft out for a read:showcase token.
data[].personal_notesstring or nullLeft out for a read:showcase token.
data[].pull_source_idsarray of integersLeft out for a read:showcase token.
data[].pull_sourcesarray of objectsLeft out for a read:showcase token.
data[].pull_sources[].idintegerrequiredExample: 12
data[].pull_sources[].namestringrequiredExample: "Main Street Comics"
data[].pull_sources[].kindstringrequiredExample: "shop"
data[].pull_sources[].kind_labelstringrequiredExample: "Comic shop"
data[].pull_sources[].has_pickupbooleanrequireddata[].pull_sources[].comic_shop_idinteger or nullrequiredExample: 345
data[].pull_sources[].locationstring or nullrequiredExample: "Springfield, IL"
data[].pull_sources[].pickup_notestring or nullrequiredExample: "Ships Friday"
data[].pull_sources[].is_defaultbooleanrequireddata[].pull_sources[].is_linkedbooleanrequiredTrue when the source is a shop's own link to the member's account.
data[].pull_sources[].shop_link_idinteger or nullrequiredExample: null
data[].pull_sources[].sortintegerrequiredExample: 1
data[].pull_sources[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pull_sources[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pull_source_idinteger or nullLeft out for a read:showcase token.
data[].pull_sourceobject or nullLeft out for a read:showcase token.
data[].pull_source.idintegerrequiredExample: 12
data[].pull_source.namestringrequiredExample: "Main Street Comics"
data[].pull_source.kindstringrequiredExample: "shop"
data[].pull_source.kind_labelstringrequiredExample: "Comic shop"
data[].pull_source.has_pickupbooleanrequireddata[].pull_source.comic_shop_idinteger or nullrequiredExample: 345
data[].pull_source.locationstring or nullrequiredExample: "Springfield, IL"
data[].pull_source.pickup_notestring or nullrequiredExample: "Ships Friday"
data[].pull_source.is_defaultbooleanrequireddata[].pull_source.is_linkedbooleanrequiredTrue when the source is a shop's own link to the member's account.
data[].pull_source.shop_link_idinteger or nullrequiredExample: null
data[].pull_source.sortintegerrequiredExample: 1
data[].pull_source.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].pull_source.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data[].series_namestring or nullrequiredNull once the series is gone.
Example: "The Amazing Spider-Man"
data[].series_cover_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data[].series_imagesobject or nullrequireddata[].series_images.cover_smstringExample: "https://...-cover_sm.webp"
data[].series_images.cover_mdstringExample: "https://...-cover_md.webp"
data[].series_images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].publisher_namestring or nullrequiredExample: "Marvel"
data[].is_nsfwbooleanrequireddata[].next_issueobject or nullrequiredThe series' next issue released today or later that the member hasn't skipped.
data[].next_issue.idintegerrequiredExample: 5432
data[].next_issue.slugstring or nullrequiredExample: "amazing-spider-man-1"
data[].next_issue.series_idinteger or nullrequiredExample: 123
data[].next_issue.issue_numberstring or nullrequiredExample: "1"
data[].next_issue.namestring or nullrequiredExample: "The Chameleon Strikes!"
data[].next_issue.cover_datestring or nullrequiredExample: "2018-09-01"
data[].next_issue.release_datestring or nullrequiredExample: "2018-07-11"
data[].next_issue.foc_datestring or nullrequiredExample: "2018-06-18"
data[].next_issue.is_unreleasedbooleanrequireddata[].next_issue.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].next_issue.imagesobject or nullrequireddata[].next_issue.images.thumbstringExample: "https://...-thumb.webp"
data[].next_issue.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].next_issue.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].next_issue.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].next_issue.is_reprintbooleanrequireddata[].next_issue.content_rating_labelstring or nullrequiredExample: "Teen"
data[].next_issue.min_ageinteger or nullrequiredExample: 13
data[].next_issue.is_nsfwbooleanrequireddata[].next_issue.average_ratingnumber or nullrequiredExample: 4.5
data[].next_issue.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].seriesobject or nullrequiredNull once the series is gone.
data[].series.idintegerrequiredExample: 123
data[].series.title_idinteger or nullrequiredExample: 1
data[].series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].series.display_namestringrequiredExample: "The Amazing Spider-Man (2018)"
data[].series.slugstring or nullrequiredExample: "amazing-spider-man-2018"
data[].series.numberinteger or nullrequiredExample: 6
data[].series.start_yearinteger or nullrequiredExample: 2018
data[].series.end_yearinteger or nullrequiredExample: 2022
data[].series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data[].series.imagesobject or nullrequireddata[].series.images.cover_smstringExample: "https://...-cover_sm.webp"
data[].series.images.cover_mdstringExample: "https://...-cover_md.webp"
data[].series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data[].series.mediumstring or nullrequiredExample: "comic"
data[].series.publication_typestring or nullrequiredExample: "regular_series"
data[].series.formatstring or nullrequiredExample: "Standard"
data[].series.statusstring or nullrequiredExample: "Ongoing"
data[].series.original_namestring or nullrequiredExample: "The Amazing Spider-Man"
data[].series.original_languagestring or nullrequiredExample: "en"
data[].series.languagestring or nullrequiredExample: "en"
data[].series.cached_issues_countinteger or nullrequiredExample: 94
data[].series.average_ratingstring or nullrequiredExample: "4.25"
data[].series.total_reviewsinteger or nullrequiredExample: 12
data[].series.issues_average_ratingstring or nullrequiredExample: "4.10"
data[].series.issues_rated_countinteger or nullrequiredExample: 40
data[].series.content_rating_labelstring or nullrequiredExample: "Teen"
data[].series.min_ageinteger or nullrequiredExample: 13
data[].series.is_nsfwboolean or nullrequireddata[].series.publisher_namestring or nullrequiredExample: "Marvel"
data[].series.name_i18nobjectrequiredOne name per language, keyed by BCP 47 tag.
data[].series.aliases_i18nobjectrequiredAlternative names per language.
data[].series.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 holds neither read:user nor read:showcase.
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/user/pull-list' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 1234,
"user_id": 42,
"pullable_type": "Series",
"pullable_id": 456,
"series_id": 456,
"variant_id": null,
"status": "active",
"pull_sources": [
{
"id": 12,
"name": "Main Street Comics",
"kind": "shop",
"kind_label": "Comic shop",
"comic_shop_id": 345,
"location": "Springfield, IL",
"pickup_note": "Ships Friday",
"shop_link_id": null,
"sort": 1,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
}
],
"pull_source": {
"id": 12,
"name": "Main Street Comics",
"kind": "shop",
"kind_label": "Comic shop",
"comic_shop_id": 345,
"location": "Springfield, IL",
"pickup_note": "Ships Friday",
"shop_link_id": null,
"sort": 1,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
},
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"series_name": "The Amazing Spider-Man",
"series_cover_url": "https://...-cover_md.webp",
"series_images": {
"cover_sm": "https://...-cover_sm.webp",
"cover_md": "https://...-cover_md.webp",
"cover_lg": "https://...-cover_lg.webp"
},
"publisher_name": "Marvel",
"next_issue": {
"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"
}
}
},
"series": {
"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/issues/{issue_id}/read-statusMarks an issue (optionally a specific variant) as read with the current timestamp.
issue_idintegerrequiredThe issue ID.
Example: 5432
application/jsonvariant_idinteger or nullSpecific variant ID (optional).
Example: 789
Success. series_completed is there when this read finishes the series.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
series_completedobjectEvery live issue of the series is now read.
series_completed.series_idintegerrequiredExample: 123
series_completed.series_namestring or nullrequiredExample: "Saga"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:read-status nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}Invalid Variant, a variant that does not exist, or an issue not released yet.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/issues/5432/read-status' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"variant_id": 789
}'Example response 201
{
"series_completed": {
"series_id": 123,
"series_name": "Saga"
}
}/api/v1/issues/{issue_id}/read-statusUpdates the read_at date on an existing read entry, or removes the entry when read_at is null.
If no entry exists yet and a date is provided, one is created (upsert).
issue_idintegerrequiredThe issue ID.
Example: 5432
application/jsonread_atstring or nullDate in YYYY-MM-DD format, must not be in the future. Pass null to mark as unread.
Example: "2026-03-01"
variant_idinteger or nullSpecific variant ID (optional).
Example: 789
Updated
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
read_atstringrequiredExample: "2026-03-01T00:00:00+00:00"
Cleared (read_at was null)
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:read-status nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}Invalid Variant, a date after today, or an issue not released yet.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 PATCH \
'https://versedb.com/api/v1/issues/5432/read-status' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"read_at": "2026-03-01",
"variant_id": 789
}'Example response 200
{
"read_at": "2026-03-01T00:00:00+00:00"
}/api/v1/issues/{issue_id}/read-statusRemoves the read status for an issue (optionally a specific variant).
issue_idintegerrequiredThe issue ID.
Example: 5432
application/jsonvariant_idinteger or nullSpecific variant ID (optional).
Example: 789
Removed
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:read-status nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}A variant that does not exist.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/issues/5432/read-status' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"variant_id": 789
}'/api/v1/issues/{issue_id}/wishlistAdds the issue to the authenticated user's wishlist. Idempotent: calling with an issue already on the wishlist returns 200 without creating a duplicate.
issue_idintegerrequiredThe issue ID.
Example: 5432
application/jsonvariant_idinteger or nullOptional cover variant to pin. Must belong to the issue. Omit for "any cover". The same issue may sit on the wishlist once per distinct variant plus once variant-less.
Example: 789
Already in Wishlist
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
in_wishlistbooleanrequiredExample: true
variant_idinteger or nullrequiredExample: 7
Added
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
in_wishlistbooleanrequiredExample: true
variant_idinteger or nullrequiredExample: 7
Example body, from the documented examples
{
"in_wishlist": true,
"variant_id": 7
}Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:wishlist nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}Wishlist Full, or a variant that is not one of the issue's.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/issues/5432/wishlist' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"variant_id": 789
}'Example response 200
{
"in_wishlist": true,
"variant_id": 7
}/api/v1/issues/{issue_id}/wishlistRemoves the issue from the authenticated user's wishlist. Idempotent: returns 204 whether or not the issue was on the wishlist.
issue_idintegerrequiredThe issue ID.
Example: 5432
variant_idintegerOptional cover variant to remove. Omit to remove the "any cover" entry — variant-pinned entries for the same issue are left alone.
Example: 7
Removed
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:wishlist nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}A variant that is not one of the issue's.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/issues/5432/wishlist' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'/api/v1/pull-list/itemsAdds a series to the user's pull list to track new releases. Adding a series already on it changes nothing.
application/jsonseries_idintegerrequiredThe series ID to add.
Example: 456
Added
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:pull-list nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}The series is deleted.
messagestringrequiredExample: "No query results for model [App\\Models\\Series] 456"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Series] 456"
}No series has this ID.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/pull-list/items' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"series_id": 456
}'Example response 201
[]/api/v1/pull-list/items/{item_id}Removes a series from the authenticated user's pull list. Idempotent: returns 204 whether or not the series was on it.
item_idintegerrequiredThe series ID of the pull list entry.
Example: 456
Removed
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:pull-list nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live series has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Series] 456"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Series] 456"
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/pull-list/items/456' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'/api/v1/issues/{issue_id}/collectionAdds a copy of the issue to the user's collection; every field is optional. When the issue was on the user's wishlist it comes off when the user chose that, else was_on_wishlist is true so the app can offer it. follow_up says whether to offer marking it read or reviewing it.
issue_idintegerrequiredThe issue ID.
Example: 5432
application/jsonvariant_idinteger or nullLink to a specific issue variant. Must belong to the issue. Must match an existing stored value.
Example: 42
conditionstring or nullComic condition grade (CGC scale). One of: MT, NM/MT, NM+, NM, NM-, VF/NM, VF+, VF, VF-, F/VF, F+, F, F-, VG/F, VG+, VG, VG-, G/VG, G, FR, PR.
Example: "NM"
notesstring or nullUser notes about this copy. Must not be greater than 1000 characters.
Example: "First print, great condition"
price_paidnumber or nullPurchase price in dollars. Must be at least 0. Must not be greater than 999999.99.
Example: 3.99
formatstring or nullPhysical format of the copy. One of: standard, trade_paperback, hardcover, omnibus, deluxe_edition, annual, graphic_novel, digital, treasury, magazine, prestige, digest, other.
Example: "standard"
purchase_sourcestring or nullWhere the comic was purchased. One of: comic_shop, online_retailer, auction, convention, private_seller, subscription, digital_platform, second_hand_store, inheritance, gift, trade, other.
Example: "comic_shop"
purchase_storestring or nullName of the store the copy was bought from, as free text. Use comic_shop_id instead where the shop is one VerseDB catalogs. Must not be greater than 255 characters.
Example: "Third Eye Comics"
custom_labelstring or nullThe collector's own label for this copy. Free-text and unrelated to a slab label. Must not be greater than 255 characters.
Example: "Longbox A / row 3"
bagged_atstring or nullDate the copy was bagged and boarded (YYYY-MM-DD). Must be a valid date.
Example: "2024-07-01"
personal_ratingnumber or nullThe collector's own rating of this copy, in half stars from 0.5 to 5. Private to the copy: it is not a review and feeds no community average. One of: 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.
Example: 4.5
tagsarray of stringsThe collector's own labels for this copy. Private to the account — one user's tags are never visible to another. Must not be greater than 100 characters.
Example: ["key"]
comic_shop_idinteger or nullID of the specific comic shop the copy was purchased from. Self-reported; independent of purchase_source. Must match an existing stored value.
Example: 412
acquisition_methodstring or nullHow the comic was acquired. One of: purchase, trade, gift, inheritance, subscription, found, other.
Example: "purchase"
purchased_atstring or nullDate of purchase (YYYY-MM-DD). Must be a valid date.
Example: "2024-06-15"
storage_locationstring or nullWhere the comic is stored. Must not be greater than 255 characters.
Example: "Long box #3"
is_signedbooleanWhether the comic is signed.
Example: false
signed_bystring or nullName(s) of the creator(s) who signed the comic. Free-text. Comma-separate multiple signers. Must not be greater than 255 characters.
Example: "Stan Lee"
is_variantbooleanWhether this copy is a variant cover.
Example: false
variant_descriptionstring or nullFree-text description of the variant cover. Must not be greater than 500 characters.
Example: "Skottie Young baby variant"
variant_typestring or nullVariant classification (standard, cover_variant, retailer_exclusive, incentive_variant, ratio_variant, virgin_variant, etc.). One of: standard, cover_variant, retailer_exclusive, convention_exclusive, incentive_variant, ratio_variant, foil_variant, sketch_variant, virgin_variant, blank_variant, artist_variant, hologram_variant, glow_in_dark_variant, facsimile, reprint, other.
Example: "cover_variant"
gradedbooleanWhether the comic is professionally graded.
Example: false
grade_scorestring or nullNumeric grade score (e.g. 9.8). Must not be greater than 10 characters.
Example: "9.8"
grading_companystring or nullGrading company (CGC, CBCS, PGX, other, self_graded). One of: CGC, CBCS, PGX, other, self_graded.
Example: "CGC"
grading_numberstring or nullGrading certification number. Must not be greater than 50 characters.
Example: "1234567890"
label_typestring or nullSlab label tier (e.g. universal, signature_series, restored, qualified). One of: universal, signature_series, qualified, restored, cgcxjsa, standard, verified_signature, signed, conserved.
Example: "universal"
page_qualitystring or nullInterior page color quality from the slab label. One of: white, off_white_to_white, off_white, cream_to_off_white, light_tan, tan, brittle.
Example: "white"
grader_notesstring or nullFree-text notes printed on the slab label. Must not be greater than 2000 characters.
Example: "Marvel Value Stamp #16 intact"
print_numberstring or nullWhich print this copy is (1st, 2nd, 3rd, … or other). One of: 1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th, other.
Example: "1st"
signature_witnessstring or nullAuthentication of the signature (CGC, CBCS, JSA, PSA/DNA, witnessed_in_person, unwitnessed, other). One of: CGC, CBCS, JSA, PSA/DNA, witnessed_in_person, unwitnessed, other.
Example: "witnessed_in_person"
estimated_valuenumber or nullCurrent estimated value in dollars. Must be at least 0. Must not be greater than 999999.99.
Example: 25
for_salebooleanWhether the item is for sale.
Example: false
statusstringWhether the copy is owned, for_sale, or sold. A sold copy keeps its record but leaves the collection totals. One of: owned, for_sale, sold.
Example: "sold"
sold_atstring or nullDate the copy was sold. Must be a valid date.
Example: "2026-08-14"
price_soldnumber or nullWhat the copy sold for, in dollars. Must be at least 0. Must not be greater than 99999999.99.
Example: 40
for_tradebooleanWhether the item is available for trade.
Example: false
is_publicbooleanWhether this collection item is publicly visible. Defaults to true.
Example: true
Added
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 1001
data.user_idintegerrequiredExample: 42
data.collectable_typestringrequiredExample: "Issue"
data.collectable_idintegerrequiredExample: 5432
data.variant_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 789
data.conditionstring or nullrequiredExample: "NM"
data.purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data.formatstring or nullrequiredExample: "single"
data.storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data.price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data.is_variantboolean or nullrequireddata.variant_descriptionstring or nullrequiredExample: "Cover B"
data.variant_typestring or nullrequiredExample: "cover"
data.gradedboolean or nullrequireddata.grade_scorestring or nullrequiredExample: "9.8"
data.grading_companystring or nullrequiredExample: "CGC"
data.grading_numberstring or nullrequiredExample: "1234567001"
data.label_typestring or nullrequiredExample: "universal"
data.page_qualitystring or nullrequiredExample: "white"
data.grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data.purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data.comic_shop_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 17
data.comic_shopobjectThe shop the copy came from, while it is listed; left out otherwise and for a read:showcase token.
data.comic_shop.idintegerrequiredExample: 17
data.comic_shop.namestring or nullrequiredExample: "Comic Corner"
data.comic_shop.slugstring or nullrequiredExample: "comic-corner"
data.comic_shop.citystring or nullrequiredExample: "Portland"
data.comic_shop.state_provincestring or nullrequiredExample: "OR"
data.acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data.purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data.custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data.bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.personal_ratingnumber or string or nullrequiredAs sent on a write: a number, or text.
Example: 4.5
data.tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data.loanobject or nullLeft out for a read:showcase token.
data.loan.idintegerrequiredExample: 3
data.loan.loaned_tostring or nullrequiredExample: "Sam"
data.loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data.loan.due_atstring or nullrequiredExample: "2024-02-15"
data.loan.is_overduebooleanrequireddata.loan.days_until_dueinteger or nullrequiredExample: 12
data.is_signedboolean or nullrequireddata.signed_bystring or nullrequiredExample: "Stan Lee"
data.signature_witnessstring or nullrequiredExample: "CGC"
data.signature_authenticatedbooleanrequireddata.is_cgc_ssbooleanrequireddata.print_numberstring or nullrequiredExample: "1"
data.estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data.value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data.for_saleboolean or nullrequireddata.for_tradeboolean or nullrequireddata.sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data.is_publicboolean or nullrequireddata.cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data.cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.collectableobject or nullrequiredThe issue.
data.collectable.idintegerrequiredExample: 5432
data.collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data.collectable.series_idinteger or nullrequiredExample: 123
data.collectable.issue_numberstring or nullrequiredExample: "1"
data.collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data.collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data.collectable.release_datestring or nullrequiredExample: "2018-07-11"
data.collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data.collectable.is_unreleasedbooleanrequireddata.collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.imagesobject or nullrequireddata.collectable.images.thumbstringExample: "https://...-thumb.webp"
data.collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.is_reprintbooleanrequireddata.collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data.collectable.min_ageinteger or nullrequiredExample: 13
data.collectable.is_nsfwbooleanrequireddata.collectable.average_ratingnumber or nullrequiredExample: 4.5
data.collectable.name_i18nobjectrequiredThe name in each language, keyed by BCP 47 tag (trimmed by ?languages=).
data.collectable.seriesobject or nulldata.collectable.series.idintegerrequiredExample: 123
data.collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.collectable.series.start_yearinteger or nullrequiredExample: 2018
data.collectable.series.end_yearinteger or nullrequiredExample: 2022
data.collectable.series.volume_numberinteger or nullrequiredExample: 5
data.collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data.collectable.series.formatstring or nullrequiredExample: "Standard"
data.collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data.collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.series.imagesobject or nullrequireddata.collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
was_on_wishlistbooleanrequiredExample: true
follow_upobjectrequiredfollow_up.promptbooleanrequiredThe member asked to be prompted, and there is something to offer.
Example: true
follow_up.can_mark_readbooleanrequiredExample: true
follow_up.can_reviewbooleanrequiredExample: true
follow_up.has_reviewbooleanrequiredExample: false
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:collection nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID.
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}A field the rules refuse, a variant of another issue, or an issue not released yet.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/issues/5432/collection' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"variant_id": 42,
"condition": "NM",
"notes": "First print, great condition",
"price_paid": 3.99,
"format": "standard",
"purchase_source": "comic_shop",
"purchase_store": "Third Eye Comics",
"custom_label": "Longbox A / row 3",
"bagged_at": "2024-07-01",
"personal_rating": 4.5,
"tags": [
"key"
],
"comic_shop_id": 412,
"acquisition_method": "purchase",
"purchased_at": "2024-06-15",
"storage_location": "Long box #3",
"is_signed": false,
"signed_by": "Stan Lee",
"is_variant": false,
"variant_description": "Skottie Young baby variant",
"variant_type": "cover_variant",
"graded": false,
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567890",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Marvel Value Stamp #16 intact",
"print_number": "1st",
"signature_witness": "witnessed_in_person",
"estimated_value": 25,
"for_sale": false,
"status": "sold",
"sold_at": "2026-08-14",
"price_sold": 40,
"for_trade": false,
"is_public": true
}'Example response 201
{
"data": {
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": 789,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"comic_shop": {
"id": 17,
"name": "Comic Corner",
"slug": "comic-corner",
"city": "Portland",
"state_province": "OR"
},
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": 4.5,
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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": {
"en": "Library One"
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
},
"was_on_wishlist": true,
"follow_up": {
"prompt": true,
"can_mark_read": true,
"can_review": true,
"has_review": false
}
}/api/v1/issues/{issue_id}/collectionUpdates one of the user's copies of the issue: the copy collection_item_id names (query or body), else the oldest copy (of the query's variant_id cover when one is sent). Only the fields sent change; tags replaces the copy's tags. is_read and read_at set the issue's read status too.
issue_idintegerrequiredThe issue ID.
Example: 5432
variant_idintegerSpecific variant ID to update (when user has multiple entries).
Example: 789
collection_item_idintegerSpecific collection item ID to update.
Example: 1001
application/jsonvariant_idinteger or nullLink to a specific issue variant. Must belong to the issue. Must match an existing stored value.
Example: 42
conditionstring or nullComic condition grade (CGC scale). One of: MT, NM/MT, NM+, NM, NM-, VF/NM, VF+, VF, VF-, F/VF, F+, F, F-, VG/F, VG+, VG, VG-, G/VG, G, FR, PR.
Example: "NM"
notesstring or nullUser notes about this copy. Must not be greater than 1000 characters.
Example: "First print, great condition"
price_paidnumber or nullPurchase price in dollars. Must be at least 0. Must not be greater than 999999.99.
Example: 3.99
formatstring or nullPhysical format of the copy. One of: standard, trade_paperback, hardcover, omnibus, deluxe_edition, annual, graphic_novel, digital, treasury, magazine, prestige, digest, other.
Example: "standard"
purchase_sourcestring or nullWhere the comic was purchased. One of: comic_shop, online_retailer, auction, convention, private_seller, subscription, digital_platform, second_hand_store, inheritance, gift, trade, other.
Example: "comic_shop"
purchase_storestring or nullName of the store the copy was bought from, as free text. Use comic_shop_id instead where the shop is one VerseDB catalogs. Must not be greater than 255 characters.
Example: "Third Eye Comics"
custom_labelstring or nullThe collector's own label for this copy. Free-text and unrelated to a slab label. Must not be greater than 255 characters.
Example: "Longbox A / row 3"
bagged_atstring or nullDate the copy was bagged and boarded (YYYY-MM-DD). Must be a valid date.
Example: "2024-07-01"
personal_ratingnumber or nullThe collector's own rating of this copy, in half stars from 0.5 to 5. Private to the copy: it is not a review and feeds no community average. One of: 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.
Example: 4.5
tagsarray of stringsThe collector's own labels for this copy. Private to the account — one user's tags are never visible to another. Must not be greater than 100 characters.
Example: ["key"]
comic_shop_idinteger or nullID of the specific comic shop the copy was purchased from. Self-reported; independent of purchase_source. Must match an existing stored value.
Example: 412
acquisition_methodstring or nullHow the comic was acquired. One of: purchase, trade, gift, inheritance, subscription, found, other.
Example: "purchase"
purchased_atstring or nullDate of purchase (YYYY-MM-DD). Must be a valid date.
Example: "2024-06-15"
storage_locationstring or nullWhere the comic is stored. Must not be greater than 255 characters.
Example: "Long box #3"
is_signedbooleanWhether the comic is signed.
Example: false
signed_bystring or nullName(s) of the creator(s) who signed the comic. Free-text. Comma-separate multiple signers. Must not be greater than 255 characters.
Example: "Stan Lee"
is_variantbooleanWhether this copy is a variant cover.
Example: false
variant_descriptionstring or nullFree-text description of the variant cover. Must not be greater than 500 characters.
Example: "Skottie Young baby variant"
variant_typestring or nullVariant classification (standard, cover_variant, retailer_exclusive, incentive_variant, ratio_variant, virgin_variant, etc.). One of: standard, cover_variant, retailer_exclusive, convention_exclusive, incentive_variant, ratio_variant, foil_variant, sketch_variant, virgin_variant, blank_variant, artist_variant, hologram_variant, glow_in_dark_variant, facsimile, reprint, other.
Example: "cover_variant"
gradedbooleanWhether the comic is professionally graded.
Example: false
grade_scorestring or nullNumeric grade score (e.g. 9.8). Must not be greater than 10 characters.
Example: "9.8"
grading_companystring or nullGrading company (CGC, CBCS, PGX, other, self_graded). One of: CGC, CBCS, PGX, other, self_graded.
Example: "CGC"
grading_numberstring or nullGrading certification number. Must not be greater than 50 characters.
Example: "1234567890"
label_typestring or nullSlab label tier (e.g. universal, signature_series, restored, qualified). One of: universal, signature_series, qualified, restored, cgcxjsa, standard, verified_signature, signed, conserved.
Example: "universal"
page_qualitystring or nullInterior page color quality from the slab label. One of: white, off_white_to_white, off_white, cream_to_off_white, light_tan, tan, brittle.
Example: "white"
grader_notesstring or nullFree-text notes printed on the slab label. Must not be greater than 2000 characters.
Example: "Marvel Value Stamp #16 intact"
print_numberstring or nullWhich print this copy is (1st, 2nd, 3rd, … or other). One of: 1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th, other.
Example: "1st"
signature_witnessstring or nullAuthentication of the signature (CGC, CBCS, JSA, PSA/DNA, witnessed_in_person, unwitnessed, other). One of: CGC, CBCS, JSA, PSA/DNA, witnessed_in_person, unwitnessed, other.
Example: "witnessed_in_person"
estimated_valuenumber or nullCurrent estimated value in dollars. Must be at least 0. Must not be greater than 999999.99.
Example: 25
for_salebooleanWhether the item is for sale.
Example: false
statusstringWhether the copy is owned, for_sale, or sold. A sold copy keeps its record but leaves the collection totals. One of: owned, for_sale, sold.
Example: "sold"
sold_atstring or nullDate the copy was sold. Must be a valid date.
Example: "2026-08-14"
price_soldnumber or nullWhat the copy sold for, in dollars. Must be at least 0. Must not be greater than 99999999.99.
Example: 40
for_tradebooleanWhether the item is available for trade.
Example: false
is_publicbooleanWhether this collection item is publicly visible.
Example: true
is_readbooleanWhether the issue has been read.
Example: true
read_atstring or nullWhen the issue was read (YYYY-MM-DD). Cannot be in the future. Must be a valid date. Must be a date before or equal to today.
Example: "2024-06-15"
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 1001
data.user_idintegerrequiredExample: 42
data.collectable_typestringrequiredExample: "Issue"
data.collectable_idintegerrequiredExample: 5432
data.variant_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 789
data.conditionstring or nullrequiredExample: "NM"
data.purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data.formatstring or nullrequiredExample: "single"
data.storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data.price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data.is_variantboolean or nullrequireddata.variant_descriptionstring or nullrequiredExample: "Cover B"
data.variant_typestring or nullrequiredExample: "cover"
data.gradedboolean or nullrequireddata.grade_scorestring or nullrequiredExample: "9.8"
data.grading_companystring or nullrequiredExample: "CGC"
data.grading_numberstring or nullrequiredExample: "1234567001"
data.label_typestring or nullrequiredExample: "universal"
data.page_qualitystring or nullrequiredExample: "white"
data.grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data.purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data.comic_shop_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 17
data.comic_shopobjectThe shop the copy came from, while it is listed; left out otherwise and for a read:showcase token.
data.comic_shop.idintegerrequiredExample: 17
data.comic_shop.namestring or nullrequiredExample: "Comic Corner"
data.comic_shop.slugstring or nullrequiredExample: "comic-corner"
data.comic_shop.citystring or nullrequiredExample: "Portland"
data.comic_shop.state_provincestring or nullrequiredExample: "OR"
data.acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data.purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data.custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data.bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.personal_ratingnumber or string or nullrequiredAs sent on a write: a number, or text.
Example: 4.5
data.tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data.loanobject or nullLeft out for a read:showcase token.
data.loan.idintegerrequiredExample: 3
data.loan.loaned_tostring or nullrequiredExample: "Sam"
data.loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data.loan.due_atstring or nullrequiredExample: "2024-02-15"
data.loan.is_overduebooleanrequireddata.loan.days_until_dueinteger or nullrequiredExample: 12
data.is_signedboolean or nullrequireddata.signed_bystring or nullrequiredExample: "Stan Lee"
data.signature_witnessstring or nullrequiredExample: "CGC"
data.signature_authenticatedbooleanrequireddata.is_cgc_ssbooleanrequireddata.print_numberstring or nullrequiredExample: "1"
data.estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data.value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data.for_saleboolean or nullrequireddata.for_tradeboolean or nullrequireddata.sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data.is_publicboolean or nullrequireddata.cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data.cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.collectableobject or nullrequiredThe issue.
data.collectable.idintegerrequiredExample: 5432
data.collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data.collectable.series_idinteger or nullrequiredExample: 123
data.collectable.issue_numberstring or nullrequiredExample: "1"
data.collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data.collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data.collectable.release_datestring or nullrequiredExample: "2018-07-11"
data.collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data.collectable.is_unreleasedbooleanrequireddata.collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.imagesobject or nullrequireddata.collectable.images.thumbstringExample: "https://...-thumb.webp"
data.collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.is_reprintbooleanrequireddata.collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data.collectable.min_ageinteger or nullrequiredExample: 13
data.collectable.is_nsfwbooleanrequireddata.collectable.average_ratingnumber or nullrequiredExample: 4.5
data.collectable.name_i18nobjectrequiredThe name in each language, keyed by BCP 47 tag (trimmed by ?languages=).
data.collectable.seriesobject or nulldata.collectable.series.idintegerrequiredExample: 123
data.collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.collectable.series.start_yearinteger or nullrequiredExample: 2018
data.collectable.series.end_yearinteger or nullrequiredExample: 2022
data.collectable.series.volume_numberinteger or nullrequiredExample: 5
data.collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data.collectable.series.formatstring or nullrequiredExample: "Standard"
data.collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data.collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.series.imagesobject or nullrequireddata.collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:collection nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID (message), or the user holds no such copy of it (error).
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}A field the rules refuse, a variant of another issue, or is_read on an issue not released yet (the copy is still updated).
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 PATCH \
'https://versedb.com/api/v1/issues/5432/collection' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"variant_id": 42,
"condition": "NM",
"notes": "First print, great condition",
"price_paid": 3.99,
"format": "standard",
"purchase_source": "comic_shop",
"purchase_store": "Third Eye Comics",
"custom_label": "Longbox A / row 3",
"bagged_at": "2024-07-01",
"personal_rating": 4.5,
"tags": [
"key"
],
"comic_shop_id": 412,
"acquisition_method": "purchase",
"purchased_at": "2024-06-15",
"storage_location": "Long box #3",
"is_signed": false,
"signed_by": "Stan Lee",
"is_variant": false,
"variant_description": "Skottie Young baby variant",
"variant_type": "cover_variant",
"graded": false,
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567890",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Marvel Value Stamp #16 intact",
"print_number": "1st",
"signature_witness": "witnessed_in_person",
"estimated_value": 25,
"for_sale": false,
"status": "sold",
"sold_at": "2026-08-14",
"price_sold": 40,
"for_trade": false,
"is_public": true,
"is_read": true,
"read_at": "2024-06-15"
}'Example response 200
{
"data": {
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": 789,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"comic_shop": {
"id": 17,
"name": "Comic Corner",
"slug": "comic-corner",
"city": "Portland",
"state_province": "OR"
},
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": 4.5,
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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": {
"en": "Library One"
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
}
}/api/v1/issues/{issue_id}/collectionRemoves one of the user's copies of the issue: the copy collection_item_id names, else the oldest copy (of variant_id's cover when one is sent). Each may come in the query or the body.
issue_idintegerrequiredThe issue ID.
Example: 5432
variant_idintegerSpecific variant ID to remove (optional).
Example: 789
collection_item_idintegerSpecific collection item ID to remove (optional).
Example: 1001
Removed
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:collection nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No live issue has this ID (message), or the user holds no such copy of it (error).
messagestringrequiredExample: "No query results for model [App\\Models\\Issue] 5432"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\Issue] 5432"
}A variant that does not exist, or a collection item ID that is not an integer.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/issues/5432/collection' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'/api/v1/user/collections/{collection_item_id}/loanRecords that one of the user's copies is out on loan. A copy already out is a 409 rather than a replacement: mark it returned, then lend it again.
collection_item_idintegerrequiredThe collection item ID.
Example: 1001
application/jsonloaned_tostringrequiredWho has the comic. Free text: the borrower does not need a VerseDB account.
Example: "Dan from the shop"
loaned_atstring or nullThe day it left (YYYY-MM-DD). Defaults to today.
Example: "2026-09-01"
due_atstring or nullWhen it is due back (YYYY-MM-DD), on or after loaned_at. Omit for an open-ended loan.
Example: "2026-10-01"
notesstring or nullAnything worth recording about the loan.
Example: "Lent at the Saturday meetup"
Lent
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 1001
data.user_idintegerrequiredExample: 42
data.collectable_typestringrequiredExample: "Issue"
data.collectable_idintegerrequiredExample: 5432
data.variant_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 789
data.conditionstring or nullrequiredExample: "NM"
data.purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data.formatstring or nullrequiredExample: "single"
data.storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data.price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data.is_variantboolean or nullrequireddata.variant_descriptionstring or nullrequiredExample: "Cover B"
data.variant_typestring or nullrequiredExample: "cover"
data.gradedboolean or nullrequireddata.grade_scorestring or nullrequiredExample: "9.8"
data.grading_companystring or nullrequiredExample: "CGC"
data.grading_numberstring or nullrequiredExample: "1234567001"
data.label_typestring or nullrequiredExample: "universal"
data.page_qualitystring or nullrequiredExample: "white"
data.grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data.purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data.comic_shop_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 17
data.comic_shopobjectThe shop the copy came from, while it is listed; left out otherwise and for a read:showcase token.
data.comic_shop.idintegerrequiredExample: 17
data.comic_shop.namestring or nullrequiredExample: "Comic Corner"
data.comic_shop.slugstring or nullrequiredExample: "comic-corner"
data.comic_shop.citystring or nullrequiredExample: "Portland"
data.comic_shop.state_provincestring or nullrequiredExample: "OR"
data.acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data.purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data.custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data.bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.personal_ratingnumber or string or nullrequiredAs sent on a write: a number, or text.
Example: 4.5
data.tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data.loanobject or nullLeft out for a read:showcase token.
data.loan.idintegerrequiredExample: 3
data.loan.loaned_tostring or nullrequiredExample: "Sam"
data.loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data.loan.due_atstring or nullrequiredExample: "2024-02-15"
data.loan.is_overduebooleanrequireddata.loan.days_until_dueinteger or nullrequiredExample: 12
data.is_signedboolean or nullrequireddata.signed_bystring or nullrequiredExample: "Stan Lee"
data.signature_witnessstring or nullrequiredExample: "CGC"
data.signature_authenticatedbooleanrequireddata.is_cgc_ssbooleanrequireddata.print_numberstring or nullrequiredExample: "1"
data.estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data.value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data.for_saleboolean or nullrequireddata.for_tradeboolean or nullrequireddata.sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data.is_publicboolean or nullrequireddata.cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data.cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.collectableobject or nullrequiredThe issue.
data.collectable.idintegerrequiredExample: 5432
data.collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data.collectable.series_idinteger or nullrequiredExample: 123
data.collectable.issue_numberstring or nullrequiredExample: "1"
data.collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data.collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data.collectable.release_datestring or nullrequiredExample: "2018-07-11"
data.collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data.collectable.is_unreleasedbooleanrequireddata.collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.imagesobject or nullrequireddata.collectable.images.thumbstringExample: "https://...-thumb.webp"
data.collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.is_reprintbooleanrequireddata.collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data.collectable.min_ageinteger or nullrequiredExample: 13
data.collectable.is_nsfwbooleanrequireddata.collectable.average_ratingnumber or nullrequiredExample: 4.5
data.collectable.name_i18nobjectrequiredThe name in each language, keyed by BCP 47 tag (trimmed by ?languages=).
data.collectable.seriesobject or nulldata.collectable.series.idintegerrequiredExample: 123
data.collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.collectable.series.start_yearinteger or nullrequiredExample: 2018
data.collectable.series.end_yearinteger or nullrequiredExample: 2022
data.collectable.series.volume_numberinteger or nullrequiredExample: 5
data.collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data.collectable.series.formatstring or nullrequiredExample: "Standard"
data.collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data.collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.series.imagesobject or nullrequireddata.collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:collection nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No collection item has this ID, or the user does not own it (Collection item not found.).
messagestringrequiredExample: "No query results for model [App\\Models\\UserCollection] 1001"
Example body, from the documented examples
{
"message": "No query results for model [App\\Models\\UserCollection] 1001"
}The copy is already on loan.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "This copy is already on loan. Mark it returned before lending it again."
Example body, from the documented examples
{
"message": "This copy is already on loan. Mark it returned before lending it again."
}A field the rules refuse.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/user/collections/1001/loan' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"loaned_to": "Dan from the shop",
"loaned_at": "2026-09-01",
"due_at": "2026-10-01",
"notes": "Lent at the Saturday meetup"
}'Example response 200
{
"data": {
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": 789,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"comic_shop": {
"id": 17,
"name": "Comic Corner",
"slug": "comic-corner",
"city": "Portland",
"state_province": "OR"
},
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": 4.5,
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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": {
"en": "Library One"
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
}
}/api/v1/user/collections/{collection_item_id}/loanCloses the copy's open loan. A copy with no open loan is a 404, so a repeat call does not silently succeed.
collection_item_idintegerrequiredThe collection item ID.
Example: 1001
application/jsonreturned_atstring or nullThe day it came back (YYYY-MM-DD). Defaults to today.
Example: "2026-09-20"
Returned
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataobjectrequireddata.idintegerrequiredExample: 1001
data.user_idintegerrequiredExample: 42
data.collectable_typestringrequiredExample: "Issue"
data.collectable_idintegerrequiredExample: 5432
data.variant_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 789
data.conditionstring or nullrequiredExample: "NM"
data.purchased_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.notesstring or nullLeft out for a read:showcase token.
Example: "First print"
data.formatstring or nullrequiredExample: "single"
data.storage_locationstring or nullLeft out for a read:showcase token.
Example: "Long box 3"
data.price_paidstring or nullLeft out for a read:showcase token.
Example: "3.99"
data.is_variantboolean or nullrequireddata.variant_descriptionstring or nullrequiredExample: "Cover B"
data.variant_typestring or nullrequiredExample: "cover"
data.gradedboolean or nullrequireddata.grade_scorestring or nullrequiredExample: "9.8"
data.grading_companystring or nullrequiredExample: "CGC"
data.grading_numberstring or nullrequiredExample: "1234567001"
data.label_typestring or nullrequiredExample: "universal"
data.page_qualitystring or nullrequiredExample: "white"
data.grader_notesstring or nullLeft out for a read:showcase token.
Example: "Light spine stress"
data.purchase_sourcestring or nullLeft out for a read:showcase token.
Example: "lcs"
data.comic_shop_idinteger or string or nullrequiredAs sent: a number, or digits as text.
Example: 17
data.comic_shopobjectThe shop the copy came from, while it is listed; left out otherwise and for a read:showcase token.
data.comic_shop.idintegerrequiredExample: 17
data.comic_shop.namestring or nullrequiredExample: "Comic Corner"
data.comic_shop.slugstring or nullrequiredExample: "comic-corner"
data.comic_shop.citystring or nullrequiredExample: "Portland"
data.comic_shop.state_provincestring or nullrequiredExample: "OR"
data.acquisition_methodstring or nullLeft out for a read:showcase token.
Example: "purchased"
data.purchase_storestring or nullLeft out for a read:showcase token.
Example: "Comic Corner"
data.custom_labelstring or nullLeft out for a read:showcase token.
Example: "Keys"
data.bagged_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.personal_ratingnumber or string or nullrequiredAs sent on a write: a number, or text.
Example: 4.5
data.tagsarray of stringsLeft out for a read:showcase token.
Example: ["keys"]
data.loanobject or nullLeft out for a read:showcase token.
data.loan.idintegerrequiredExample: 3
data.loan.loaned_tostring or nullrequiredExample: "Sam"
data.loan.loaned_atstring or nullrequiredExample: "2024-01-15"
data.loan.due_atstring or nullrequiredExample: "2024-02-15"
data.loan.is_overduebooleanrequireddata.loan.days_until_dueinteger or nullrequiredExample: 12
data.is_signedboolean or nullrequireddata.signed_bystring or nullrequiredExample: "Stan Lee"
data.signature_witnessstring or nullrequiredExample: "CGC"
data.signature_authenticatedbooleanrequireddata.is_cgc_ssbooleanrequireddata.print_numberstring or nullrequiredExample: "1"
data.estimated_valuestring or nullLeft out for a read:showcase token.
Example: "125.00"
data.value_last_updatedstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.statusstring or nullrequiredowned, for_sale or sold.
Example: "owned"
data.for_saleboolean or nullrequireddata.for_tradeboolean or nullrequireddata.sold_atstring or nullLeft out for a read:showcase token.
Example: "2024-01-15T00:00:00.000000Z"
data.price_soldstring or nullLeft out for a read:showcase token.
Example: "150.00"
data.is_publicboolean or nullrequireddata.cover_scan_urlstring or nullrequiredExample: "https://...-cover_md.webp"
data.cover_scan_url_lgstring or nullrequiredExample: "https://...-cover_lg.webp"
data.cover_scan_uploaded_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.created_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.updated_atstring or nullrequiredExample: "2024-01-15T10:30:00.000000Z"
data.collectableobject or nullrequiredThe issue.
data.collectable.idintegerrequiredExample: 5432
data.collectable.slugstring or nullrequiredExample: "amazing-spider-man-1"
data.collectable.series_idinteger or nullrequiredExample: 123
data.collectable.issue_numberstring or nullrequiredExample: "1"
data.collectable.namestring or nullrequiredExample: "The Chameleon Strikes!"
data.collectable.cover_datestring or nullrequiredExample: "2018-09-01"
data.collectable.release_datestring or nullrequiredExample: "2018-07-11"
data.collectable.foc_datestring or nullrequiredExample: "2018-06-18"
data.collectable.is_unreleasedbooleanrequireddata.collectable.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.imagesobject or nullrequireddata.collectable.images.thumbstringExample: "https://...-thumb.webp"
data.collectable.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.is_reprintbooleanrequireddata.collectable.content_rating_labelstring or nullrequiredExample: "Teen"
data.collectable.min_ageinteger or nullrequiredExample: 13
data.collectable.is_nsfwbooleanrequireddata.collectable.average_ratingnumber or nullrequiredExample: 4.5
data.collectable.name_i18nobjectrequiredThe name in each language, keyed by BCP 47 tag (trimmed by ?languages=).
data.collectable.seriesobject or nulldata.collectable.series.idintegerrequiredExample: 123
data.collectable.series.namestring or nullrequiredExample: "The Amazing Spider-Man"
data.collectable.series.slugstring or nullrequiredExample: "the-amazing-spider-man-2018"
data.collectable.series.start_yearinteger or nullrequiredExample: 2018
data.collectable.series.end_yearinteger or nullrequiredExample: 2022
data.collectable.series.volume_numberinteger or nullrequiredExample: 5
data.collectable.series.publication_typestring or nullrequiredExample: "regular_series"
data.collectable.series.formatstring or nullrequiredExample: "Standard"
data.collectable.series.cached_issues_countinteger or nullrequiredExample: 93
data.collectable.series.cover_urlstring or nullrequiredExample: "https://...-cover_lg.webp"
data.collectable.series.imagesobject or nullrequireddata.collectable.series.images.cover_smstringExample: "https://...-cover_sm.webp"
data.collectable.series.images.cover_mdstringExample: "https://...-cover_md.webp"
data.collectable.series.images.cover_lgstringExample: "https://...-cover_lg.webp"
data.collectable.series.publisher_namestring or nullrequiredExample: "Marvel"
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}The token holds neither write:collection nor write:lists.
messagestringrequiredExample: "Insufficient token scope."
Example body, from the documented examples
{
"message": "Insufficient token scope."
}No collection item has this ID, the user does not own it, or it is not on loan.
messagestringrequiredExample: "This copy is not on loan."
Example body, from the documented examples
{
"message": "This copy is not on loan."
}A returned_at that is not a date.
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringrequiredExample: "The specified variant does not exist or does not belong to this issue."
errorsobjectrequiredExample body, from the documented examples
{
"message": "The specified variant does not exist or does not belong to this issue.",
"errors": {
"variant_id": [
"The specified variant does not exist or does not belong to this issue."
]
}
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/user/collections/1001/loan' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"returned_at": "2026-09-20"
}'Example response 200
{
"data": {
"id": 1001,
"user_id": 42,
"collectable_type": "Issue",
"collectable_id": 5432,
"variant_id": 789,
"condition": "NM",
"purchased_at": "2024-01-15T00:00:00.000000Z",
"notes": "First print",
"format": "single",
"storage_location": "Long box 3",
"price_paid": "3.99",
"variant_description": "Cover B",
"variant_type": "cover",
"grade_score": "9.8",
"grading_company": "CGC",
"grading_number": "1234567001",
"label_type": "universal",
"page_quality": "white",
"grader_notes": "Light spine stress",
"purchase_source": "lcs",
"comic_shop_id": 17,
"comic_shop": {
"id": 17,
"name": "Comic Corner",
"slug": "comic-corner",
"city": "Portland",
"state_province": "OR"
},
"acquisition_method": "purchased",
"purchase_store": "Comic Corner",
"custom_label": "Keys",
"bagged_at": "2024-01-15T00:00:00.000000Z",
"personal_rating": 4.5,
"tags": [
"keys"
],
"loan": {
"id": 3,
"loaned_to": "Sam",
"loaned_at": "2024-01-15",
"due_at": "2024-02-15",
"days_until_due": 12
},
"signed_by": "Stan Lee",
"signature_witness": "CGC",
"print_number": "1",
"estimated_value": "125.00",
"value_last_updated": "2024-01-15T00:00:00.000000Z",
"status": "owned",
"sold_at": "2024-01-15T00:00:00.000000Z",
"price_sold": "150.00",
"cover_scan_url": "https://...-cover_md.webp",
"cover_scan_url_lg": "https://...-cover_lg.webp",
"cover_scan_uploaded_at": "2024-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z",
"collectable": {
"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": {
"en": "Library One"
},
"series": {
"id": 123,
"name": "The Amazing Spider-Man",
"slug": "the-amazing-spider-man-2018",
"start_year": 2018,
"end_year": 2022,
"volume_number": 5,
"publication_type": "regular_series",
"format": "Standard",
"cached_issues_count": 93,
"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_name": "Marvel"
}
}
}
}/api/v1/user/followsReturns all entities the user is following (titles, characters, podcasts, etc.).
per_pageintegerItems per page (max 100).
Example: 20
typestringOnly follows of this followable type (the morph alias, e.g. Title, Character, Creator, User).
Example: "Character"
qstringOnly follows whose followed entity matches this search (name; username for users).
Example: "spider"
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsdata[].idintegerExample: 789
data[].followable_typestringExample: "title"
data[].followable_idintegerExample: 123
data[].followableobjectdata[].followable.idintegerExample: 123
data[].followable.namestringExample: "Spider-Man"
data[].followable.cover_urlstringExample: "..."
data[].created_atstringExample: "2024-01-15T10:30:00Z"
metaobjectmeta.current_pageintegerExample: 1
meta.last_pageintegerExample: 1
meta.per_pageintegerExample: 20
meta.totalintegerExample: 12
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}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/user/follows' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": 789,
"followable_type": "title",
"followable_id": 123,
"followable": {
"id": 123,
"name": "Spider-Man",
"cover_url": "..."
},
"created_at": "2024-01-15T10:30:00Z"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 12
}
}/api/v1/follow/{type}/{id}/checkReports whether the authenticated user currently follows the given entity.
typestringrequiredThe content type (title, character, podcast, creator, publisher, team, story_arc, comic_shop, event, event_franchise, user).
Example: "title"
idintegerrequiredThe ID of the content.
Example: 45
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
is_followingbooleanExample: true
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}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/follow/title/45/check' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"is_following": true
}/api/v1/followFollows a title, character, podcast, creator, publisher, team, story arc, comic shop, event, event franchise, or user.
application/jsontypestringrequiredThe content type (title, character, podcast, creator, publisher, team, story_arc, comic_shop, event, event_franchise, user). An event_franchise is the recurring convention itself, so the follow covers every edition, including ones added later. Following an event that belongs to a franchise follows the franchise too, and unfollowing either clears both.
Example: "title"
idintegerrequiredThe ID of the content to follow.
Example: 45
preferencesobject or nullNotification preferences.
preferences.email_notificationsbooleanReceive email notifications.
Example: true
preferences.push_notificationsbooleanReceive push notifications.
Example: false
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringExample: "Following title successfully"
is_followingbooleanExample: true
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}Refused
messagestringExample: "This profile is private, so it cannot be followed."
codestringExample: "private_profile"
is_followingbooleanExample: false
Example body, from the documented examples
{
"message": "This profile is private, so it cannot be followed.",
"code": "private_profile",
"is_following": false
}Not Found
messagestringExample: "Title not found"
Example body, from the documented examples
{
"message": "Title not found"
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 POST \
'https://versedb.com/api/v1/follow' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"type": "title",
"id": 45,
"preferences": {
"email_notifications": true,
"push_notifications": false
}
}'Example response 200
{
"message": "Following title successfully",
"is_following": true
}/api/v1/follow/{type}/{id}Stops following the given entity for the authenticated user.
typestringrequiredThe content type (title, character, podcast, creator, publisher, team, story_arc, comic_shop, event, event_franchise, user).
Example: "title"
idintegerrequiredThe ID of the followed content.
Example: 45
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
messagestringExample: "Unfollowed title successfully"
is_followingbooleanExample: false
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}Not Found
messagestringExample: "Title not found"
Example body, from the documented examples
{
"message": "Title not found"
}Rate limit exceeded. This endpoint allows 150/hour (free) or 500/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 DELETE \
'https://versedb.com/api/v1/follow/title/45' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"message": "Unfollowed title successfully",
"is_following": false
}/api/v1/user/activityAggregates recent activity from collections, reads, follows, and reviews.
per_pageintegerNumber of results per page (max 100).
Example: 20
pageintegerPage of results to return.
Example: 1
Success
Headers: X-RateLimit-Limit, X-RateLimit-Remaining
dataarray of objectsdata[].idstringExample: "collection_9921"
data[].typestringExample: "collection"
data[].actionstringExample: "added_to_collection"
data[].created_atstringExample: "2026-06-20T14:32:00+00:00"
data[].dataobjectdata[].data.issue_idintegerExample: 5432
data[].data.issue_namestringExample: "Amazing Spider-Man #1"
data[].data.series_namestringExample: "Amazing Spider-Man"
data[].data.series_start_yearintegerExample: 2022
data[].data.cover_urlstringExample: "https://r2.versedb.com/uploads/issues/asm-5432/asm-5432-cover_md.webp"
metaobjectmeta.current_pageintegerExample: 1
meta.per_pageintegerExample: 20
meta.totalintegerExample: 84
meta.last_pageintegerExample: 5
Unauthenticated. The bearer token is missing, invalid, or revoked.
messagestringrequiredExample: "Unauthenticated."
Example body, from the documented examples
{
"message": "Unauthenticated."
}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/user/activity' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
--header 'Accept: application/json'Example response 200
{
"data": [
{
"id": "collection_9921",
"type": "collection",
"action": "added_to_collection",
"created_at": "2026-06-20T14:32:00+00:00",
"data": {
"issue_id": 5432,
"issue_name": "Amazing Spider-Man #1",
"series_name": "Amazing Spider-Man",
"series_start_year": 2022,
"cover_url": "https://r2.versedb.com/uploads/issues/asm-5432/asm-5432-cover_md.webp"
}
},
{
"id": "review_312",
"type": "review",
"action": "wrote_review",
"created_at": "2026-06-19T09:10:00+00:00",
"data": {
"review_id": 312,
"issue_id": 5410,
"issue_name": "Batman #135",
"series_name": "Batman",
"series_start_year": 2016,
"rating": 4.5,
"content_preview": "A strong anniversary issue that pays off years of buildup...",
"cover_url": "https://r2.versedb.com/uploads/issues/batman-5410/batman-5410-cover_md.webp"
}
}
],
"meta": {
"current_page": 1,
"per_page": 20,
"total": 84,
"last_page": 5
}
}X-RateLimit-LimitintegerRequest quota per hour for your tier.
X-RateLimit-RemainingintegerRequests remaining in the current window.
Retry-AfterintegerSeconds to wait before retrying.