For the complete documentation index, see llms.txt. This page is also available as Markdown.

Mucomics

get

List all active (non-deleted) chapters for a comic. Supports status filter and search by title.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/chapters/
GET /api/v1/muComics/chapters/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "comic": "text",
      "title": "text",
      "slug": "text",
      "chapter_number": "text",
      "cover_image_key": "text",
      "status": "draft",
      "published_at": "2026-01-01T00:00:00.000Z",
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Create a new chapter inside a comic. Only creator or editors of the comic can create.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Body

Input serializer for POST /chapters/ and PATCH /chapters//. Caller never directly specifies slug, status, published_at, or audit fields.

comicstringRequired
titlestring · max: 150Required
descriptionstring · nullableOptional
chapter_numberstring · decimalRequiredPattern: ^-?\d{0,4}(?:\.\d{0,2})?$
cover_image_keystring · max: 255 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/
POST /api/v1/muComics/chapters/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 101

{
  "comic": "text",
  "title": "text",
  "description": "text",
  "chapter_number": "text",
  "cover_image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "comic": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "chapter_number": "text",
    "cover_image_key": "text",
    "status": "draft",
    "published_at": "2026-01-01T00:00:00.000Z",
    "pages": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
get

Retrieve full detail of a chapter including pages.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/chapters/{chapter_id}/
GET /api/v1/muComics/chapters/{chapter_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "comic": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "chapter_number": "text",
    "cover_image_key": "text",
    "status": "draft",
    "published_at": "2026-01-01T00:00:00.000Z",
    "pages": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
delete

Soft delete a chapter. Only the comic creator can delete a chapter.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/chapters/{chapter_id}/
DELETE /api/v1/muComics/chapters/{chapter_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text"
  }
}
patch

Update chapter details. Requires comic creator or editor permissions. Archived chapters cannot be edited.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Body

Input serializer for POST /chapters/ and PATCH /chapters//. Caller never directly specifies slug, status, published_at, or audit fields.

comicstringOptional
titlestring · max: 150Optional
descriptionstring · nullableOptional
chapter_numberstring · decimalOptionalPattern: ^-?\d{0,4}(?:\.\d{0,2})?$
cover_image_keystring · max: 255 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/muComics/chapters/{chapter_id}/
PATCH /api/v1/muComics/chapters/{chapter_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 101

{
  "comic": "text",
  "title": "text",
  "description": "text",
  "chapter_number": "text",
  "cover_image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "comic": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "chapter_number": "text",
    "cover_image_key": "text",
    "status": "draft",
    "published_at": "2026-01-01T00:00:00.000Z",
    "pages": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Archive a chapter. Comic creator only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/{chapter_id}/archive/
POST /api/v1/muComics/chapters/{chapter_id}/archive/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "status": "text"
  }
}
get

List all active pages of a chapter, ordered by page number.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/chapters/{chapter_id}/pages/
GET /api/v1/muComics/chapters/{chapter_id}/pages/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "chapter": "text",
      "page_number": 1,
      "image_key": "text",
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Add a single page to a chapter. Comic creators or editors only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Body

Serializer representing individual pages in a chapter.

idstringRead-onlyRequired
chapterstringRequired
page_numberinteger · int64 · max: 4294967295Required
image_keystring · max: 255Required
created_atstring · date-timeRead-onlyRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/{chapter_id}/pages/
POST /api/v1/muComics/chapters/{chapter_id}/pages/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "chapter": "text",
  "page_number": 1,
  "image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "chapter": "text",
    "page_number": 1,
    "image_key": "text",
    "created_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Register multiple uploaded local media paths as sequential pages inside a chapter. Creator/editors only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Body
image_keysstring[]Required
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/{chapter_id}/pages/register/
POST /api/v1/muComics/chapters/{chapter_id}/pages/register/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 23

{
  "image_keys": [
    "text"
  ]
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "chapter": "text",
      "page_number": 1,
      "image_key": "text",
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Bulk reorder page numbers in a chapter. Comic creators or editors only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Body
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/{chapter_id}/pages/reorder/
POST /api/v1/muComics/chapters/{chapter_id}/pages/reorder/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "page_orders": [
    {
      "id": "text",
      "page_number": 1
    }
  ]
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "success": true
  }
}
post

Publish a chapter. Comic creator only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
chapter_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/{chapter_id}/publish/
POST /api/v1/muComics/chapters/{chapter_id}/publish/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "status": "text"
  }
}
delete

Delete a page (soft delete). Comic creators or editors only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
page_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/chapters/pages/{page_id}/
DELETE /api/v1/muComics/chapters/pages/{page_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text"
  }
}
patch

Update page information (e.g. page_number or image_key). Comic creators or editors only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
page_idstringRequired
Body

Serializer representing individual pages in a chapter.

idstringRead-onlyOptional
chapterstringOptional
page_numberinteger · int64 · max: 4294967295Optional
image_keystring · max: 255Optional
created_atstring · date-timeRead-onlyOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/muComics/chapters/pages/{page_id}/
PATCH /api/v1/muComics/chapters/pages/{page_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "chapter": "text",
  "page_number": 1,
  "image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "chapter": "text",
    "page_number": 1,
    "image_key": "text",
    "created_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Upload a media file (Image or PDF) to local storage.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Body
filestring · uriRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/chapters/upload-url/
POST /api/v1/muComics/chapters/upload-url/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: multipart/form-data
Accept: */*
Content-Length: 30

{
  "file": "https://example.com"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "upload_url": "text",
    "image_key": "text"
  }
}
get

List all active (non-deleted) comics. Supports search by title, status filter, and sort by created_at or title.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/comics/
GET /api/v1/muComics/comics/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "title": "text",
      "slug": "text",
      "cover_image_key": "text",
      "status": "draft",
      "like_count": 1,
      "comment_count": 1,
      "bookmark_count": 1,
      "published_at": "2026-01-01T00:00:00.000Z",
      "created_by": {
        "id": "text",
        "full_name": "text",
        "muid": "text",
        "profile_pic": "text"
      },
      "created_at": "2026-01-01T00:00:00.000Z",
      "genres": "text"
    }
  ]
}
post

Create a new comic. Any authenticated user may create a comic. Returns the full comic detail on success.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Body

Input serializer for POST /comics/ and PATCH /comics//. The caller never sends: slug, status, *_count, published_at, or audit fields.

titlestring · max: 150Required
descriptionstring · nullableOptional
cover_image_keystring · max: 255 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/
POST /api/v1/muComics/comics/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 62

{
  "title": "text",
  "description": "text",
  "cover_image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "cover_image_key": "text",
    "status": "draft",
    "like_count": 1,
    "comment_count": 1,
    "bookmark_count": 1,
    "published_at": "2026-01-01T00:00:00.000Z",
    "genres": "text",
    "contributors": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
get

Retrieve full detail for a single active comic, including contributors and genres.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/comics/{comic_id}/
GET /api/v1/muComics/comics/{comic_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "cover_image_key": "text",
    "status": "draft",
    "like_count": 1,
    "comment_count": 1,
    "bookmark_count": 1,
    "published_at": "2026-01-01T00:00:00.000Z",
    "genres": "text",
    "contributors": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
delete

Soft-delete a comic (sets deleted_at). Only the original creator may delete. The comic is hidden from all list/detail responses after deletion.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/comics/{comic_id}/
DELETE /api/v1/muComics/comics/{comic_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text"
  }
}
patch

Partially update a comic's title, description, or cover image. Only the creator or an assigned editor contributor may edit. Archived comics cannot be edited.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Body

Input serializer for POST /comics/ and PATCH /comics//. The caller never sends: slug, status, *_count, published_at, or audit fields.

titlestring · max: 150Optional
descriptionstring · nullableOptional
cover_image_keystring · max: 255 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/muComics/comics/{comic_id}/
PATCH /api/v1/muComics/comics/{comic_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 62

{
  "title": "text",
  "description": "text",
  "cover_image_key": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "title": "text",
    "slug": "text",
    "description": "text",
    "cover_image_key": "text",
    "status": "draft",
    "like_count": 1,
    "comment_count": 1,
    "bookmark_count": 1,
    "published_at": "2026-01-01T00:00:00.000Z",
    "genres": "text",
    "contributors": "text",
    "created_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_by": {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "profile_pic": "text"
    },
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Archive a draft or published comic (draft/published → archived). Only the creator may archive. Already-archived comics are rejected.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/{comic_id}/archive/
POST /api/v1/muComics/comics/{comic_id}/archive/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "status": "text"
  }
}
get

List all contributors for a comic.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/comics/{comic_id}/contributors/
GET /api/v1/muComics/comics/{comic_id}/contributors/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "contributor_id": "text",
      "user_id": "text",
      "role": "text",
      "name": "text",
      "comic_name": "text"
    }
  ]
}
post

Add a contributor to a comic by muid and role. Only the comic creator or an Admin may call this. The CREATOR role cannot be assigned via this endpoint.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Body

Input for POST /comics/{comicId}/contributors/. Resolves muid → User object during validation so create() receives a ready-to-use User instance.

muidstringRequired
rolestring · enumRequired
  • writer - Writer
  • artist - Artist
  • colorist - Colorist
  • editor - Editor
Possible values:
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/{comic_id}/contributors/
POST /api/v1/muComics/comics/{comic_id}/contributors/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "muid": "text",
  "role": "writer"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "message": "text"
  }
}
delete

Remove a contributor from a comic. Only the comic creator or an Admin may call this.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
contributor_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/comics/{comic_id}/contributors/{contributor_id}/
DELETE /api/v1/muComics/comics/{comic_id}/contributors/{contributor_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "message": "text"
  }
}
patch

Update a contributor's role. Only the comic creator or an Admin may call this. The CREATOR role cannot be assigned.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
contributor_idstringRequired
Body

Input for PATCH /comics/{comicId}/contributors/{contributorId}/.

rolestring · enumOptional
  • writer - Writer
  • artist - Artist
  • colorist - Colorist
  • editor - Editor
Possible values:
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/muComics/comics/{comic_id}/contributors/{contributor_id}/
PATCH /api/v1/muComics/comics/{comic_id}/contributors/{contributor_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "role": "writer"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "message": "text"
  }
}
post

Assign a genre to a comic. Only the creator, an assigned editor, or an admin might perform this action.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Body

Input serializer for POST /comics/{comicId}/genres/. Validates that:

  • The genre exists.
  • The genre is active (is_active=True).
  • The genre is not already assigned to this comic.
genre_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/{comic_id}/genres/
POST /api/v1/muComics/comics/{comic_id}/genres/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "genre_id": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "link_id": "text",
    "genre": {
      "id": "text",
      "name": "text",
      "slug": "text"
    }
  }
}

Remove a genre from a comic. Only the creator, an assigned editor, or an admin might perform this action.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
link_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/comics/{comic_id}/genres/{link_id}/
DELETE /api/v1/muComics/comics/{comic_id}/genres/{link_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "link_id": "text"
  }
}
post

Publish a draft comic (draft → published). Only the creator may publish. Requires title and description to be present. Archived comics cannot be re-published.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/{comic_id}/publish/
POST /api/v1/muComics/comics/{comic_id}/publish/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "status": "text"
  }
}
get

List genres. Non-admins see only active genres. Admins can filter with ?is_active=true|false. Supports ?search= (by name) and ?sort=name|created_at.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/comics/genres/
GET /api/v1/muComics/comics/genres/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "name": "text",
      "slug": "text",
      "is_active": true,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Create a new genre. is_active defaults to true. Admin only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Body

Input serializer for POST /comics/genres/ and PATCH /comics/genres//. Caller only sends name; slug and audit fields are set internally.

namestring · max: 75Required
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/genres/
POST /api/v1/muComics/comics/genres/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "name": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "name": "text",
    "slug": "text",
    "is_active": true,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
get

Retrieve a genre. Non-admins only see active genres (inactive → 404). Admins can retrieve any genre regardless of is_active status.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
genre_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/muComics/comics/genres/{genre_id}/
GET /api/v1/muComics/comics/genres/{genre_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "name": "text",
    "slug": "text",
    "is_active": true,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
delete

Soft-deactivate a genre (sets is_active = False). The genre row and all comic_genre_link rows are preserved. Admin only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
genre_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
delete/api/v1/muComics/comics/genres/{genre_id}/
DELETE /api/v1/muComics/comics/genres/{genre_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "is_active": true
  }
}
patch

Update a genre's name (slug is regenerated automatically). Admin only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
genre_idstringRequired
Body

Input serializer for POST /comics/genres/ and PATCH /comics/genres//. Caller only sends name; slug and audit fields are set internally.

namestring · max: 75Optional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/muComics/comics/genres/{genre_id}/
PATCH /api/v1/muComics/comics/genres/{genre_id}/ HTTP/1.1
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "name": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "name": "text",
    "slug": "text",
    "is_active": true,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Reinstate (reactivate) a deactivated genre. Sets is_active = True. Admin only.

Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
genre_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/muComics/comics/genres/{genre_id}/reinstate/
POST /api/v1/muComics/comics/genres/{genre_id}/reinstate/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "is_active": true
  }
}
delete

PATCH /comments/<comment_id>/ — edit own comment DELETE /comments/<comment_id>/ — soft-delete own comment

Authorizations
sessionidstringRequired
Path parameters
comment_idstringRequired
Responses
204

No response body

No content

delete/api/v1/muComics/comments/{comment_id}/
DELETE /api/v1/muComics/comments/{comment_id}/ HTTP/1.1
Accept: */*
204

No response body

No content

patch

PATCH /comments/<comment_id>/ — edit own comment DELETE /comments/<comment_id>/ — soft-delete own comment

Authorizations
sessionidstringRequired
Path parameters
comment_idstringRequired
Responses
200

No response body

No content

patch/api/v1/muComics/comments/{comment_id}/
PATCH /api/v1/muComics/comments/{comment_id}/ HTTP/1.1
Accept: */*
200

No response body

No content

get

GET /admin/comments/ — list all comments for moderation (flat list)

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/muComics/comments/admin/
GET /api/v1/muComics/comments/admin/ HTTP/1.1
Accept: */*
200

No response body

No content

delete

DELETE /admin/comments/<comment_id>/ — soft-delete any comment (moderator)

Authorizations
sessionidstringRequired
Path parameters
comment_idstringRequired
Responses
204

No response body

No content

delete/api/v1/muComics/comments/admin/{comment_id}/
DELETE /api/v1/muComics/comments/admin/{comment_id}/ HTTP/1.1
Accept: */*
204

No response body

No content

post

POST /comments/chapter/<chapter_id>/create/ — create chapter comment

Authorizations
sessionidstringRequired
Path parameters
chapter_idstringRequired
Responses
200

No response body

No content

post/api/v1/muComics/comments/chapter/{chapter_id}/create/
POST /api/v1/muComics/comments/chapter/{chapter_id}/create/ HTTP/1.1
Accept: */*
200

No response body

No content

get

GET /comments/chapter/<chapter_id>/list/ — list chapter comments

Authorizations
sessionidstringOptional
Path parameters
chapter_idstringRequired
Responses
200

No response body

No content

get/api/v1/muComics/comments/chapter/{chapter_id}/list/
GET /api/v1/muComics/comments/chapter/{chapter_id}/list/ HTTP/1.1
Accept: */*
200

No response body

No content

post

POST /comments/comic/<comic_id>/create/ — create a comment (top-level or reply)

Authorizations
sessionidstringRequired
Path parameters
comic_idstringRequired
Responses
200

No response body

No content

post/api/v1/muComics/comments/comic/{comic_id}/create/
POST /api/v1/muComics/comments/comic/{comic_id}/create/ HTTP/1.1
Accept: */*
200

No response body

No content

get

GET /comments/comic/<comic_id>/list/ — list top-level comments with replies

Authorizations
sessionidstringOptional
Path parameters
comic_idstringRequired
Responses
200

No response body

No content

get/api/v1/muComics/comments/comic/{comic_id}/list/
GET /api/v1/muComics/comments/comic/{comic_id}/list/ HTTP/1.1
Accept: */*
200

No response body

No content

post
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200

No response body

No content

post/api/v1/muComics/reader/comics/{comic_id}/bookmarks/
POST /api/v1/muComics/reader/comics/{comic_id}/bookmarks/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

delete
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
204

No response body

No content

delete/api/v1/muComics/reader/comics/{comic_id}/bookmarks/
DELETE /api/v1/muComics/reader/comics/{comic_id}/bookmarks/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
204

No response body

No content

get
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200

No response body

No content

get/api/v1/muComics/reader/comics/{comic_id}/interaction-status/
GET /api/v1/muComics/reader/comics/{comic_id}/interaction-status/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

post
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200

No response body

No content

post/api/v1/muComics/reader/comics/{comic_id}/likes/
POST /api/v1/muComics/reader/comics/{comic_id}/likes/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

delete
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
204

No response body

No content

delete/api/v1/muComics/reader/comics/{comic_id}/likes/
DELETE /api/v1/muComics/reader/comics/{comic_id}/likes/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
204

No response body

No content

get
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200

No response body

No content

get/api/v1/muComics/reader/comics/{comic_id}/progress/
GET /api/v1/muComics/reader/comics/{comic_id}/progress/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

put
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Path parameters
comic_idstringRequired
Responses
200

No response body

No content

put/api/v1/muComics/reader/comics/{comic_id}/progress/
PUT /api/v1/muComics/reader/comics/{comic_id}/progress/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

get
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200

No response body

No content

get/api/v1/muComics/reader/me/
GET /api/v1/muComics/reader/me/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

get
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200

No response body

No content

get/api/v1/muComics/reader/me/bookmarks/
GET /api/v1/muComics/reader/me/bookmarks/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

get
Authorizations
AuthorizationstringOptional

JWT Token Authentication. Enter "Bearer "

Responses
200

No response body

No content

get/api/v1/muComics/reader/me/progress/
GET /api/v1/muComics/reader/me/progress/ HTTP/1.1
Authorization: YOUR_API_KEY
Accept: */*
200

No response body

No content

Last updated

Was this helpful?