Skip to content

Story Arcs

Endpoints for browsing story arcs and crossover events.

List all story arcs with optional search

GET/api/v1/story-arcs
Requires a token

Returns a paginated list of story arcs and crossover events by name. Narrow the results with q, status, or type.

Query parameters

qstring

Search by story arc name.

Example: "civil war"

statusstring

Filter by status (active, ended, upcoming, cancelled).

Example: "ended"

typestring

Filter by type (main_story, side_story, tie_in_arc, mini_series_arc, crossover_event, prelude, epilogue, other).

Example: "crossover_event"

sortstring

Pass any value to replace the relevance ordering applied to q results with the name.

Example: "name"

directionstring

Sort direction (asc, desc).

Example: "asc"

limitinteger

Number of results per page (max 50).

Example: 20

pageinteger

Page number; meta.last_page says where the list ends.

Example: 1

languagesstring

Keep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes.

Example: "ja,ko"

Responses

200

Success

Headers: X-RateLimit-Limit, X-RateLimit-Remaining

dataarray of objectsrequired
data[].idintegerrequired

Example: 24

data[].namestring or nullrequired

Example: "The Night Gwen Stacy Died"

data[].slugstring or nullrequired

Example: "the-night-gwen-stacy-died"

data[].typestring or nullrequired

main_story, side_story, tie_in_arc, mini_series_arc, crossover_event, prelude, epilogue or other.

Example: "main_story"

data[].statusstring or nullrequired

active, ended, upcoming or cancelled.

Example: "ended"

data[].image_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data[].imagesobject or nullrequired
data[].images.cover_smstring

Example: "https://...-cover_sm.webp"

data[].images.cover_mdstring

Example: "https://...-cover_md.webp"

data[].images.cover_lgstring

Example: "https://...-cover_lg.webp"

data[].issues_countinteger or nullrequired

Example: 2

data[].name_i18nobjectrequired

One name per language, keyed by BCP 47 tag.

data[].aliases_i18nobjectrequired

Alternative names per language.

data[].original_localestring or nullrequired

The language the story arc is from, a BCP 47 tag.

Example: "en"

data[].primary_universeobject or nullrequired
data[].primary_universe.idintegerrequired

Example: 1

data[].primary_universe.namestring or nullrequired

Example: "Earth-616"

linksobjectrequired
links.firststringrequired
links.laststringrequired
links.prevstring or nullrequired
links.nextstring or nullrequired
metaobjectrequired
meta.current_pageintegerrequired

Example: 1

meta.frominteger or nullrequired

Example: 1

meta.last_pageintegerrequired

Example: 25

meta.linksarray of objectsrequired
meta.links[].urlstring or nullrequired
meta.links[].labelstringrequired
meta.links[].pageinteger or null
meta.links[].activebooleanrequired
meta.pathstringrequired
meta.per_pageintegerrequired

Example: 20

meta.tointeger or nullrequired

Example: 20

meta.totalintegerrequired

Example: 500

401

Unauthenticated. The bearer token is missing, invalid, or revoked.

messagestringrequired

Example: "Unauthenticated."

Example body, from the documented examples

{
  "message": "Unauthenticated."
}
403

The token lacks the read:public ability.

messagestringrequired

Example: "Insufficient token scope."

Example body, from the documented examples

{
  "message": "Insufficient token scope."
}
429

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

messagestringrequired

Example: "Too Many Attempts."

Example body, from the documented examples

{
  "message": "Too Many Attempts."
}

Example request

curl --request GET \
  'https://versedb.com/api/v1/story-arcs' \
  --header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
  --header 'Accept: application/json'

Example response 200

{
  "data": [
    {
      "id": 24,
      "name": "The Night Gwen Stacy Died",
      "slug": "the-night-gwen-stacy-died",
      "type": "main_story",
      "status": "ended",
      "image_url": "https://...-cover_md.webp",
      "images": {
        "cover_sm": "https://...-cover_sm.webp",
        "cover_md": "https://...-cover_md.webp",
        "cover_lg": "https://...-cover_lg.webp"
      },
      "issues_count": 2,
      "name_i18n": {
        "ja": {
          "value": "講談社",
          "reading": "こうだんしゃ",
          "source": "madb"
        }
      },
      "aliases_i18n": {
        "en": [
          "Kodansha Comics"
        ]
      },
      "original_locale": "en",
      "primary_universe": {
        "id": 1,
        "name": "Earth-616"
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 25,
    "per_page": 20,
    "to": 20,
    "total": 500
  }
}

Get story arcs for a specific issue

GET/api/v1/issues/{issue_id}/story-arcs
Requires a token

Returns every story arc the given issue is part of.

Path parameters

issue_idintegerrequired

The issue ID.

Example: 5432

Query parameters

qstring

Optional case-insensitive search within these results.

Example: "spider"

limitinteger

Number of results per page (max 50).

Example: 20

pageinteger

Page number; meta.last_page says where the list ends.

Example: 1

languagesstring

Keep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes.

Example: "ja,ko"

Responses

200

Success

Headers: X-RateLimit-Limit, X-RateLimit-Remaining

dataarray of objectsrequired
data[].idintegerrequired

Example: 24

data[].namestring or nullrequired

Example: "The Night Gwen Stacy Died"

data[].slugstring or nullrequired

Example: "the-night-gwen-stacy-died"

data[].typestring or nullrequired

main_story, side_story, tie_in_arc, mini_series_arc, crossover_event, prelude, epilogue or other.

Example: "main_story"

data[].statusstring or nullrequired

active, ended, upcoming or cancelled.

Example: "ended"

data[].image_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data[].imagesobject or nullrequired
data[].images.cover_smstring

Example: "https://...-cover_sm.webp"

data[].images.cover_mdstring

Example: "https://...-cover_md.webp"

data[].images.cover_lgstring

Example: "https://...-cover_lg.webp"

data[].issues_countinteger or nullrequired

Example: 2

data[].name_i18nobjectrequired

One name per language, keyed by BCP 47 tag.

data[].aliases_i18nobjectrequired

Alternative names per language.

data[].original_localestring or nullrequired

The language the story arc is from, a BCP 47 tag.

Example: "en"

linksobjectrequired
links.firststringrequired
links.laststringrequired
links.prevstring or nullrequired
links.nextstring or nullrequired
metaobjectrequired
meta.current_pageintegerrequired

Example: 1

meta.frominteger or nullrequired

Example: 1

meta.last_pageintegerrequired

Example: 25

meta.linksarray of objectsrequired
meta.links[].urlstring or nullrequired
meta.links[].labelstringrequired
meta.links[].pageinteger or null
meta.links[].activebooleanrequired
meta.pathstringrequired
meta.per_pageintegerrequired

Example: 20

meta.tointeger or nullrequired

Example: 20

meta.totalintegerrequired

Example: 500

401

Unauthenticated. The bearer token is missing, invalid, or revoked.

messagestringrequired

Example: "Unauthenticated."

Example body, from the documented examples

{
  "message": "Unauthenticated."
}
403

The token lacks the read:public ability.

messagestringrequired

Example: "Insufficient token scope."

Example body, from the documented examples

{
  "message": "Insufficient token scope."
}
429

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

messagestringrequired

Example: "Too Many Attempts."

Example body, from the documented examples

{
  "message": "Too Many Attempts."
}

Example request

curl --request GET \
  'https://versedb.com/api/v1/issues/5432/story-arcs' \
  --header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
  --header 'Accept: application/json'

Example response 200

{
  "data": [
    {
      "id": 24,
      "name": "The Night Gwen Stacy Died",
      "slug": "the-night-gwen-stacy-died",
      "type": "main_story",
      "status": "ended",
      "image_url": "https://...-cover_md.webp",
      "images": {
        "cover_sm": "https://...-cover_sm.webp",
        "cover_md": "https://...-cover_md.webp",
        "cover_lg": "https://...-cover_lg.webp"
      },
      "issues_count": 2,
      "name_i18n": {
        "ja": {
          "value": "講談社",
          "reading": "こうだんしゃ",
          "source": "madb"
        }
      },
      "aliases_i18n": {
        "en": [
          "Kodansha Comics"
        ]
      },
      "original_locale": "en"
    }
  ],
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 25,
    "per_page": 20,
    "to": 20,
    "total": 500
  }
}

Get story arc detail.

GET/api/v1/story-arcs/{storyArc_id}
Requires a token

Returns full story arc detail with the primary and secondary universes, a denormalized characters count, the start/end issue summaries (each with its parent series).

Path parameters

storyArc_idintegerrequired

The story arc ID.

Example: 16

Query parameters

languagesstring

Keep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes.

Example: "ja,ko"

Responses

200

Success

Headers: X-RateLimit-Limit, X-RateLimit-Remaining

dataobjectrequired
data.idintegerrequired

Example: 24

data.namestring or nullrequired

Example: "The Night Gwen Stacy Died"

data.slugstring or nullrequired

Example: "the-night-gwen-stacy-died"

data.typestring or nullrequired

main_story, side_story, tie_in_arc, mini_series_arc, crossover_event, prelude, epilogue or other.

Example: "main_story"

data.statusstring or nullrequired

active, ended, upcoming or cancelled.

Example: "ended"

data.image_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data.imagesobject or nullrequired
data.images.cover_smstring

Example: "https://...-cover_sm.webp"

data.images.cover_mdstring

Example: "https://...-cover_md.webp"

data.images.cover_lgstring

Example: "https://...-cover_lg.webp"

data.primary_universe_idinteger or nullrequired

Example: 1

data.issues_countinteger or nullrequired

Example: 102

data.characters_countintegerrequired

Example: 87

data.primary_universeobject or nullrequired
data.primary_universe.idintegerrequired

Example: 1

data.primary_universe.namestring or nullrequired

Example: "Earth-616"

data.universesarray of objectsrequired
data.universes[].idintegerrequired

Example: 12

data.universes[].namestring or nullrequired

Example: "Ultimate Universe"

data.start_issueobject or nullrequired
data.start_issue.idintegerrequired

Example: 5432

data.start_issue.namestringrequired

Example: "Civil War #1"

data.start_issue.slugstring or nullrequired

Example: "civil-war-1"

data.start_issue.issue_numberstring or nullrequired

Example: "1"

data.start_issue.series_idinteger or nullrequired

Example: 412

data.start_issue.cover_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data.start_issue.imagesobject or nullrequired
data.start_issue.images.thumbstring

Example: "https://...-thumb.webp"

data.start_issue.images.cover_smstring

Example: "https://...-cover_sm.webp"

data.start_issue.images.cover_mdstring

Example: "https://...-cover_md.webp"

data.start_issue.images.cover_lgstring

Example: "https://...-cover_lg.webp"

data.start_issue.seriesobject or nullrequired
data.start_issue.series.idintegerrequired

Example: 412

data.start_issue.series.namestring or nullrequired

Example: "Civil War"

data.start_issue.series.slugstring or nullrequired

Example: "civil-war-2006"

data.start_issue.series.start_yearinteger or nullrequired

Example: 2006

data.end_issueobject or nullrequired
data.end_issue.idintegerrequired

Example: 5432

data.end_issue.namestringrequired

Example: "Civil War #1"

data.end_issue.slugstring or nullrequired

Example: "civil-war-1"

data.end_issue.issue_numberstring or nullrequired

Example: "1"

data.end_issue.series_idinteger or nullrequired

Example: 412

data.end_issue.cover_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data.end_issue.imagesobject or nullrequired
data.end_issue.images.thumbstring

Example: "https://...-thumb.webp"

data.end_issue.images.cover_smstring

Example: "https://...-cover_sm.webp"

data.end_issue.images.cover_mdstring

Example: "https://...-cover_md.webp"

data.end_issue.images.cover_lgstring

Example: "https://...-cover_lg.webp"

data.end_issue.seriesobject or nullrequired
data.end_issue.series.idintegerrequired

Example: 412

data.end_issue.series.namestring or nullrequired

Example: "Civil War"

data.end_issue.series.slugstring or nullrequired

Example: "civil-war-2006"

data.end_issue.series.start_yearinteger or nullrequired

Example: 2006

data.name_i18nobjectrequired

One name per language, keyed by BCP 47 tag.

data.aliases_i18nobjectrequired

Alternative names per language.

data.original_localestring or nullrequired

The language the story arc is from, a BCP 47 tag.

Example: "en"

401

Unauthenticated. The bearer token is missing, invalid, or revoked.

messagestringrequired

Example: "Unauthenticated."

Example body, from the documented examples

{
  "message": "Unauthenticated."
}
403

The token lacks the read:public ability.

messagestringrequired

Example: "Insufficient token scope."

Example body, from the documented examples

{
  "message": "Insufficient token scope."
}
429

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

messagestringrequired

Example: "Too Many Attempts."

Example body, from the documented examples

{
  "message": "Too Many Attempts."
}

Example request

curl --request GET \
  'https://versedb.com/api/v1/story-arcs/16' \
  --header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
  --header 'Accept: application/json'

Example response 200

{
  "data": {
    "id": 24,
    "name": "The Night Gwen Stacy Died",
    "slug": "the-night-gwen-stacy-died",
    "type": "main_story",
    "status": "ended",
    "image_url": "https://...-cover_md.webp",
    "images": {
      "cover_sm": "https://...-cover_sm.webp",
      "cover_md": "https://...-cover_md.webp",
      "cover_lg": "https://...-cover_lg.webp"
    },
    "primary_universe_id": 1,
    "issues_count": 102,
    "characters_count": 87,
    "primary_universe": {
      "id": 1,
      "name": "Earth-616"
    },
    "universes": [
      {
        "id": 12,
        "name": "Ultimate Universe"
      }
    ],
    "start_issue": {
      "id": 5432,
      "name": "Civil War #1",
      "slug": "civil-war-1",
      "issue_number": "1",
      "series_id": 412,
      "cover_url": "https://...-cover_md.webp",
      "images": {
        "thumb": "https://...-thumb.webp",
        "cover_sm": "https://...-cover_sm.webp",
        "cover_md": "https://...-cover_md.webp",
        "cover_lg": "https://...-cover_lg.webp"
      },
      "series": {
        "id": 412,
        "name": "Civil War",
        "slug": "civil-war-2006",
        "start_year": 2006
      }
    },
    "end_issue": {
      "id": 5432,
      "name": "Civil War #1",
      "slug": "civil-war-1",
      "issue_number": "1",
      "series_id": 412,
      "cover_url": "https://...-cover_md.webp",
      "images": {
        "thumb": "https://...-thumb.webp",
        "cover_sm": "https://...-cover_sm.webp",
        "cover_md": "https://...-cover_md.webp",
        "cover_lg": "https://...-cover_lg.webp"
      },
      "series": {
        "id": 412,
        "name": "Civil War",
        "slug": "civil-war-2006",
        "start_year": 2006
      }
    },
    "name_i18n": {
      "ja": {
        "value": "講談社",
        "reading": "こうだんしゃ",
        "source": "madb"
      }
    },
    "aliases_i18n": {
      "en": [
        "Kodansha Comics"
      ]
    },
    "original_locale": "en"
  }
}

Get story arcs for a specific universe

GET/api/v1/universes/{universe_id}/story-arcs
Requires a token

Returns every story arc that takes place in the given universe.

Path parameters

universe_idintegerrequired

The universe ID.

Example: 1

Query parameters

qstring

Optional case-insensitive search within these results.

Example: "crisis"

limitinteger

Number of results per page (max 50).

Example: 20

pageinteger

Page number; meta.last_page says where the list ends.

Example: 1

languagesstring

Keep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes.

Example: "ja,ko"

Responses

200

Success

Headers: X-RateLimit-Limit, X-RateLimit-Remaining

dataarray of objectsrequired
data[].idintegerrequired

Example: 24

data[].namestring or nullrequired

Example: "The Night Gwen Stacy Died"

data[].slugstring or nullrequired

Example: "the-night-gwen-stacy-died"

data[].typestring or nullrequired

main_story, side_story, tie_in_arc, mini_series_arc, crossover_event, prelude, epilogue or other.

Example: "main_story"

data[].statusstring or nullrequired

active, ended, upcoming or cancelled.

Example: "ended"

data[].image_urlstring or nullrequired

Example: "https://...-cover_md.webp"

data[].imagesobject or nullrequired
data[].images.cover_smstring

Example: "https://...-cover_sm.webp"

data[].images.cover_mdstring

Example: "https://...-cover_md.webp"

data[].images.cover_lgstring

Example: "https://...-cover_lg.webp"

data[].issues_countinteger or nullrequired

Example: 2

data[].name_i18nobjectrequired

One name per language, keyed by BCP 47 tag.

data[].aliases_i18nobjectrequired

Alternative names per language.

data[].original_localestring or nullrequired

The language the story arc is from, a BCP 47 tag.

Example: "en"

linksobjectrequired
links.firststringrequired
links.laststringrequired
links.prevstring or nullrequired
links.nextstring or nullrequired
metaobjectrequired
meta.current_pageintegerrequired

Example: 1

meta.frominteger or nullrequired

Example: 1

meta.last_pageintegerrequired

Example: 25

meta.linksarray of objectsrequired
meta.links[].urlstring or nullrequired
meta.links[].labelstringrequired
meta.links[].pageinteger or null
meta.links[].activebooleanrequired
meta.pathstringrequired
meta.per_pageintegerrequired

Example: 20

meta.tointeger or nullrequired

Example: 20

meta.totalintegerrequired

Example: 500

401

Unauthenticated. The bearer token is missing, invalid, or revoked.

messagestringrequired

Example: "Unauthenticated."

Example body, from the documented examples

{
  "message": "Unauthenticated."
}
403

The token lacks the read:public ability.

messagestringrequired

Example: "Insufficient token scope."

Example body, from the documented examples

{
  "message": "Insufficient token scope."
}
429

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

messagestringrequired

Example: "Too Many Attempts."

Example body, from the documented examples

{
  "message": "Too Many Attempts."
}

Example request

curl --request GET \
  'https://versedb.com/api/v1/universes/1/story-arcs' \
  --header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
  --header 'Accept: application/json'

Example response 200

{
  "data": [
    {
      "id": 24,
      "name": "The Night Gwen Stacy Died",
      "slug": "the-night-gwen-stacy-died",
      "type": "main_story",
      "status": "ended",
      "image_url": "https://...-cover_md.webp",
      "images": {
        "cover_sm": "https://...-cover_sm.webp",
        "cover_md": "https://...-cover_md.webp",
        "cover_lg": "https://...-cover_lg.webp"
      },
      "issues_count": 2,
      "name_i18n": {
        "ja": {
          "value": "講談社",
          "reading": "こうだんしゃ",
          "source": "madb"
        }
      },
      "aliases_i18n": {
        "en": [
          "Kodansha Comics"
        ]
      },
      "original_locale": "en"
    }
  ],
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 25,
    "per_page": 20,
    "to": 20,
    "total": 500
  }
}

Get story arcs for a specific character

GET/api/v1/characters/{character_id}/story-arcs
Requires a token

Returns every story arc the given character appears in.

Path parameters

character_idintegerrequired

The ID of the character.

Example: 35939

Query parameters

qstring

Optional case-insensitive search within these results.

Example: "batman"

limitinteger

Number of results per page (max 50).

Example: 20

languagesstring

Keep only these languages in the _i18n maps (comma-separated BCP 47 tags). No other field changes, and Accept-Language is not read.

Example: "ja,ko"

Responses

200

Success

Headers: X-RateLimit-Limit, X-RateLimit-Remaining

dataarray of objects
data[].idinteger

Example: 16

data[].namestring

Example: "Civil War"

data[].name_i18nobject
data[].aliases_i18nobject
data[].original_localestring

Example: "en"

data[].slugstring

Example: "civil-war"

data[].typestring

Example: "crossover_event"

data[].statusstring

Example: "ended"

data[].image_urlstring

Example: "https://cdn.versedb.com/story_arcs/civil-war-md.jpg"

data[].imagesobject
data[].images.cover_smstring

Example: "https://cdn.versedb.com/story_arcs/civil-war-sm.jpg"

data[].images.cover_mdstring

Example: "https://cdn.versedb.com/story_arcs/civil-war-md.jpg"

data[].images.cover_lgstring

Example: "https://cdn.versedb.com/story_arcs/civil-war-lg.jpg"

data[].issues_countinteger

Example: 102

metaobject
meta.current_pageinteger

Example: 1

meta.last_pageinteger

Example: 3

meta.per_pageinteger

Example: 20

meta.totalinteger

Example: 41

401

Unauthenticated. The bearer token is missing, invalid, or revoked.

messagestringrequired

Example: "Unauthenticated."

Example body, from the documented examples

{
  "message": "Unauthenticated."
}
429

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

messagestringrequired

Example: "Too Many Attempts."

Example body, from the documented examples

{
  "message": "Too Many Attempts."
}

Example request

curl --request GET \
  'https://versedb.com/api/v1/characters/35939/story-arcs' \
  --header 'Authorization: Bearer {YOUR_AUTH_KEY}' \
  --header 'Accept: application/json'

Example response 200

{
  "data": [
    {
      "id": 16,
      "name": "Civil War",
      "name_i18n": {},
      "aliases_i18n": {},
      "original_locale": "en",
      "slug": "civil-war",
      "type": "crossover_event",
      "status": "ended",
      "image_url": "https://cdn.versedb.com/story_arcs/civil-war-md.jpg",
      "images": {
        "cover_sm": "https://cdn.versedb.com/story_arcs/civil-war-sm.jpg",
        "cover_md": "https://cdn.versedb.com/story_arcs/civil-war-md.jpg",
        "cover_lg": "https://cdn.versedb.com/story_arcs/civil-war-lg.jpg"
      },
      "issues_count": 102
    },
    {
      "id": 24,
      "name": "The Night Gwen Stacy Died",
      "slug": "the-night-gwen-stacy-died",
      "type": "main_story",
      "status": "ended",
      "image_url": "https://cdn.versedb.com/story_arcs/the-night-gwen-stacy-died-md.jpg",
      "images": {
        "cover_sm": "https://cdn.versedb.com/story_arcs/the-night-gwen-stacy-died-sm.jpg",
        "cover_md": "https://cdn.versedb.com/story_arcs/the-night-gwen-stacy-died-md.jpg",
        "cover_lg": "https://cdn.versedb.com/story_arcs/the-night-gwen-stacy-died-lg.jpg"
      },
      "issues_count": 2
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 3,
    "per_page": 20,
    "total": 41
  }
}

Response headers

X-RateLimit-Limitinteger

Request quota per hour for your tier.

X-RateLimit-Remaininginteger

Requests remaining in the current window.

Retry-Afterinteger

Seconds to wait before retrying.