User Routes
POST /users/:id/save-settings
Creates or updates user-specific settings for the specified user. If a settings record already exists, it is updated; otherwise, a new record is created.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the user |
The request body contains the user settings to be saved. The structure depends on the supported settings model.
{
"theme-accent-color":"#6394c6",
"prefered-content-language":"interface",
"theme":"light",
"nsfw-mode":"settings.nsfw.show-nsfw-18",
"view-mode":"column",
"show-drag-indicator":false
}
200 OK
Returned when the settings are saved successfully.
{
"data": "Settings saved successfully",
"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 associated with the refresh token cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while saving the settings.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
— Reading History —
GET /user/reading-history
Returns the authenticated user’s reading history. The result can be filtered, searched, paginated, and ordered using query parameters, and is enriched with localized metadata where available.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| order | string | No | Sort order for the results (see supported values below) |
| limit | number | No | Maximum number of results to return |
| offset | number | No | Number of results to skip (for pagination) |
| search | string | No | Search term used to filter results |
| user_lang | string | No | Preferred language used for localized titles and descriptions |
| client | string | No | Client identifier used for client-specific filtering or behavior |
The order parameter supports the following values:
name-asc,name-descupdate-asc,update-descpriority-asc,priority-descscore-asc,score-descstart-date-asc,start-date-descend-date-asc,end-date-desc
If no order is provided, the default ordering behavior is applied (update-desc).
200 OK
Returned when the reading history is retrieved successfully.
{
"series": [/* Array of series */],
"max": "number",
"from": "number",
"to": "number"
}
Models used
Series Model
404 Not Found
Returned when the user associated with the refresh token cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
GET /user/reading-status/id/:id
Returns the authenticated user’s reading status for a specific series.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
200 OK
Returned when the reading status is retrieved successfully.
{
/* Reading status data for the series */
}
Models used
Series Model
400 Bad Request
Returned when the required series identifier is missing.
{
"data": "Required parameters missing",
"code": 400
}
Models used
Response Model
404 Not Found
Returned when the user associated with the refresh token cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
POST /user/reading-status/add/:id
Adds a new reading status entry for the authenticated user and the specified series. This endpoint is used when a reading status does not yet exist for the series.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
| Field | Type | Required | Description |
|---|---|---|---|
| visibility | string | Yes | Visibility settings for the reading status |
| progressType | string | Yes | Type used to track reading progress |
| progress | number | Yes | Current reading progress |
| status | string | Yes | Current reading status |
| reread | number | No | Indicates how often the series was reread |
| score | number | No | User-assigned score |
| priority | string | Yes | Reading priority |
| start | string | No | Start date |
| end | string | No | End date |
| notes | string | No | User notes |
| client | string | Yes | Client identifier |
visibility
private(default)public
status
started(default)completedpauseddropped
progress_type
chapters(default)volumes
priority
lowmidhigh
200 OK
Returned when the reading status is added successfully.
{
"data": "Reading status added successfully",
"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 cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
409 Conflict
Returned when a reading status already exists for the specified series.
{
"data": "Reading status already exists for this series",
"code": 409
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while adding the reading status.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
POST /user/reading-status/update/:id
Updates an existing reading status entry for the authenticated user and the specified series. This endpoint is used when a reading status already exists.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
| Field | Type | Required | Description |
|---|---|---|---|
| visibility | string | Yes | Visibility settings for the reading status |
| progressType | string | Yes | Type used to track reading progress |
| progress | number | Yes | Current reading progress |
| status | string | Yes | Current reading status |
| reread | number | No | Indicates how often the series was reread |
| score | number | No | User-assigned score |
| priority | string | Yes | Reading priority |
| start | string | No | Start date |
| end | string | No | End date |
| notes | string | No | User notes |
| client | string | Yes | Client identifier |
visibility
private(default)public
status
started(default)completedpauseddropped
progress_type
chapters(default)volumes
priority
lowmidhigh
200 OK
Returned when the reading status is updated successfully.
{
"data": "Reading status updated successfully",
"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 cannot be found or no reading status exists for the specified series.
{
"data": "Reading status does not exist for this series",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while updating the reading status.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
DELETE /user/reading-status/delete/:id
Deletes an existing reading status entry for the authenticated user and the specified series.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
200 OK
Returned when the reading status is deleted successfully.
{
"data": "Reading status deleted successfully",
"code": 200
}
Models used
Response Model
400 Bad Request
Returned when the required series identifier is missing.
{
"data": "Required parameters missing",
"code": 400
}
Models used
Response Model
404 Not Found
Returned when the user cannot be found or no reading status exists for the specified series.
{
"data": "Reading status does not exist for this series",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while deleting the reading status.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
— Rating —
GET /user/series-rating/:id
Returns the authenticated user’s rating for a specific series.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
200 OK
Returned when the rating is retrieved successfully.
{
/* Rating data for the series */
}
Models used
Series Model
400 Bad Request
Returned when the required series identifier is missing.
{
"data": "Required parameters missing",
"code": 400
}
Models used
Response Model
404 Not Found
Returned when the user associated with the refresh token cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
POST /user/series-rating/add/:id
Adds a new rating for a specific series on behalf of the authenticated user. A rating can only be created if one does not already exist for the series.
This endpoint requires authentication via a refresh token stored in cookies and the appropriate permission.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
Required Permission: rate-series
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
| Field | Type | Required | Description |
|---|---|---|---|
| rating | number | Yes | Rating value for the series |
200 OK
Returned when the rating is added successfully.
{
"data": "Rating added successfully",
"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 cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
409 Conflict
Returned when a rating already exists for the specified series.
{
"data": "Rating already exists for this series",
"code": 409
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while adding the rating.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
POST /user/series-rating/update/:id
Updates an existing rating for a specific series on behalf of the authenticated user. This endpoint is used when a rating already exists.
This endpoint requires authentication via a refresh token stored in cookies and the appropriate permission.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
Required Permission: rate-series
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
| Field | Type | Required | Description |
|---|---|---|---|
| rating | number | Yes | Updated rating value |
200 OK
Returned when the rating is updated successfully.
{
"data": "Rating updated successfully",
"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 no existing rating is found for the specified series.
{
"data": "Rating does not exist for this series",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while updating the rating.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
DELETE /user/series-rating/delete/:id
Deletes an existing rating for a specific series on behalf of the authenticated user.
This endpoint requires authentication via a refresh token stored in cookies and the appropriate permission.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
Required Permission: rate-series
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the series |
200 OK
Returned when the rating is deleted successfully.
{
"data": "Rating deleted successfully",
"code": 200
}
Models used
Response Model
400 Bad Request
Returned when the required series identifier is missing.
{
"data": "Required parameters missing",
"code": 400
}
Models used
Response Model
404 Not Found
Returned when no rating exists for the specified series.
{
"data": "Rating does not exist for this series",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while deleting the rating.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
— Collection —
GET /user/collection
Returns the authenticated user’s collection. The result can be filtered, searched, paginated, and ordered, and includes localized series titles where available.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| order | string | No | Sort order for the collection (see supported values below) |
| limit | number | No | Maximum number of items to return |
| offset | number | No | Number of items to skip (for pagination) |
| search | string | No | Search term used to filter the collection |
| user_lang | string | No | Preferred language for translated series titles |
| client | number | Yes | Client identifier |
name-ascname-desc
200 OK
Returned when the collection is retrieved successfully.
{
"volumes": [/* Array of volumes */],
"max": "number",
"from": "number",
"to": "number"
}
Models used
Volume 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 authenticated user cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
GET /user/collection/stats/general
Returns general statistics about the authenticated user’s collection, including item counts, total spending, and purchase date range.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| client | number | Yes | Client identifier |
200 OK
Returned when the collection statistics are retrieved successfully.
{
"total_items": "number",
"total_spent": "number",
"first_buy": "string | null",
"last_buy": "string | null"
}
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 authenticated user cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
POST /user/collection/update/:id
Updates an existing item in the authenticated user’s collection, including its price and purchase date.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the collection item |
| Field | Type | Required | Description |
|---|---|---|---|
| price | number | Yes | Updated purchase price |
| date | string | Yes | Updated purchase date |
200 OK
Returned when the collection item is updated successfully.
{
"data": "Collection item updated successfully",
"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 collection item cannot be found.
{
"data": "Collection item not found",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while updating the collection item.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
— File Operations —
POST /user/update-image/:id
Updates the profile image of a user. A user may update their own profile image, while administrators may update profile images for other users using the /admin route. Existing locally stored profile images are removed before saving the new one.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the user |
| Field | Type | Required | Description |
|---|---|---|---|
| image | string | Yes | Base64-encoded image data |
The image must be provided as a Base64 string (data URL format supported).
200 OK
Returned when the profile image is updated successfully.
{
"data": "Profile image updated successfully",
"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
403 Forbidden
Returned when the authenticated user is not allowed to update the specified user’s profile image.
{
"data": "Forbidden",
"code": 403
}
Models used
Response Model
404 Not Found
Returned when the authenticated user cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when an unexpected error occurs while updating the profile image.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
503 Service Unavailable
Returned when the current service is not configured to handle file operations (When API is called with this route).
{
"data": "This service is not handling file uploads.",
"code": 503
}
Models used
Response Model
DELETE /user/delete-image/:id
Deletes the profile image of a user. A user may delete their own profile image, while administrators may delete profile images for other users.
This endpoint requires authentication via a refresh token stored in cookies.
| Cookie Name | Required | Description |
|---|---|---|
| refreshToken | Yes | Refresh token used to authenticate |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Identifier of the user |
200 OK
Returned when the profile image is deleted successfully.
{
"data": "Profile image deleted successfully",
"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
403 Forbidden
Returned when the authenticated user is not allowed to delete the specified user’s profile image.
{
"data": "Forbidden",
"code": 403
}
Models used
Response Model
404 Not Found
Returned when the authenticated user cannot be found.
{
"data": "User not found",
"code": 404
}
Models used
Response Model
500 Internal Server Error
Returned when the user has no profile image or an unexpected error occurs.
{
"data": "Internal server error",
"code": 500
}
Models used
Response Model
503 Service Unavailable
Returned when the current service is not configured to handle file operations (When API is called with this route).
{
"data": "This service is not handling file uploads.",
"code": 503
}
Models used
Response Model