GET /volumes/toggle-collection/id/:id

Toggles the collection state of a volume for the authenticated user. If the volume is not yet in the user’s collection, it will be added. If it already exists, it will be removed.

Authentication

This endpoint requires authentication via a refresh token stored in cookies.

Cookie Name Required Description
refreshToken Yes Refresh token used to authenticate
Path Parameters
Parameter Type Required Description
id number Yes Identifier of the volume
Query Parameters
Parameter Type Required Default Description
client number Yes Client identifier
Responses
200 OK

Returned when the collection state is toggled successfully.

{
  "data": "Collection Status updated",
  "code": 200
}

Models used
Response Model

400 Bad Request

Returned when required parameters are missing.

{
  "data": "Required parameters missing",
  "code": 400
}

Models used
Response Model

404 Not Found

Returned when the user or volume cannot be found.

{
  "data": "Volume not found",
  "code": 404
}

Models used
Response Model

500 Internal Server Error

Returned when the collection state could not be updated due to an unexpected error.

{
  "data": "Could not update collection status",
  "code": 500
}

Models used
Response Model

GET /volumes/index/:id/:index

Returns the slug of a volume relative to the current volume position within a series. This endpoint is primarily used for sequential navigation (jump-to-index) across volumes while respecting language, edition, and special flags.

Path Parameters
Parameter Type Required Description
id number Yes Identifier of the current volume
index number Yes Target index within the volume sequence
Responses
200 OK

Returned when the target index resolves to a valid volume.

"volume-slug-string"
400 Bad Request

Returned when required parameters are missing or the index is out of bounds.

{
  "data": "Index out of bounds",
  "code": 400
}

Models used
Response Model

404 Not Found

Returned when the volume does not exist.

{
  "data": "Volume not found",
  "code": 404
}

Models used
Response Model

500 Internal Server Error

Returned when attempting to jump to the current volume index.

{
  "data": "Jumping to same volume",
  "code": 500
}

Models used
Response Model

GET /volumes/latest-releases/:limit/:lang/:client

Returns the latest released volumes for a given language and client, ordered by release date (newest first). If the user is authenticated, the response additionally includes collection status information.

Authentication

Authentication is optional. When a valid refresh token is provided, collection state (in_collection) is resolved for the user.

Cookie Name Required Description
refreshToken No Refresh token used to identify user
Path Parameters
Parameter Type Required Description
limit number Yes Maximum number of volumes to return
lang string Yes Language of the volumes
client number Yes Client identifier
Enum Values

lang
Must be one of the supported backend languages (ALLOWED_LANGUAGES).

Responses
200 OK

Returned when the latest releases are fetched successfully.

[
  {
    "id": "number",
    "name": "string",
    "group_id": "number",
    "slug": "string",
    "language": "string",
    "pages": "number",
    "release_date": "string",
    "cover_path": "string",
    "nsfw": "number",
    "nsfw18": "number",
    "in_collection": "boolean"
  }
]

Models used
Volume Model

400 Bad Request

Returned when required parameters are missing or invalid.

{
  "data": "Invalid limit parameter OR Invalid lang parameter OR Required parameters missing",
  "code": 400
}

Models used
Response Model

404 Not Found

Returned when an authenticated user cannot be resolved from the refresh token.

{
  "data": "User not found",
  "code": 404
}

Models used
Response Model

GET /volumes/recently-added/:limit/:lang/:client

Returns the most recently added volumes for a given language and client, ordered by creation (newest first). If the user is authenticated, the response also includes whether each volume is part of the user’s collection.

Authentication

Authentication is optional. When a valid refresh token is provided, collection state (in_collection) is resolved for the user.

Cookie Name Required Description
refreshToken No Refresh token used to identify user
Path Parameters
Parameter Type Required Description
limit number Yes Maximum number of volumes to return
lang string Yes Language of the volumes
client number Yes Client identifier
Enum Values

lang
Must be one of the supported backend languages (ALLOWED_LANGUAGES).

Responses
200 OK

Returned when the recently added volumes are fetched successfully.

[
  {
    "id": "number",
    "name": "string",
    "slug": "string",
    "language": "string",
    "pages": "number",
    "release_date": "string",
    "cover_path": "string",
    "aspect_ratio": "string",
    "nsfw": "number",
    "nsfw18": "number",
    "in_collection": "boolean"
  }
]

Models used
Volume Model

400 Bad Request

Returned when required parameters are missing or invalid.

{
  "data": "Invalid limit parameter OR Invalid lang parameter OR Required parameters missing",
  "code": 400
}

Models used
Response Model

404 Not Found

Returned when an authenticated user cannot be resolved from the refresh token.

{
  "data": "User not found",
  "code": 404
}

Models used
Response Model

GET /volumes/slug/:slug

Returns detailed information about a single volume identified by its slug. The response includes navigation metadata (previous/next volume), gallery images, external links, and—if authenticated—the user’s collection status.

Authentication

Authentication is optional. When a valid refresh token is provided, the response includes whether the volume is in the user’s collection.

Cookie Name Required Description
refreshToken No Refresh token used to identify user
Path Parameters
Parameter Type Required Description
slug string Yes Unique volume slug
Responses
200 OK

Returned when the volume is found.

{
  "id": "number",
  "name": "string",
  "slug": "string",
  "language": "string",
  "pages": "number",
  "release_date": "string",
  "cover_path": "string",
  "back_cover_path": "string",
  "spine_cover_path": "string",
  "aspect_ratio": "string",
  "nsfw": "number",
  "nsfw18": "number",
  "special": "number",
  "special_name": "string | null",
  "edition_id": "number | null",
  "edition_name": "string | null",
  "in_collection": "boolean",
  "series": {
    "id": "number",
    "type": "string"
  },
  "images": [
    {
      "src": "string",
      "name": "string | null",
      "id": "number | null"
    }
  ],
  "links": [
    {
      "url": "string",
      "name": "string",
      "src": "string"
    }
  ],
  "navigation": {
    "count": "number",
    "index": "number",
    "prev": "string | null",
    "next": "string | null",
  }
}

Models used
Volume Model

400 Bad Request

Returned when the slug parameter is missing.

{
  "data": "Required parameters missing",
  "code": 400
}

Models used
Response Model

404 Not Found

Returned when no volume exists for the given slug.

{
  "data": "Volume not found",
  "code": 404
}

Models used
Response Model