{"openapi":"3.1.0","info":{"version":"1.0","title":"MangaBaka API","description":"# About the API\n\nAll API requests are served from `https://api.mangabaka.org`.\n\nNew here? Start with [your first request](https://mangabaka.org/developers/guides/first-request). The [developer docs](https://mangabaka.org/developers) cover [authentication](https://mangabaka.org/developers/guides/authenticate-with-a-token), [OAuth](https://mangabaka.org/developers/guides/sign-in-with-oauth), [pagination](https://mangabaka.org/developers/guides/paginate-results), [rate limits and caching](https://mangabaka.org/developers/concepts/rate-limits-and-caching) and [errors](https://mangabaka.org/developers/concepts/errors).\n\n## Response shape\n\n- Every response is a JSON document, whether the request succeeded or not.\n- Every document has a `status: number` root key, the same as the HTTP status.\n- An error response always has a `message: string` key. It is safe to show to end users. Some endpoints add more root keys; see each endpoint.\n- A paginated result always has a `pagination: object` root key.\n- A successful response always has a `data` root key: an array when listing several resources, an object for a single one.\n"},"servers":[{"url":"https://api.mangabaka.org","description":"Live environment"}],"tags":[{"name":"Series","description":"Public, read-only series metadata: details, covers, relationships, similar, and search."},{"name":"Collections","description":"Public, read-only access to a series’ publications: collections, the works (volumes) inside them, and the editions those works are published in. One group because the three are adjacent — a work belongs to a collection, and an edition describes how it was published."},{"name":"Publishers","description":"Public, read-only access to publishers and their catalogs."},{"name":"Stacks","description":"Stacks are ranked lists of series curated by readers and staff, held together by one theme, concept or recommendation rather than someone's favourites. Listings and stack pages are public. Creating, editing, voting and saving sit under `/v2/my` and need the `stack.read` / `stack.write` scopes."},{"name":"Source","description":"Public, read-only lookups of a series by external source id (AniList, Kitsu, MangaUpdates, MyAnimeList, Anime-Planet)."},{"name":"Users","description":"Public, read-only data shown on user profiles: supporter badges and their tiers."},{"name":"Users (/my)","description":"Authenticated access to the signed-in user’s library entries and profile."},{"name":"Crawlers","description":"Public, read-only crawler traffic mirrored from Cloudflare: which bots fetch the catalogue, how much they take, and what they were served. Cloudflare retains about 8 days of it; anything older exists only because it was mirrored here."},{"name":"Data Moderation","description":"Internal moderator/contributor tooling for editing catalog data through the submission system. Versioned v0 on purpose: they expose internal state and may change at any time, without notice or a deprecation window. They are genuinely useful for plenty of automation and tooling, so do use them where they help — just build defensively, pin to nothing, and be ready to adapt when they shift."},{"name":"v0","description":"Version 0 (internal, unstable) API"},{"name":"v1","description":"Version 1 (stable) API"},{"name":"v2","description":"Version 2 (beta) API"}],"components":{"securitySchemes":{"x-api-key":{"description":"Personal Access Token (PAT) - starting with \"mb-\"","type":"apiKey","name":"x-api-key","in":"header"},"oauth-token":{"type":"openIdConnect","description":"Oauth based authentication","openIdConnectUrl":"https://mangabaka.org/.well-known/openid-configuration","in":"header"}},"schemas":{"V1_Series_Default":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"state":{"type":"string","enum":["active","merged","deleted"],"description":"When state is `merged` see the `merged_with` field for the new series ID. You should update your system reference to the new ID to receive future series updates."},"merged_with":{"type":["number","null"],"example":null,"description":"When series `state` is `merged`, this field represent the new series. Please update your records to this value"},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/novel/84926/Re-Zero-Starting-Life-in-Another-World","description":"Canonical URL for this series. Earlier URLs for the same series redirect here."},"title":{"type":"string","deprecated":true,"description":"Use the titles property instead"},"native_title":{"type":["string","null"],"deprecated":true,"description":"Use the titles property instead"},"romanized_title":{"type":["string","null"],"deprecated":true,"description":"Use the titles property instead"},"secondary_titles":{"type":["object","null"],"properties":{"af":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"am":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ar":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"az":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"be":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bs":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ca":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ce":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cs":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cy":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"da":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"de":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"el":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"en":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"eo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"es":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"es-la":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"et":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"eu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fa":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ga":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"gl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"gu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ha":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"he":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hy":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"id":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ig":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"is":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"it":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"jv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ka":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"kk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"km":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"kn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ku":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"la":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lb":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ml":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ms":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"my":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ne":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"nl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"no":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pa":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pt-br":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ru":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"si":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sq":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sw":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ta":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"te":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"th":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"uk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ur":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"uz":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"vi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"so":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"st":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ts":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"xh":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-hk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hans":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hans-CN":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant-TW":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant-HK":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yue-Hant-HK":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yue-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"unknown":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ru-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}}},"example":{"en":[{"type":"unofficial","title":"Re:Zero -Starting Life in Another World-"},{"type":"unofficial","title":"Re:Zero Kara Hajimeru Isekai Seikatsu"}]},"deprecated":true,"description":"Use the titles property instead"},"cover":{"type":"object","properties":{"raw":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri"},"size":{"type":["number","null"]},"height":{"type":["number","null"]},"width":{"type":["number","null"]},"blurhash":{"type":["string","null"]},"thumbhash":{"type":["string","null"]},"format":{"type":["string","null"]}},"required":["url"]},"x150":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 150px"},"x250":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 250px"},"x350":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 350px"}},"required":["raw","x150","x250","x350"],"description":"Cover image for the series, in several sizes."},"authors":{"type":["array","null"],"items":{"type":"string"},"example":["NAGATSUKI Tappei"],"description":"Staff that is credited with being authors on the sites"},"artists":{"type":["array","null"],"items":{"type":"string"},"example":["Shinichirou Ootsuka"],"description":"Staff that is credited with being artists on the sites"},"description":{"type":["string","null"],"example":"Subaru Natsuki was just trying to get to the convenience store but wound up summoned to another world. He encounters the usual things--life-threatening situations, silver haired beauties, cat fairies--you know, normal stuff. All that would be bad enough, but he's also gained the most inconvenient magical ability of all--time travel, but he's got to die to use it. How do you repay someone who saved your life when all you can do is die?","description":"The series description"},"year":{"type":["number","null"],"deprecated":true,"example":2014,"description":"**DEPRECATED** use published key instead. The year publication began for the series"},"published":{"type":"object","properties":{"start_date":{"type":["string","null"],"format":"date","example":"2014-01-01","description":"Date publication started for the series"},"end_date":{"type":["string","null"],"format":"date","example":"2020-11-10","description":"Date publication ended for the series"},"start_date_is_estimated":{"type":["boolean","null"],"example":true,"description":"Whether start_date is estimated from year-only source precision"},"end_date_is_estimated":{"type":["boolean","null"],"example":false,"description":"Whether end_date is estimated from year-only source precision"}},"required":["start_date","end_date","start_date_is_estimated","end_date_is_estimated"],"additionalProperties":false,"description":"Publication date details"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"is_licensed":{"type":"boolean","example":true,"description":"Has the series been licensed in English?"},"has_anime":{"type":"boolean","example":true,"description":"Has the series gotten an anime adaptation?"},"anime":{"type":["object","null"],"properties":{"start":{"type":["string","null"],"example":"Vol 1 (S1)","description":"From what volume/chapter did the anime start at"},"end":{"type":["string","null"],"example":"Vol 9 (S1)","description":"At what volume/chapter did the anime stop at"}},"required":["start","end"],"additionalProperties":false,"description":"Details about the anime adaptation"},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"example":"safe","description":"The sexual content rating of the series - denotes the highest level of sexual content shown.\n\nGenerally, \"safe\" has no nudity or sex, \"suggestive\" can have nudity but no sex, \"erotica\" has sex but it's censored, and \"pornographic\" has uncensored sex or for censored 18+ works."},"type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"ja","description":"BCP 47 code of the language the series was first published in, e.g. `ja`, `ko`, `en`, `zh-Hant-TW`."},"rating":{"type":["number","null"],"example":91.4908571428572,"description":"The MangaBaka meta rating on a 0-100 scale, averaged across the sources. Per-source values are in `source[*].rating_normalized` on the same scale; `source[*].rating` is each provider's own scale and is not comparable."},"popularity":{"type":["object","null"],"properties":{"global":{"type":"object","properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity across all series."},"type":{"type":["object","null"],"properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity within the series' media type (the `type` field). Null when the type is unknown."}},"required":["global","type"],"description":"Popularity ranking and per-window trends, both across all series (`global`) and within the series' media type (`type`). Rank 1 = most popular (lower is better). Updated daily; cached responses may lag."},"final_volume":{"type":["string","null"],"example":"40","description":"The last volume, once the series has finished. Null while it is unknown or still running."},"total_chapters":{"type":["string","null"],"example":"71","description":"How many chapters the series has in total. Null while that is unknown."},"links":{"type":["array","null"],"items":{"type":"string"},"default":[],"deprecated":true,"example":["https://yenpress.com/9780316315302/rezero-starting-life-in-another-world-vol-1-light-novel/","https://re-zero.com/","https://www.ofelbe.com/Serie-10-ReZero-Revivredansunautremondeàpartirdezéro"],"description":"**DEPRECATED** Use links_v2 instead - A raw list of links related to the series. There will always be a link to MangaBaka in this list."},"links_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Link"},"description":"Links related to the series","example":[]},"publishers":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"example":4211,"description":"Publisher id. Not unique within `publishers`: a publisher is listed once per release language, so the same id can appear more than once."},"name":{"type":["string","null"],"example":"Yen On","description":"Publisher name."},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"en","description":"Language of this release. The series' original language for the original release; null when unknown."},"note":{"type":["string","null"],"example":"25 Volumes - Ongoing","description":"Note about this release."},"type":{"type":["string","null"],"deprecated":true,"example":"English","description":"`Original`, `English` or `Other`, derived from `language`. Use `language` instead."}},"required":["name","note","type"]},"example":[{"id":118,"name":"Media Factory","canonical_url":"https://mangabaka.org/publisher/118/Media-Factory","language":"ja","type":"Original","note":"MF Bunko J"},{"id":4211,"name":"Yen On","canonical_url":"https://mangabaka.org/publisher/4211/Yen-On","language":"en","type":"English","note":"25 Volumes - Ongoing"}],"description":"List of publishers for the series"},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"note":{"type":["string","null"]},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]},"description":"Every known title for the series, each with its language and which kind of title it is."},"genres_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Tag"},"description":"Not populated — always null. Filter `tags_v2` on `is_genre` to get a series’ genres."},"genres":{"type":["array","null"],"items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]},"default":[],"deprecated":true,"example":["action","adventure","drama","fantasy","psychological"],"description":"**DEPRECATED** Use tags_v2 key instead and filter on \"is_genre:true\". Series genres"},"tags_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Tag"},"description":"The series’ tags, each with how relevant it is to this series and whether it is a genre or a spoiler."},"tags":{"type":["array","null"],"items":{"type":"string"},"deprecated":true,"description":"**DEPRECATED** use tags_v2 key instead. Freeform list of tags for a series. These values are *NOT* stable and may change at any time.","example":["Flashbacks","Parents","Body Horror","Kind Male Lead","Trap","Self-Hatred","Dying Protagonist","Obsession"]},"last_updated_at":{"type":["string","null"],"format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when ANY source was updated. See `source[*].last_updated_at` (in the full response) for individual source update timestamps"},"relationships":{"type":["object","null"],"properties":{"main_story":{"type":"array","items":{"type":"number"}},"adaptation":{"type":"array","items":{"type":"number"}},"prequel":{"type":"array","items":{"type":"number"}},"sequel":{"type":"array","items":{"type":"number"}},"side_story":{"type":"array","items":{"type":"number"}},"spin_off":{"type":"array","items":{"type":"number"}},"alternative":{"type":"array","items":{"type":"number"}},"other":{"type":"array","items":{"type":"number"}}},"deprecated":true,"example":{"adaptation":[20299,21593,23837,2634,3370],"side_story":[98585,84927,32970,39977],"spin_off":[26173]},"description":"**Deprecated.** Use \"relationships_v2\" key or the dedicated `GET /v1/series/{id}/relationships` endpoint instead. This field exposes a coarse 8-bucket roll-up of edges and is retained for backwards compatibility only."},"relationships_v2":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Relationship"},"description":"Per-series relationship edges resolved from all configured sources. Each entry points at a related series and carries the directional `relation_type` (e.g. `sequel`, `adaptation`, `spin_off`). Manual moderator edits are flagged with `is_manual: true`. For long lists, prefer the paginated `GET /v1/series/{id}/relationships` endpoint.","example":[{"id":"01950000-0000-7000-8000-000000000001","to_series_id":20299,"relation_type":"adaptation","is_manual":false,"note":null},{"id":"01950000-0000-7000-8000-000000000002","to_series_id":26173,"relation_type":"spin_off","is_manual":true,"note":"Spin-off centred on the side characters."}]},"source":{"type":"object","properties":{"anilist":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_planet":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_news_network":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"kitsu":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"manga_updates":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"my_anime_list":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"shikimori":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false}},"required":["anilist","anime_planet","anime_news_network","kitsu","manga_updates","my_anime_list","shikimori"],"additionalProperties":false,"example":{"anilist":{"id":85737,"rating":8.8},"anime_planet":{"id":null,"rating":null},"anime_news_network":{"id":17902,"rating":null},"kitsu":{"id":26776,"rating":8.261},"manga_updates":{"id":"3qzxncc","rating":7.65},"my_anime_list":{"id":74697,"rating":8.82},"shikimori":{"id":74697,"rating":8.82}},"description":"The entry for this series on each of the sites we track, with that site’s own id and rating. Null where the series has no entry there, or where the site publishes no rating."}},"required":["id","state","merged_with","canonical_url","title","native_title","romanized_title","secondary_titles","cover","authors","artists","description","year","status","is_licensed","has_anime","anime","content_rating","type","original_language","rating","final_volume","total_chapters","publishers","tags","last_updated_at","relationships","relationships_v2","source"],"additionalProperties":false},"API_V1_Series_Secondary_Title":{"type":"object","properties":{"type":{"type":"string","enum":["alternative","native","official","romanized","unofficial","unknown"],"description":"What kind of title this is — the publisher’s `official` one, the `native` title in its original script, a `romanized` spelling of it, an `alternative` or fan-made `unofficial` name, or `unknown` where we could not tell."},"title":{"type":"string","minLength":1,"maxLength":500,"description":"The title itself."},"note":{"type":["string","null"],"description":"Extra context about this title, where one title alone needs explaining."}},"required":["type","title"]},"V1_Link":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUIDv7 of the series ↔ link binding (`series_links.id`).","example":"019024ff-1e8a-7ad9-9b0a-1f8b3c4d5e6f"},"url":{"type":"string","format":"uri","description":"Canonical URL. Always https. Tracker params stripped, per-domain rules applied.","example":"https://www.amazon.de/dp/B0CN8ZRF1K"},"name":{"type":"string","description":"Lowercased punycode hostname (`link_domains.name_ascii`). Used for grouping in the UI.","example":"www.amazon.de"},"name_display":{"type":"string","description":"Human-readable domain display name (`link_domains.name_display`). Falls back to `name` when unset; leading `www.` is stripped for display.","example":"Amazon.de"},"type":{"type":"string","enum":["retailer","publisher","webplatform","info","social","news","piracy","other"],"description":"Effective link type. Resolved via COALESCE(series_links.type, link_domains.default_type, parent.default_type, \"other\").","example":"retailer"},"language":{"type":"string","description":"Effective language. Resolved via COALESCE(series_links.language, links.language, link_domains.default_language, parent.default_language, \"unknown\").","example":"de"}},"required":["id","url","name","name_display","type","language"],"additionalProperties":false},"V2_TitleLanguage":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown"]},"V1_Series_Tag":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0},"merged_with":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"is_spoiler":{"type":["boolean","null"]},"is_genre":{"type":"boolean","default":false,"description":"Whether this tag is considered a genre","example":false},"is_explicit":{"type":"boolean","default":false},"implied_by_tag_ids":{"type":"array","items":{"type":"integer","exclusiveMinimum":0},"default":[]},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0},"name":{"type":"string"},"level":{"type":"number"},"name_path":{"type":"string"},"series_count":{"type":"number"},"description":{"type":["string","null"]},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"weight":{"type":"string","enum":["core","defining","recurrent","incidental","unweighted"],"default":"unweighted","description":"Per-series tag relevance: core | defining | recurrent | incidental | unweighted","example":"defining"}},"required":["id","is_spoiler","parent_id","name","level","name_path","series_count","description","content_rating"],"additionalProperties":false},"V1_Series_Relationship":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"to_series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"relation_type":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"]},"is_manual":{"type":"boolean"},"note":{"type":["string","null"]},"chronology":{"type":"string","enum":["narrative","release","unknown"]},"published_start_date":{"type":["string","null"],"format":"date","deprecated":true,"description":"Deprecated — no longer populated; always null. The target series’ publication date is available via the target series object on /v1/series/{id}."}},"required":["id","to_series_id","relation_type","is_manual","note","chronology","published_start_date"],"additionalProperties":false},"V1_Series_Full":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"state":{"type":"string","enum":["active","merged","deleted"],"description":"When state is `merged` see the `merged_with` field for the new series ID. You should update your system reference to the new ID to receive future series updates."},"merged_with":{"type":["number","null"],"example":null,"description":"When series `state` is `merged`, this field represent the new series. Please update your records to this value"},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/novel/84926/Re-Zero-Starting-Life-in-Another-World","description":"Canonical URL for this series. Earlier URLs for the same series redirect here."},"title":{"type":"string","deprecated":true,"description":"Use the titles property instead"},"native_title":{"type":["string","null"],"deprecated":true,"description":"Use the titles property instead"},"romanized_title":{"type":["string","null"],"deprecated":true,"description":"Use the titles property instead"},"secondary_titles":{"type":["object","null"],"properties":{"af":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"am":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ar":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"az":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"be":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"bs":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ca":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ce":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cs":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"cy":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"da":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"de":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"el":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"en":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"eo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"es":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"es-la":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"et":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"eu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fa":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"fr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ga":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"gl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"gu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ha":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"he":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"hy":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"id":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ig":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"is":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"it":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"jv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ka":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"kk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"km":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"kn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ku":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"la":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lb":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ml":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ms":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"my":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ne":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"nl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"no":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pa":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pt":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"pt-br":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ru":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"si":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sq":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sv":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sw":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ta":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"te":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"th":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tl":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tr":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"uk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ur":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"uz":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"vi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yo":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"lg":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"mi":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"sn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"so":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"st":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ts":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"tn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"xh":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zu":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-hk":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hans":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hans-CN":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant-TW":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Hant-HK":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yue-Hant-HK":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"yue-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-Latn":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"unknown":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ja-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ko-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"ru-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}},"zh-ro":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Secondary_Title"}}},"example":{"en":[{"type":"unofficial","title":"Re:Zero -Starting Life in Another World-"},{"type":"unofficial","title":"Re:Zero Kara Hajimeru Isekai Seikatsu"}]},"deprecated":true,"description":"Use the titles property instead"},"cover":{"type":"object","properties":{"raw":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri"},"size":{"type":["number","null"]},"height":{"type":["number","null"]},"width":{"type":["number","null"]},"blurhash":{"type":["string","null"]},"thumbhash":{"type":["string","null"]},"format":{"type":["string","null"]}},"required":["url"]},"x150":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 150px"},"x250":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 250px"},"x350":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 350px"}},"required":["raw","x150","x250","x350"],"description":"Cover image for the series, in several sizes."},"authors":{"type":["array","null"],"items":{"type":"string"},"example":["NAGATSUKI Tappei"],"description":"Staff that is credited with being authors on the sites"},"artists":{"type":["array","null"],"items":{"type":"string"},"example":["Shinichirou Ootsuka"],"description":"Staff that is credited with being artists on the sites"},"description":{"type":["string","null"],"example":"Subaru Natsuki was just trying to get to the convenience store but wound up summoned to another world. He encounters the usual things--life-threatening situations, silver haired beauties, cat fairies--you know, normal stuff. All that would be bad enough, but he's also gained the most inconvenient magical ability of all--time travel, but he's got to die to use it. How do you repay someone who saved your life when all you can do is die?","description":"The series description"},"year":{"type":["number","null"],"deprecated":true,"example":2014,"description":"**DEPRECATED** use published key instead. The year publication began for the series"},"published":{"type":"object","properties":{"start_date":{"type":["string","null"],"format":"date","example":"2014-01-01","description":"Date publication started for the series"},"end_date":{"type":["string","null"],"format":"date","example":"2020-11-10","description":"Date publication ended for the series"},"start_date_is_estimated":{"type":["boolean","null"],"example":true,"description":"Whether start_date is estimated from year-only source precision"},"end_date_is_estimated":{"type":["boolean","null"],"example":false,"description":"Whether end_date is estimated from year-only source precision"}},"required":["start_date","end_date","start_date_is_estimated","end_date_is_estimated"],"additionalProperties":false,"description":"Publication date details"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"is_licensed":{"type":"boolean","example":true,"description":"Has the series been licensed in English?"},"has_anime":{"type":"boolean","example":true,"description":"Has the series gotten an anime adaptation?"},"anime":{"type":["object","null"],"properties":{"start":{"type":["string","null"],"example":"Vol 1 (S1)","description":"From what volume/chapter did the anime start at"},"end":{"type":["string","null"],"example":"Vol 9 (S1)","description":"At what volume/chapter did the anime stop at"}},"required":["start","end"],"additionalProperties":false,"description":"Details about the anime adaptation"},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"example":"safe","description":"The sexual content rating of the series - denotes the highest level of sexual content shown.\n\nGenerally, \"safe\" has no nudity or sex, \"suggestive\" can have nudity but no sex, \"erotica\" has sex but it's censored, and \"pornographic\" has uncensored sex or for censored 18+ works."},"type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"ja","description":"BCP 47 code of the language the series was first published in, e.g. `ja`, `ko`, `en`, `zh-Hant-TW`."},"rating":{"type":["number","null"],"example":91.4908571428572,"description":"The MangaBaka meta rating on a 0-100 scale, averaged across the sources. Per-source values are in `source[*].rating_normalized` on the same scale; `source[*].rating` is each provider's own scale and is not comparable."},"popularity":{"type":["object","null"],"properties":{"global":{"type":"object","properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity across all series."},"type":{"type":["object","null"],"properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity within the series' media type (the `type` field). Null when the type is unknown."}},"required":["global","type"],"description":"Popularity ranking and per-window trends, both across all series (`global`) and within the series' media type (`type`). Rank 1 = most popular (lower is better). Updated daily; cached responses may lag."},"final_volume":{"type":["string","null"],"example":"40","description":"The last volume, once the series has finished. Null while it is unknown or still running."},"total_chapters":{"type":["string","null"],"example":"71","description":"How many chapters the series has in total. Null while that is unknown."},"links":{"type":["array","null"],"items":{"type":"string"},"default":[],"deprecated":true,"example":["https://yenpress.com/9780316315302/rezero-starting-life-in-another-world-vol-1-light-novel/","https://re-zero.com/","https://www.ofelbe.com/Serie-10-ReZero-Revivredansunautremondeàpartirdezéro"],"description":"**DEPRECATED** Use links_v2 instead - A raw list of links related to the series. There will always be a link to MangaBaka in this list."},"links_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Link"},"description":"Links related to the series","example":[]},"publishers":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"example":4211,"description":"Publisher id. Not unique within `publishers`: a publisher is listed once per release language, so the same id can appear more than once."},"name":{"type":["string","null"],"example":"Yen On","description":"Publisher name."},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"en","description":"Language of this release. The series' original language for the original release; null when unknown."},"note":{"type":["string","null"],"example":"25 Volumes - Ongoing","description":"Note about this release."},"type":{"type":["string","null"],"deprecated":true,"example":"English","description":"`Original`, `English` or `Other`, derived from `language`. Use `language` instead."}},"required":["name","note","type"]},"example":[{"id":118,"name":"Media Factory","canonical_url":"https://mangabaka.org/publisher/118/Media-Factory","language":"ja","type":"Original","note":"MF Bunko J"},{"id":4211,"name":"Yen On","canonical_url":"https://mangabaka.org/publisher/4211/Yen-On","language":"en","type":"English","note":"25 Volumes - Ongoing"}],"description":"List of publishers for the series"},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"note":{"type":["string","null"]},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]},"description":"Every known title for the series, each with its language and which kind of title it is."},"genres_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Tag"},"description":"Not populated — always null. Filter `tags_v2` on `is_genre` to get a series’ genres."},"genres":{"type":["array","null"],"items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]},"default":[],"deprecated":true,"example":["action","adventure","drama","fantasy","psychological"],"description":"**DEPRECATED** Use tags_v2 key instead and filter on \"is_genre:true\". Series genres"},"tags_v2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Tag"},"description":"The series’ tags, each with how relevant it is to this series and whether it is a genre or a spoiler."},"tags":{"type":["array","null"],"items":{"type":"string"},"deprecated":true,"description":"**DEPRECATED** use tags_v2 key instead. Freeform list of tags for a series. These values are *NOT* stable and may change at any time.","example":["Flashbacks","Parents","Body Horror","Kind Male Lead","Trap","Self-Hatred","Dying Protagonist","Obsession"]},"last_updated_at":{"type":["string","null"],"format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when ANY source was updated. See `source[*].last_updated_at` (in the full response) for individual source update timestamps"},"relationships":{"type":["object","null"],"properties":{"main_story":{"type":"array","items":{"type":"number"}},"adaptation":{"type":"array","items":{"type":"number"}},"prequel":{"type":"array","items":{"type":"number"}},"sequel":{"type":"array","items":{"type":"number"}},"side_story":{"type":"array","items":{"type":"number"}},"spin_off":{"type":"array","items":{"type":"number"}},"alternative":{"type":"array","items":{"type":"number"}},"other":{"type":"array","items":{"type":"number"}}},"deprecated":true,"example":{"adaptation":[20299,21593,23837,2634,3370],"side_story":[98585,84927,32970,39977],"spin_off":[26173]},"description":"**Deprecated.** Use \"relationships_v2\" key or the dedicated `GET /v1/series/{id}/relationships` endpoint instead. This field exposes a coarse 8-bucket roll-up of edges and is retained for backwards compatibility only."},"relationships_v2":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Relationship"},"description":"Per-series relationship edges resolved from all configured sources. Each entry points at a related series and carries the directional `relation_type` (e.g. `sequel`, `adaptation`, `spin_off`). Manual moderator edits are flagged with `is_manual: true`. For long lists, prefer the paginated `GET /v1/series/{id}/relationships` endpoint.","example":[{"id":"01950000-0000-7000-8000-000000000001","to_series_id":20299,"relation_type":"adaptation","is_manual":false,"note":null},{"id":"01950000-0000-7000-8000-000000000002","to_series_id":26173,"relation_type":"spin_off","is_manual":true,"note":"Spin-off centred on the side characters."}]},"source":{"type":"object","properties":{"anilist":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false},"anime_planet":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["id","rating","response"]},"anime_news_network":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":["object","null"],"properties":{"id":{"type":"number"},"title":{"type":"string"},"type":{"type":"string","enum":["manga","novel"]},"cover":{"type":["string","null"],"format":"uri"},"releases":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":"number"},"link":{"type":"string","format":"uri"},"title":{"type":"string"},"type":{"type":["string","null"]},"main_type":{"type":["string","null"],"enum":["manga","novel",null]},"volume":{"type":["string","null"]},"date":{"type":["string","null"],"format":"date-time"},"price":{"type":["string","null"]}},"required":["id","link","title","date"]}},"chapter_titles":{"type":["string","null"],"format":"uri"},"plot_summary":{"type":["string","null"]},"objectionable_content":{"type":["string","null"]},"number_of_tankoubon":{"type":["string","null"]},"number_of_pages":{"type":["string","null"]},"alternative_title":{"type":["array","null"],"items":{"type":"object","properties":{"value":{"type":"string"},"language":{"type":"string"}},"required":["value","language"]}},"chronology":{"type":["array","null"],"items":{"type":"string"}},"volumes":{"type":["array","null"],"items":{"type":"string"}},"comment":{"type":["array","null"],"items":{"type":"string"}},"vintage":{"type":["array","null"],"items":{"type":"string"}},"official_website":{"type":["array","null"],"items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":"string"}},"required":["url","title"]}},"genres":{"type":["array","null"],"items":{"type":"string"}},"themes":{"type":["array","null"],"items":{"type":"string"}},"convention_reports":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"interest":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"interviews":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"news":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"other_articles":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"press_releases":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"reviews":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"},"primary":{"type":"boolean"},"published_at":{"type":"string","format":"date-time"}},"required":["href","text","primary","published_at"]}},"user_ratings":{"type":["object","null"],"properties":{"average":{"type":"number"},"total_votes":{"type":"number"},"distribution":{"type":"array","items":{"type":"object","properties":{"votes":{"type":"number"},"rating":{"type":"number"}},"required":["votes","rating"]}}},"required":["average","total_votes","distribution"]}},"required":["id","title","type","convention_reports","interest","interviews","news","other_articles","press_releases","reviews"]}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false},"manga_updates":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":["object","null"],"properties":{"series_id":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string"},"associated":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"}},"required":["title"],"additionalProperties":false}},"description":{"type":["string","null"]},"image":{"type":"object","properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"type":{"type":"string","enum":["Artbook","Doujinshi","Drama CD","Filipino","Indonesian","Manga","Manhwa","Manhua","Novel","OEL","Thai","Vietnamese","Malaysian","Nordic","French","Spanish","German"]},"year":{"type":["string","null"]},"bayesian_rating":{"type":["number","null"]},"rating_votes":{"type":"integer"},"genres":{"type":"array","items":{"type":"object","properties":{"genre":{"type":"string"}},"required":["genre"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer"},"category":{"type":"string"},"votes":{"type":"integer"},"votes_plus":{"type":"integer"},"votes_minus":{"type":"integer"},"added_by":{"type":"integer"}},"required":["category","votes"]}},"latest_chapter":{"type":"integer"},"forum_id":{"type":"integer"},"status":{"type":["string","null"]},"licensed":{"type":"boolean"},"completed":{"type":"boolean"},"anime":{"type":"object","properties":{"start":{"type":["string","null"]},"end":{"type":["string","null"]}},"additionalProperties":false},"related_series":{"type":"array","items":{"type":"object","properties":{"relation_id":{"type":"integer"},"relation_type":{"type":"string","enum":["Prequel","Sequel","Spin-Off","Adapted From","Alternate Version","Part of Anthology","Main Story","Side Story","Full Anthology","Other"]},"related_series_id":{"type":"integer"},"related_series_name":{"type":["string","null"]},"related_series_url":{"type":["string","null"]},"triggered_by_relation_id":{"type":["integer","null"]}},"required":["relation_type","related_series_id","triggered_by_relation_id"],"additionalProperties":false}},"authors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"author_id":{"type":["integer","null"]},"url":{"type":["string","null"]},"type":{"type":"string","enum":["Author","Artist"]}},"required":["name","author_id","type"],"additionalProperties":false}},"publishers":{"type":"array","items":{"type":"object","properties":{"publisher_name":{"type":"string"},"publisher_id":{"type":["integer","null"]},"url":{"type":["string","null"]},"type":{"type":"string","enum":["Original","English"]},"notes":{"type":["string","null"]}},"required":["publisher_name","publisher_id","type"],"additionalProperties":false}},"publications":{"type":"array","items":{"type":"object","properties":{"publication_name":{"type":"string"},"publisher_name":{"type":["string","null"]},"publisher_id":{"type":["number","null"]}},"required":["publication_name","publisher_id"],"additionalProperties":false}},"recommendations":{"type":"array","items":{"type":"object","properties":{"series_name":{"type":["string","null"]},"series_url":{"type":["string","null"]},"series_id":{"type":["integer","null"]},"series_image":{"type":["object","null"],"properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"weight":{"type":["integer","null"]}},"required":["series_id","series_image","weight"]}},"category_recommendations":{"type":"array","items":{"type":"object","properties":{"series_name":{"type":["string","null"]},"series_url":{"type":["string","null"]},"series_id":{"type":["integer","null"]},"series_image":{"type":["object","null"],"properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"weight":{"type":["integer","null"]}},"required":["series_id","series_image","weight"]}},"rank":{"type":"object","properties":{"position":{"type":"object","properties":{"week":{"type":["integer","null"]},"month":{"type":["integer","null"]},"three_months":{"type":["integer","null"]},"six_months":{"type":["integer","null"]},"year":{"type":["integer","null"]}},"required":["week","month","three_months","six_months","year"],"additionalProperties":false},"old_position":{"type":"object","properties":{"week":{"type":["integer","null"]},"month":{"type":["integer","null"]},"three_months":{"type":["integer","null"]},"six_months":{"type":["integer","null"]},"year":{"type":["integer","null"]}},"required":["week","month","three_months","six_months","year"],"additionalProperties":false},"lists":{"type":"object","properties":{"reading":{"type":["integer","null"]},"wish":{"type":["integer","null"]},"complete":{"type":["integer","null"]},"unfinished":{"type":["integer","null"]},"custom":{"type":["integer","null"]}},"required":["reading","wish","complete","unfinished","custom"],"additionalProperties":false}},"required":["position","old_position","lists"],"additionalProperties":false},"last_updated":{"type":"object","properties":{"timestamp":{"type":["integer","null"]},"as_rfc3339":{"type":["string","null"],"format":"date-time"},"as_string":{"type":["string","null"]}},"required":["timestamp","as_rfc3339"]},"admin":{}},"required":["series_id","title","url","associated","image","type","bayesian_rating","rating_votes","genres","categories","latest_chapter","forum_id","licensed","completed","anime","related_series","authors","publishers","publications","recommendations","category_recommendations","rank","last_updated"],"additionalProperties":false}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false},"my_anime_list":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false},"kitsu":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":["object","null"],"properties":{"ageRating":{"type":["string","null"],"enum":["G","PG","R","R18",null]},"ageRatingGuide":{"type":["string","null"]},"averageRating":{"type":["number","null"]},"averageRatingRank":{"type":["number","null"]},"bannerImage":{"type":["object","null"],"properties":{"blurhash":{"type":["string","null"]},"original":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]},"views":{"type":"array","items":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]}}},"required":["original","views"]},"categories":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"isNsfw":{"type":"boolean"},"slug":{"type":"string"},"title":{"type":"object","additionalProperties":{"type":"string"}}},"required":["id","isNsfw","slug","title"]}}}},"chapterCount":{"type":["number","null"]},"chapterCountGuess":{"type":["number","null"]},"createdAt":{"type":"string"},"description":{"type":"object","properties":{"en":{"type":["string","null"]}},"additionalProperties":false},"endDate":{"type":["string","null"]},"favoritesCount":{"type":["number","null"]},"id":{"type":["number","null"]},"mappings":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"externalId":{"type":"string"},"externalSite":{"type":"string","enum":["ANIDB","ANILIST_ANIME","ANILIST_MANGA","ANIMENEWSNETWORK","AOZORA","HULU","IMDB_EPISODES","MANGAUPDATES","MYANIMELIST_ANIME","MYANIMELIST_CHARACTERS","MYANIMELIST_MANGA","MYANIMELIST_PEOPLE","MYANIMELIST_PRODUCERS","MYDRAMALIST","THETVDB","THETVDB_SEASON","THETVDB_SERIES","TRAKT"]},"id":{"type":["number","null"]}},"required":["externalId","externalSite","id"]}}}},"originCountries":{"type":"array","items":{"type":"string"}},"originLanguages":{"type":"array","items":{"type":"string"}},"posterImage":{"type":["object","null"],"properties":{"blurhash":{"type":["string","null"]},"original":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]},"views":{"type":"array","items":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]}}},"required":["original","views"]},"relationships":{"type":"object","properties":{"nodes":{"type":"array","items":{"type":["object","null"],"properties":{"destination":{"type":"object","properties":{"id":{"type":["number","null"]},"slug":{"type":"string"},"type":{"type":"string"}},"required":["id","slug","type"]},"kind":{"type":"string","enum":["ADAPTATION","ALTERNATIVE_SETTING","ALTERNATIVE_VERSION","CHARACTER","FULL_STORY","OTHER","PARENT_STORY","PREQUEL","SEQUEL","SIDE_STORY","SPINOFF","SUMMARY"]}},"required":["destination","kind"]}}},"required":["nodes"]},"sfw":{"type":"boolean"},"slug":{"type":"string"},"staff":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"person":{"type":"object","properties":{"id":{"type":["number","null"]},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"role":{"type":"string"}},"required":["id","person","role"]}}}},"startDate":{"type":["string","null"]},"status":{"type":"string","enum":["CURRENT","FINISHED","TBA","UNRELEASED","UPCOMING"]},"subtype":{"type":"string","enum":["DOUJIN","MANGA","MANHUA","MANHWA","NOVEL","OEL","ONESHOT"]},"tba":{"type":["string","null"]},"titles":{"type":"object","properties":{"alternatives":{"type":["array","null"],"items":{"type":"string"}},"canonical":{"type":"string"},"canonicalLocale":{"type":["string","null"]},"original":{"type":["string","null"]},"originalLocale":{"type":["string","null"]},"preferred":{"type":"string"},"romanized":{"type":["string","null"]},"romanizedLocale":{"type":["string","null"]},"translated":{"type":["string","null"]},"translatedLocale":{"type":["string","null"]}},"required":["canonical","preferred"]},"type":{"type":"string"},"updatedAt":{"type":"string"},"userCount":{"type":["number","null"]},"userCountRank":{"type":["number","null"]},"volumeCount":{"type":["number","null"]}},"required":["categories","createdAt","description","id","mappings","originCountries","originLanguages","relationships","sfw","slug","staff","status","subtype","titles","type","updatedAt"],"additionalProperties":false}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false},"shikimori":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]},"cover":{"type":["string","null"]},"last_updated_at":{"type":["string","null"],"format":"date-time"},"response":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"malId":{"type":["number","null"]},"name":{"type":"string"},"russian":{"type":["string","null"]},"licenseNameRu":{"type":["string","null"]},"english":{"type":["string","null"]},"japanese":{"type":["string","null"]},"synonyms":{"type":["array","null"],"items":{"type":"string"}},"kind":{"type":"string"},"score":{"type":["number","null"]},"status":{"type":"string","enum":["anons","ongoing","released","paused","discontinued"]},"volumes":{"type":["number","null"]},"chapters":{"type":["number","null"]},"airedOn":{"type":"object","properties":{"year":{"type":["number","null"]},"month":{"type":["number","null"]},"day":{"type":["number","null"]},"date":{"type":["string","null"]}}},"releasedOn":{"type":"object","properties":{"year":{"type":["number","null"]},"month":{"type":["number","null"]},"day":{"type":["number","null"]},"date":{"type":["string","null"]}}},"url":{"type":"string","format":"uri"},"poster":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"originalUrl":{"type":"string","format":"uri"},"mainUrl":{"type":"string","format":"uri"}},"required":["id","originalUrl","mainUrl"]},"licensors":{"type":["array","null"],"items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"isCensored":{"type":"boolean"},"genres":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"]},"name":{"type":"string"},"russian":{"type":"string"},"kind":{"type":"string"}},"required":["id","name","russian","kind"]}},"publishers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"externalLinks":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"]},"kind":{"type":"string"},"url":{"type":"string","format":"uri"},"createdAt":{"type":["string","null"]},"updatedAt":{"type":["string","null"]}},"required":["id","kind","url"]}},"personRoles":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"]},"rolesRu":{"type":"array","items":{"type":"string"}},"rolesEn":{"type":"array","items":{"type":"string"}},"person":{"type":"object","properties":{"id":{"type":["number","null"]},"name":{"type":"string"},"poster":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"originalUrl":{"type":"string","format":"uri"},"mainUrl":{"type":"string","format":"uri"}},"required":["id","originalUrl","mainUrl"]}},"required":["id","name","poster"]}},"required":["id","rolesRu","rolesEn","person"]}},"characterRoles":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"]},"rolesRu":{"type":"array","items":{"type":"string"}},"rolesEn":{"type":"array","items":{"type":"string"}},"character":{"type":"object","properties":{"id":{"type":["number","null"]},"name":{"type":"string"},"poster":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"originalUrl":{"type":"string","format":"uri"},"mainUrl":{"type":"string","format":"uri"}},"required":["id","originalUrl","mainUrl"]}},"required":["id","name","poster"]}},"required":["id","rolesRu","rolesEn","character"]}},"related":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"]},"anime":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"name":{"type":"string"}},"required":["id","name"]},"manga":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"name":{"type":"string"}},"required":["id","name"]},"relationKind":{"type":"string"},"relationText":{"type":"string"}},"required":["id","anime","manga","relationKind","relationText"]}},"scoresStats":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"count":{"type":"number"}},"required":["score","count"]}},"statusesStats":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string"},"count":{"type":"number"}},"required":["status","count"]}},"description":{"type":["string","null"]},"descriptionHtml":{"type":"string"},"descriptionSource":{"type":["string","null"]}},"required":["id","name","synonyms","kind","score","status","volumes","chapters","airedOn","releasedOn","url","poster","licensors","createdAt","updatedAt","isCensored","genres","publishers","externalLinks","personRoles","characterRoles","related","scoresStats","statusesStats","descriptionHtml"]}},"required":["id","rating","cover","last_updated_at","response"],"additionalProperties":false}},"required":["anilist","anime_planet","anime_news_network","manga_updates","my_anime_list","kitsu","shikimori"],"description":"The entry for this series on each of the sites we track — that site’s own id and rating, plus when we last read it and the raw response we got back. Null where the series has no entry there."}},"required":["id","state","merged_with","canonical_url","title","native_title","romanized_title","secondary_titles","cover","authors","artists","description","year","status","is_licensed","has_anime","anime","content_rating","type","original_language","rating","final_volume","total_chapters","publishers","tags","last_updated_at","relationships","relationships_v2","source"],"additionalProperties":false},"API_V1_Series_Title":{"type":"object","properties":{"language":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown","ja-ro","ko-ro","ru-ro","zh-ro"],"description":"The language this title is written in."},"type":{"type":"string","enum":["alternative","native","official","romanized","unofficial","unknown"],"description":"What kind of title this is — the publisher’s `official` one, the `native` title in its original script, a `romanized` spelling of it, an `alternative` or fan-made `unofficial` name, or `unknown` where we could not tell."},"title":{"type":"string","minLength":1,"maxLength":500,"description":"The title itself."},"note":{"type":["string","null"],"description":"Extra context about this title, where one title alone needs explaining."}},"required":["language","type","title"]},"V1_News":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka unique ID"},"source_id":{"type":["string","null"],"description":"The source unique identifier for the news item"},"source_name":{"type":"string","enum":["ann"],"description":"The source providing the news"},"title":{"type":"string","description":"Title for the news item"},"url":{"type":"string","format":"uri","description":"URL to the article"},"primary":{"type":"boolean","description":"Wether its a primary or secondary news. If `false` it means the article does not have the series as its primary focus."},"type":{"type":"string","enum":["default","review","releases"],"description":"The kind of news item"},"author":{"type":["string","null"],"description":"The author of the article"},"mentioned_series":{"type":"array","items":{"type":"number"},"description":"List of MangaBaka Series IDs that was mentioned in the article"},"series":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"List of MangaBaka Series (expanded) that was mentioned in the article"},"published_at":{"type":["string","null"],"format":"date-time","description":"The date the article was published"},"created_at":{"type":["string","null"],"format":"date-time","description":"The timestamp when MangaBaka created the article"},"updated_at":{"type":["string","null"],"format":"date-time","description":"The last time the article was updated"}},"required":["id","source_name","title","url","primary","type","author","mentioned_series","series","published_at","created_at","updated_at"],"additionalProperties":false},"Mod_Series":{"type":"object","properties":{"content_rating":{"type":["string","null"],"enum":["safe","suggestive","erotica","pornographic",null],"description":"Moderator override for the series content rating; null inherits the source-derived value."},"description":{"type":["string","null"],"minLength":1,"maxLength":50000,"description":"Moderator override for the series description (max 50,000 chars)."},"final_volume":{"type":["number","null"],"minimum":1,"maximum":999,"description":"Override for the final volume number (max 2 decimal places)."},"final_volume_override_mode":{"type":"string","enum":["auto","lock","floor"],"default":"auto","description":"How `final_volume` resolves against sources: auto (manual-or-source), lock (manual verbatim), floor (manual unless a source is greater)."},"has_anime":{"type":["boolean","null"],"description":"Override marking whether the series has an anime adaptation."},"is_licensed":{"type":["boolean","null"],"description":"Override marking whether the series is officially licensed."},"media_type":{"type":["string","null"],"enum":["manga","novel","manhwa","manhua","oel","other",null],"example":"novel","description":"Override for the media type (manga, manhwa, manhua, novel, …)."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"description":"Override for the language the series was first published in (BCP 47, e.g. `ja`)."},"status":{"type":["string","null"],"enum":["cancelled","completed","hiatus","releasing","unknown","upcoming",null],"example":"releasing","description":"Override for the publication status (releasing, completed, hiatus, cancelled, …)."},"total_chapters":{"type":["number","null"],"minimum":1,"maximum":99999,"description":"Override for the total chapter count (max 2 decimal places)."},"total_chapters_override_mode":{"type":"string","enum":["auto","lock","floor"],"default":"auto","description":"How `total_chapters` resolves against sources: auto (manual-or-source), lock (manual verbatim), floor (manual unless a source is greater)."},"is_standalone":{"type":"boolean","default":false,"description":"Whether the series can be active on the site WITHOUT any external metadata source id (anilist_id, manga_updates_id, etc.). When true it is self-sourced - the submitter supplies the otherwise-derived fields directly (see the sourceless-required rule); when false it derives its metadata from at least one linked source."},"disable_automatic_external_identifiers":{"type":["boolean","null"],"default":false,"description":"When true, stop automatic linking of external source ids to this series."},"disable_automatic_tag_assignment":{"type":["boolean","null"],"default":false,"description":"When true, stop automatic (source-derived) tag assignment for this series."},"disable_automatic_publisher_assignment":{"type":["boolean","null"],"default":false,"description":"When true, stop source-derived publisher changes for this series."},"anidb_id":{"type":["number","null"],"description":"External AniDB id; null if unmapped."},"anilist_id":{"type":["number","null"],"description":"External AniList id; null if unmapped."},"anime_news_network_id":{"type":["number","null"],"description":"External Anime News Network id; null if unmapped."},"anime_planet_id":{"type":["string","null"],"description":"External Anime-Planet slug/id; null if unmapped."},"kitsu_id":{"type":["number","null"],"description":"External Kitsu id; null if unmapped."},"manga_updates_id":{"type":["string","null"],"minLength":7,"maxLength":7,"pattern":"^[a-z0-9]{7}$/i","description":"External MangaUpdates id (7 alphanumeric base-36 chars); null if unmapped."},"my_anime_list_id":{"type":["number","null"],"description":"External MyAnimeList id; null if unmapped."},"shikimori_id":{"type":["number","null"],"description":"External Shikimori id; null if unmapped."},"published_start_date":{"type":["string","null"],"format":"date","description":"First publication date (YYYY-MM-DD); null if unknown."},"published_end_date":{"type":["string","null"],"format":"date","description":"Last publication date (YYYY-MM-DD); null if ongoing or unknown."},"wikidata_id":{"type":["string","null"],"pattern":"^Q\\d+","description":"Wikidata entity id (Q-number, e.g. `Q12345`); null if unmapped."},"series_titles":{"type":"array","items":{"$ref":"#/components/schemas/SeriesTitleFormEntry"},"maxItems":500,"default":[],"description":"Series titles (v2) - the primary titles model. Full-replace collection: send the complete set and mark a removal with `is_excluded`. Supersedes the deprecated top-level `titles`."},"links":{"type":"array","items":{"$ref":"#/components/schemas/SeriesLinkEntry"},"default":[],"description":"External link bindings (v2). Full-replace collection. Distinct from the deprecated legacy `overrides.links` URL list."},"relationships":{"type":"array","items":{"$ref":"#/components/schemas/SeriesRelationshipEntry"},"default":[],"description":"Series-to-series relationships: manual rows plus merged auto-derived rows. Full-replace collection; use `_action` to remove/restore and `is_manual` to override the materializer."},"series_publishers":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid","description":"Existing series publisher row id (uuid). Omit/null to add a new row."},"publisher_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"The publisher (`publishers.id`)."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"description":"Language of this publisher's release of the series. `null` is the original-language release. A series lists a publisher once per language."},"note":{"type":["string","null"],"description":"What this publisher published for the series, e.g. `Vol 1-3`."},"is_locked":{"type":"boolean","description":"Automation never changes a locked row. Rows added or edited by hand must be locked; only a row a source provides can be unlocked."},"is_hidden":{"type":"boolean","description":"Hidden rows are removed publishers a source still provides. Always locked."},"_key":{"type":"string","description":"Client-only stable row key for new (id-less) rows; ignored server-side."}},"required":["publisher_id","language","is_locked","is_hidden"]},"maxItems":100,"default":[],"description":"Publishers of this series, one row per publisher per release language, keyed on the row `id`. Full-replace collection: a row left out is removed, as a hidden row when a source provides it. Adding or editing a row locks it."}}},"SeriesTitleFormEntry":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid","description":"Existing title row id (uuid). Omit/null to create a new title."},"title":{"type":"string","minLength":1,"maxLength":1000,"description":"The title text, without leading or trailing whitespace."},"language":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown"],"default":"unknown","description":"BCP-47-style language/script code (e.g. `en`, `ja`, `ja-Latn`, `zh-Hans`); `unknown` if undetermined."},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]},"default":[],"description":"Descriptive traits for this title (e.g. official, abbreviation). Full replace on save."},"note":{"type":["string","null"],"description":"Free-form moderator note about this title."},"is_primary":{"type":["boolean","null"],"description":"Whether this is the primary display title for its language (max one per language)."},"is_excluded":{"type":["boolean","null"],"description":"Remove the title: it stops appearing anywhere, and the row is retained so a future source re-import cannot bring it back at that language. Reversible — clear the flag to restore it."},"is_locked":{"type":["boolean","null"],"description":"Protect the title from being overwritten by future source syncs. Written exactly; the moderator and submission form schemas require it."},"conflict_resolved":{"type":["boolean","null"],"description":"Mark this title’s flagged review conflicts as resolved (clears the review reasons without locking)."},"conflict_resolved_types":{"type":"array","items":{"type":"string","enum":["cross_row_language","within_row_text"]},"description":"Which specific conflict types to resolve; required when resolving conflicts."},"_key":{"type":"string","description":"Client-only stable row key for new (id-less) titles; ignored server-side."},"_delete":{"type":"boolean","deprecated":true,"description":"Removed. Set `is_excluded` to remove a title; sending this returns 400."}},"required":["title"],"description":"A series title to create, update, exclude, or restore (v2 titles)."},"SeriesLinkEntry":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"series_links binding id (uuid). Client-generated for new rows."},"url":{"type":["string","null"],"description":"Read-only: canonical URL from the linked `links` row. Ignored on write."},"raw_url":{"type":"string","minLength":1,"maxLength":2048,"description":"The URL to bind. Canonicalised server-side into a `links` row on save."},"name_ascii":{"type":["string","null"],"description":"Read-only: display host/name derived from link_domains. Ignored on write."},"type":{"type":["string","null"],"enum":["retailer","publisher","webplatform","info","social","news","piracy","other",null],"description":"Per-link type override (retailer, official, …); null inherits the domain default."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown",null],"description":"Per-link language override; null inherits the domain default."},"is_hidden":{"type":"boolean","default":false,"description":"Hide this link from display without deleting it."},"is_manual":{"type":"boolean","default":false,"description":"Moderator-authored vs source-derived binding."},"observation_count":{"type":"integer","minimum":0,"description":"Read-only: number of sources observing this link. 0 = dropped by sources (orphan). Ignored on write."},"corroborated":{"type":"boolean","description":"Read-only: true when observation_count ≥ 2. Ignored on write."},"effective_type":{"type":["string","null"],"enum":["retailer","publisher","webplatform","info","social","news","piracy","other",null],"description":"Read-only: type the row resolves to (override or inherited domain default). Ignored on write."},"effective_language":{"type":["string","null"],"description":"Read-only: language the row resolves to (override or inherited). Ignored on write."},"observation_sources":{"type":"array","items":{"type":"string"},"description":"Read-only: distinct source types observing this link (for source avatars). Ignored on write."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}],"description":"Read-only: row creation timestamp. Ignored on write."},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}],"description":"Read-only: row update timestamp. Ignored on write."},"_delete":{"type":"boolean","default":false,"description":"Operation marker: set true to remove this link binding in the submission."}},"required":["id"],"description":"A series external-link binding (Links v2). Many fields are read-only display data."},"SeriesRelationshipEntry":{"type":"object","properties":{"id":{"type":"string","description":"Relationship row id (uuid). Client-generated for new rows on the form side."},"to_series_id":{"type":"number","description":"The related series id (the edge points from this series to that one)."},"relation_type":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"],"description":"How the target relates to this series (sequel, prequel, side story, …)."},"inverse_relation_type":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"],"description":"The reciprocal relation stored on the target’s row (e.g. sequel ↔ prequel)."},"is_manual":{"type":"boolean","default":false,"description":"Moderator-authored vs auto-derived. Editing an auto row promotes it to manual."},"is_hidden":{"type":"boolean","default":false,"description":"Hide this edge (per-direction) without deleting it."},"note":{"type":["string","null"],"description":"Free-form moderator note about the relationship."},"chronology":{"type":"string","enum":["narrative","release","unknown"],"description":"Chronological ordering hint of the target relative to this series."},"is_ambiguous":{"type":"boolean","default":false,"description":"Read-only diagnostic: sources disagree on the relation type. Ignored on write."},"candidate_relation_types":{"type":"array","items":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"]},"default":[],"description":"Read-only diagnostic: candidate relation types observed from sources. Ignored on write."},"_action":{"type":"string","enum":["remove","restore"],"description":"Operation marker: `remove` hides (or deletes a manual-only row), `restore` un-hides. Omit for add/update."},"_new":{"type":"boolean","description":"Form marker for a client-created row not yet persisted."}},"required":["id","to_series_id","relation_type","inverse_relation_type","chronology"],"description":"A series-to-series relationship edge (manual or merged auto-derived)."},"V1_Library_Backup":{"type":"array","items":{"type":"object","properties":{"entry":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"imported_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["imported_at","created_at","updated_at"],"additionalProperties":false},"source":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]}},"titles":{"type":"object","properties":{"primary":{"type":["string","null"]},"native":{"type":["string","null"]},"romanized":{"type":["string","null"]}}},"lists":{"type":"array","items":{"type":"string"}}},"required":["entry","source","titles","lists"],"additionalProperties":false}},"V2_Library_Backup":{"type":"object","properties":{"schema_version":{"type":"number","enum":[2],"description":"Format of this backup file. Version 1 backups are a plain list of entries instead."},"exported_at":{"type":["string","null"],"format":"date-time","description":"When the backup was taken."},"lists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Your lists, so they can be recreated on import. Entries refer to them by id."},"entries":{"type":"array","items":{"type":"object","properties":{"entry":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"imported_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["imported_at","created_at","updated_at"],"additionalProperties":false},"source":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]}},"titles":{"type":"object","properties":{"primary":{"type":["string","null"]},"native":{"type":["string","null"]},"romanized":{"type":["string","null"]}}},"lists":{"type":"array","items":{"type":"integer","exclusiveMinimum":0}}},"required":["entry","source","titles","lists"],"additionalProperties":false},"description":"One entry per series in your library, with its reading state and which lists it belongs to."}},"required":["schema_version","exported_at","lists","entries"],"additionalProperties":false},"V1_Error_400":{"type":"object","properties":{"status":{"type":"number","enum":[400]},"message":{"type":"string","default":"Bad Request"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."},"reason":{},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"keys":{"type":"array","items":{"type":"string"}},"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["code","keys","message"]}}},"required":["status"]},"V1_Error_404":{"type":"object","properties":{"status":{"type":"number","enum":[404]},"message":{"type":"string","default":"Not Found"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_429":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_500":{"type":"object","properties":{"status":{"type":"number","enum":[500]},"message":{"type":"string","default":"Internal Server Error"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_502":{"type":"object","properties":{"status":{"type":"number","enum":[502]},"message":{"type":"string","default":"Bad Gateway"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_503":{"type":"object","properties":{"status":{"type":"number","enum":[503]},"message":{"type":"string","default":"Service Temporarily Unavailable"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_504":{"type":"object","properties":{"status":{"type":"number","enum":[504]},"message":{"type":"string","default":"Gateway Timeout"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Series_Cover_Image":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"work_id":{"type":["string","null"]},"index":{"type":["string","null"]},"index_numeric":{"type":["number","null"]},"type":{"type":"string","enum":["audiobook","banner","chapter","other","season","volume","volume_back"]},"language":{"$ref":"#/components/schemas/V1_TitleLanguage"},"note":{"type":["string","null"]},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"hashes":{"type":"object","properties":{"md5":{"type":"string"},"sha1":{"type":"string"},"ahash":{"type":"string"},"chash":{"type":"string"},"crc32":{"type":"string"},"dhash":{"type":"string"},"phash":{"type":"string"},"whash":{"type":"string"},"sha256":{"type":"string"}},"required":["md5","sha1","ahash","chash","crc32","dhash","phash","whash","sha256"]},"image":{"$ref":"#/components/schemas/V1_Series_Image"}},"required":["id","series_id","index","index_numeric","type","language","content_rating","created_at","updated_at","hashes","image"]},"V1_TitleLanguage":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown","ja-ro","ko-ro","ru-ro","zh-ro"]},"V1_Series_Image":{"type":"object","properties":{"raw":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri"},"size":{"type":["number","null"]},"height":{"type":["number","null"]},"width":{"type":["number","null"]},"blurhash":{"type":["string","null"]},"thumbhash":{"type":["string","null"]},"format":{"type":["string","null"]}},"required":["url"]},"x150":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 150px"},"x250":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 250px"},"x350":{"type":"object","properties":{"x1":{"type":["string","null"],"format":"uri","description":"1x DPI image"},"x2":{"type":["string","null"],"format":"uri","description":"2x DPI image"},"x3":{"type":["string","null"],"format":"uri","description":"3x DPI image"}},"required":["x1","x2","x3"],"description":"Scaled to retain aspect ratio, with max height of 350px"}},"required":["raw","x150","x250","x350"]},"V1_Pagination":{"type":"object","properties":{"count":{"type":"number","description":"Total number of rows found"},"page":{"type":"number","description":"The current page number"},"limit":{"type":"number","description":"The number of rows per page"},"next":{"type":["string","null"],"format":"uri","description":"URL for the next page. If `null` there are no next page"},"previous":{"type":["string","null"],"format":"uri","description":"URL for the previous page. If `null` there are no previous page"}},"required":["count","page","limit","next","previous"]},"SeriesV2Any":{"anyOf":[{"$ref":"#/components/schemas/SeriesV2Full"},{"$ref":"#/components/schemas/SeriesV2"}],"description":"A series entity. Shape depends on the `schema` query param: omitted → default (lean); `full` → adds links/tags/relationships/full-titles."},"SeriesV2Full":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"state":{"type":"string","enum":["active","merged","deleted"],"description":"When state is `merged` see the `merged_with` field for the new series ID. You should update your system reference to the new ID to receive future series updates."},"merged_with":{"type":["number","null"],"example":null,"description":"When series `state` is `merged`, this field represent the new series. Please update your records to this value"},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/novel/84926/Re-Zero-Starting-Life-in-Another-World","description":"Canonical URL for this series. Earlier URLs for the same series redirect here."},"authors":{"type":["array","null"],"items":{"type":"string"},"example":["NAGATSUKI Tappei"],"description":"Staff that is credited with being authors on the sites"},"artists":{"type":["array","null"],"items":{"type":"string"},"example":["Shinichirou Ootsuka"],"description":"Staff that is credited with being artists on the sites"},"description":{"type":["string","null"],"example":"Subaru Natsuki was just trying to get to the convenience store but wound up summoned to another world. He encounters the usual things--life-threatening situations, silver haired beauties, cat fairies--you know, normal stuff. All that would be bad enough, but he's also gained the most inconvenient magical ability of all--time travel, but he's got to die to use it. How do you repay someone who saved your life when all you can do is die?","description":"The series description"},"published":{"type":"object","properties":{"start_date":{"type":["string","null"],"format":"date","example":"2014-01-01","description":"Date publication started for the series"},"end_date":{"type":["string","null"],"format":"date","example":"2020-11-10","description":"Date publication ended for the series"},"start_date_is_estimated":{"type":["boolean","null"],"example":true,"description":"Whether start_date is estimated from year-only source precision"},"end_date_is_estimated":{"type":["boolean","null"],"example":false,"description":"Whether end_date is estimated from year-only source precision"}},"required":["start_date","end_date","start_date_is_estimated","end_date_is_estimated"],"additionalProperties":false,"description":"Publication date details"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"is_licensed":{"type":"boolean","example":true,"description":"Has the series been licensed in English?"},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"example":"safe","description":"The sexual content rating of the series - denotes the highest level of sexual content shown.\n\nGenerally, \"safe\" has no nudity or sex, \"suggestive\" can have nudity but no sex, \"erotica\" has sex but it's censored, and \"pornographic\" has uncensored sex or for censored 18+ works."},"type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"ja","description":"BCP 47 code of the language the series was first published in, e.g. `ja`, `ko`, `en`, `zh-Hant-TW`."},"rating":{"type":["number","null"],"example":91.4908571428572,"description":"The MangaBaka meta rating on a 0-100 scale, averaged across the sources. Per-source values are in `source[*].rating_normalized` on the same scale; `source[*].rating` is each provider's own scale and is not comparable."},"popularity":{"type":["object","null"],"properties":{"global":{"type":"object","properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity across all series."},"type":{"type":["object","null"],"properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity within the series' media type (the `type` field). Null when the type is unknown."}},"required":["global","type"],"description":"Popularity ranking and per-window trends, both across all series (`global`) and within the series' media type (`type`). Rank 1 = most popular (lower is better). Updated daily; cached responses may lag."},"last_updated_at":{"type":["string","null"],"format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when ANY source was updated. See `source[*].last_updated_at` (in the full response) for individual source update timestamps"},"source":{"type":"object","properties":{"anilist":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_planet":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_news_network":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"kitsu":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"manga_updates":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"my_anime_list":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"shikimori":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false}},"required":["anilist","anime_planet","anime_news_network","kitsu","manga_updates","my_anime_list","shikimori"],"additionalProperties":false,"example":{"anilist":{"id":85737,"rating":8.8},"anime_planet":{"id":null,"rating":null},"anime_news_network":{"id":17902,"rating":null},"kitsu":{"id":26776,"rating":8.261},"manga_updates":{"id":"3qzxncc","rating":7.65},"my_anime_list":{"id":74697,"rating":8.82},"shikimori":{"id":74697,"rating":8.82}},"description":"The entry for this series on each of the sites we track, with that site’s own id and rating. Null where the series has no entry there, or where the site publishes no rating."},"publishers":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"example":4211,"description":"Publisher id. Not unique within `publishers`: a publisher is listed once per release language, so the same id can appear more than once."},"name":{"type":["string","null"],"example":"Yen On","description":"Publisher name."},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"en","description":"Language of this release. The series' original language for the original release; null when unknown."},"note":{"type":["string","null"],"example":"25 Volumes - Ongoing","description":"Note about this release."}},"required":["name","note"]},"example":[{"id":4211,"name":"Yen On","canonical_url":"https://mangabaka.org/publisher/4211/Yen-On","language":"en","note":"25 Volumes - Ongoing"}],"description":"Publishers of the series, one entry per publisher and release language."},"rating_count":{"type":["number","null"],"description":"Number of user ratings backing `rating`."},"final_volume":{"type":["number","null"],"example":40,"description":"Final volume number; null if unknown."},"total_chapters":{"type":["number","null"],"example":71,"description":"Total chapter count; null if unknown."},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"note":{"type":["string","null"]},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]},"description":"Every known title for the series, each with its language, what kind of title it is, and any note."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, with its dimensions and a blurhash placeholder you can render while the image loads."},"anime":{"type":"object","properties":{"exists":{"type":"boolean","example":true,"description":"Whether an anime adaptation exists (any source)."},"start":{"type":["string","null"],"example":"Vol 1 (S1)","description":"From what volume/chapter the anime started (MangaUpdates-sourced; may be null even when `exists`)."},"end":{"type":["string","null"],"example":"Vol 9 (S1)","description":"At what volume/chapter the anime stopped (MangaUpdates-sourced; may be null even when `exists`)."}},"required":["exists","start","end"],"additionalProperties":false,"description":"Anime adaptation: `exists` flag + optional MangaUpdates vol/ch range."},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Link"},"description":"Links related to the series (always includes the MangaBaka link)."},"tags":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Tag"},"description":"Series tags with per-series relevance weight. Genres are tags with `is_genre:true`."},"relationships":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Relationship"},"description":"Per-edge relationships to other series (prequel, sequel, adaptation, …)."}},"required":["id","state","merged_with","canonical_url","authors","artists","description","status","is_licensed","content_rating","type","original_language","rating","last_updated_at","source","publishers","final_volume","total_chapters","cover","anime"],"additionalProperties":false,"description":"Series (full)"},"SeriesV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"state":{"type":"string","enum":["active","merged","deleted"],"description":"When state is `merged` see the `merged_with` field for the new series ID. You should update your system reference to the new ID to receive future series updates."},"merged_with":{"type":["number","null"],"example":null,"description":"When series `state` is `merged`, this field represent the new series. Please update your records to this value"},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/novel/84926/Re-Zero-Starting-Life-in-Another-World","description":"Canonical URL for this series. Earlier URLs for the same series redirect here."},"authors":{"type":["array","null"],"items":{"type":"string"},"example":["NAGATSUKI Tappei"],"description":"Staff that is credited with being authors on the sites"},"artists":{"type":["array","null"],"items":{"type":"string"},"example":["Shinichirou Ootsuka"],"description":"Staff that is credited with being artists on the sites"},"description":{"type":["string","null"],"example":"Subaru Natsuki was just trying to get to the convenience store but wound up summoned to another world. He encounters the usual things--life-threatening situations, silver haired beauties, cat fairies--you know, normal stuff. All that would be bad enough, but he's also gained the most inconvenient magical ability of all--time travel, but he's got to die to use it. How do you repay someone who saved your life when all you can do is die?","description":"The series description"},"published":{"type":"object","properties":{"start_date":{"type":["string","null"],"format":"date","example":"2014-01-01","description":"Date publication started for the series"},"end_date":{"type":["string","null"],"format":"date","example":"2020-11-10","description":"Date publication ended for the series"},"start_date_is_estimated":{"type":["boolean","null"],"example":true,"description":"Whether start_date is estimated from year-only source precision"},"end_date_is_estimated":{"type":["boolean","null"],"example":false,"description":"Whether end_date is estimated from year-only source precision"}},"required":["start_date","end_date","start_date_is_estimated","end_date_is_estimated"],"additionalProperties":false,"description":"Publication date details"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"is_licensed":{"type":"boolean","example":true,"description":"Has the series been licensed in English?"},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"example":"safe","description":"The sexual content rating of the series - denotes the highest level of sexual content shown.\n\nGenerally, \"safe\" has no nudity or sex, \"suggestive\" can have nudity but no sex, \"erotica\" has sex but it's censored, and \"pornographic\" has uncensored sex or for censored 18+ works."},"type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"ja","description":"BCP 47 code of the language the series was first published in, e.g. `ja`, `ko`, `en`, `zh-Hant-TW`."},"rating":{"type":["number","null"],"example":91.4908571428572,"description":"The MangaBaka meta rating on a 0-100 scale, averaged across the sources. Per-source values are in `source[*].rating_normalized` on the same scale; `source[*].rating` is each provider's own scale and is not comparable."},"popularity":{"type":["object","null"],"properties":{"global":{"type":"object","properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity across all series."},"type":{"type":["object","null"],"properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity within the series' media type (the `type` field). Null when the type is unknown."}},"required":["global","type"],"description":"Popularity ranking and per-window trends, both across all series (`global`) and within the series' media type (`type`). Rank 1 = most popular (lower is better). Updated daily; cached responses may lag."},"last_updated_at":{"type":["string","null"],"format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when ANY source was updated. See `source[*].last_updated_at` (in the full response) for individual source update timestamps"},"source":{"type":"object","properties":{"anilist":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_planet":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_news_network":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"kitsu":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"manga_updates":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"my_anime_list":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"shikimori":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false}},"required":["anilist","anime_planet","anime_news_network","kitsu","manga_updates","my_anime_list","shikimori"],"additionalProperties":false,"example":{"anilist":{"id":85737,"rating":8.8},"anime_planet":{"id":null,"rating":null},"anime_news_network":{"id":17902,"rating":null},"kitsu":{"id":26776,"rating":8.261},"manga_updates":{"id":"3qzxncc","rating":7.65},"my_anime_list":{"id":74697,"rating":8.82},"shikimori":{"id":74697,"rating":8.82}},"description":"The entry for this series on each of the sites we track, with that site’s own id and rating. Null where the series has no entry there, or where the site publishes no rating."},"publishers":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"example":4211,"description":"Publisher id. Not unique within `publishers`: a publisher is listed once per release language, so the same id can appear more than once."},"name":{"type":["string","null"],"example":"Yen On","description":"Publisher name."},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"en","description":"Language of this release. The series' original language for the original release; null when unknown."},"note":{"type":["string","null"],"example":"25 Volumes - Ongoing","description":"Note about this release."}},"required":["name","note"]},"example":[{"id":4211,"name":"Yen On","canonical_url":"https://mangabaka.org/publisher/4211/Yen-On","language":"en","note":"25 Volumes - Ongoing"}],"description":"Publishers of the series, one entry per publisher and release language."},"rating_count":{"type":["number","null"],"description":"Number of user ratings backing `rating`."},"final_volume":{"type":["number","null"],"example":40,"description":"Final volume number; null if unknown."},"total_chapters":{"type":["number","null"],"example":71,"description":"Total chapter count; null if unknown."},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]},"description":"The best title in each language. Use the full series response for every known alternative."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, with its dimensions and a blurhash placeholder you can render while the image loads."},"anime":{"type":"object","properties":{"exists":{"type":"boolean","example":true,"description":"Whether an anime adaptation exists (any source)."},"start":{"type":["string","null"],"example":"Vol 1 (S1)","description":"From what volume/chapter the anime started (MangaUpdates-sourced; may be null even when `exists`)."},"end":{"type":["string","null"],"example":"Vol 9 (S1)","description":"At what volume/chapter the anime stopped (MangaUpdates-sourced; may be null even when `exists`)."}},"required":["exists","start","end"],"additionalProperties":false,"description":"Anime adaptation: `exists` flag + optional MangaUpdates vol/ch range."}},"required":["id","state","merged_with","canonical_url","authors","artists","description","status","is_licensed","content_rating","type","original_language","rating","last_updated_at","source","publishers","final_volume","total_chapters","cover","anime"],"additionalProperties":false,"description":"Series (default)"},"V1_Work_Default":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka work ID.","example":"019a5f27-bbf6-7000-8000-000000000004"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"source_ids":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Identifier"}},"sub_title":{"type":["string","null"],"example":"Starting Life in Another World","description":"The subtitle of the work"},"count_type":{"type":"string","enum":["main","extra","other"]},"images":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Cover_Image"},"default":[]},"release_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"sequence_string":{"type":"string","example":"1-5","description":"The STRING \"number\" of the work"},"sequence_numeric":{"type":["number","null"],"example":"1-5","description":"The number of the work"},"identifiers":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Identifier"}},"trim":{"type":["object","null"],"properties":{"w_mm":{"type":["number","null"]},"h_mm":{"type":["number","null"]}}},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"pages":{"type":["number","null"],"example":321},"price":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Price"}},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"inc_chapters":{"type":["string","null"],"example":"1,2,3,4"},"part_of_volume":{"type":["string","null"],"example":"3"},"revision":{"type":["string","null"],"example":"Second revision with redrawn panels"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the work was updated."},"collections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false},"default":[]}},"required":["id","series_id","source_ids","sub_title","count_type","release_date","sequence_string","sequence_numeric","identifiers","trim","note","pages","price","links","inc_chapters","part_of_volume","revision","updated_at"],"additionalProperties":false},"V1_Identifier":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"V1_Price":{"type":"object","properties":{"value":{"type":["number","null"]},"iso_code":{"type":"string","minLength":3,"maxLength":3}},"required":["value","iso_code"]},"V1_WebLink":{"type":"object","properties":{"type":{"type":"string","default":"store"},"link":{"type":"string","format":"uri"},"language":{"type":"string","default":"en"}},"required":["link"]},"CountryCode":{"type":["string","null"],"enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW",null]},"V1_Edition_Default":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"language":{"type":["object","null"],"properties":{"iso":{"$ref":"#/components/schemas/V1_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"description":{"type":["string","null"]},"override_text":{"type":["string","null"]}},"required":["name"]},"StackV2ListItem":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID.","example":1},"title":{"type":"string","description":"The stack title.","example":"Isekai where dying is the plot"},"canonical_url":{"type":"string","format":"uri","description":"Canonical URL for this stack on MangaBaka.","example":"https://mangabaka.org/stacks/1-isekai-where-dying-is-the-plot"},"kind":{"type":"string","enum":["personal","community","official"],"description":"`personal`: made by a user. `official`: run by MangaBaka staff. `community` is not in use yet."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_featured":{"type":"boolean","description":"Picked by MangaBaka staff."},"owner":{"type":"object","properties":{"username":{"type":["string","null"],"description":"Null for an account that was deleted."},"name":{"type":"string","description":"Display name."}},"required":["username","name"],"additionalProperties":false,"description":"Who made the stack."},"entry_count":{"type":"number","description":"Number of entries, placeholders included."},"vote_count":{"type":"number","description":"Votes for the stack, its owner's included: creating a stack votes for it."},"save_count":{"type":"number","description":"Readers who saved the stack."},"first_published_at":{"type":["string","null"],"format":"date-time","description":"When it first left draft. Kept if it goes back to draft; null if it never left."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the stack or its entries last changed."},"covers":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, in several sizes."}},"required":["series_id","cover"],"additionalProperties":false},"description":"Up to 4 covers, in stack order, within the requested content ratings."}},"required":["id","title","canonical_url","kind","visibility","content_rating","is_spoiler","is_featured","owner","entry_count","vote_count","save_count","first_published_at","updated_at","covers"],"additionalProperties":false,"description":"Stack (v2, listing)"},"StackV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID.","example":1},"title":{"type":"string","description":"The stack title.","example":"Isekai where dying is the plot"},"canonical_url":{"type":"string","format":"uri","description":"Canonical URL for this stack on MangaBaka.","example":"https://mangabaka.org/stacks/1-isekai-where-dying-is-the-plot"},"kind":{"type":"string","enum":["personal","community","official"],"description":"`personal`: made by a user. `official`: run by MangaBaka staff. `community` is not in use yet."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_featured":{"type":"boolean","description":"Picked by MangaBaka staff."},"owner":{"type":"object","properties":{"username":{"type":["string","null"],"description":"Null for an account that was deleted."},"name":{"type":"string","description":"Display name."}},"required":["username","name"],"additionalProperties":false,"description":"Who made the stack."},"entry_count":{"type":"number","description":"Number of entries, placeholders included."},"vote_count":{"type":"number","description":"Votes for the stack, its owner's included: creating a stack votes for it."},"save_count":{"type":"number","description":"Readers who saved the stack."},"first_published_at":{"type":["string","null"],"format":"date-time","description":"When it first left draft. Kept if it goes back to draft; null if it never left."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the stack or its entries last changed."},"covers":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, in several sizes."}},"required":["series_id","cover"],"additionalProperties":false},"description":"Up to 4 covers, in stack order, within the requested content ratings."},"description":{"type":["string","null"],"description":"Markdown, without images.","example":"Leads who keep losing, and have to **live with it**."},"is_comments_enabled":{"type":"boolean","description":"Whether readers can comment on the stack."},"entries":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["series"],"description":"An entry with its series."},"rank":{"type":"number","description":"Position in the stack, 1 is first.","example":1},"note":{"type":["string","null"],"description":"Why this series is in the stack. Markdown, without images.","example":"Return by Death makes every loss count."},"series":{"$ref":"#/components/schemas/SeriesV2"}},"required":["kind","rank","note","series"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["merged","deleted"],"description":"A placeholder: merged into another series, or removed. It keeps its rank and has no other fields."},"rank":{"type":"number","description":"Position in the stack, 1 is first."}},"required":["kind","rank"],"additionalProperties":false}]},"description":"Every entry, in rank order."}},"required":["id","title","canonical_url","kind","visibility","content_rating","is_spoiler","is_featured","owner","entry_count","vote_count","save_count","first_published_at","updated_at","covers","description","is_comments_enabled","entries"],"additionalProperties":false,"description":"Stack (v2)"},"MyStackV2ListItem":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID.","example":1},"title":{"type":"string","description":"The stack title.","example":"Isekai where dying is the plot"},"canonical_url":{"type":"string","format":"uri","description":"Canonical URL for this stack on MangaBaka.","example":"https://mangabaka.org/stacks/1-isekai-where-dying-is-the-plot"},"kind":{"type":"string","enum":["personal","community","official"],"description":"`personal`: made by a user. `official`: run by MangaBaka staff. `community` is not in use yet."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_featured":{"type":"boolean","description":"Picked by MangaBaka staff."},"owner":{"type":"object","properties":{"username":{"type":["string","null"],"description":"Null for an account that was deleted."},"name":{"type":"string","description":"Display name."}},"required":["username","name"],"additionalProperties":false,"description":"Who made the stack."},"entry_count":{"type":"number","description":"Number of entries, placeholders included."},"vote_count":{"type":"number","description":"Votes for the stack, its owner's included: creating a stack votes for it."},"save_count":{"type":"number","description":"Readers who saved the stack."},"first_published_at":{"type":["string","null"],"format":"date-time","description":"When it first left draft. Kept if it goes back to draft; null if it never left."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the stack or its entries last changed."},"covers":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, in several sizes."}},"required":["series_id","cover"],"additionalProperties":false},"description":"Up to 4 covers, in stack order, within the requested content ratings."},"is_delisted":{"type":"boolean","description":"Taken out of public listings by a moderator. It still opens from its link."},"is_hidden":{"type":"boolean","description":"Hidden by a moderator: only you and staff can open it."}},"required":["id","title","canonical_url","kind","visibility","content_rating","is_spoiler","is_featured","owner","entry_count","vote_count","save_count","first_published_at","updated_at","covers","is_delisted","is_hidden"],"additionalProperties":false,"description":"Your stack (v2, listing)"},"V1_Error_401":{"type":"object","properties":{"status":{"type":"number","enum":[401]},"message":{"type":"string","default":"Unauthorized"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"V1_Error_403":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stale_token","duplicate_entry","stack_full","too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum","stack_locked","spoiler_locked","username_required","rate_limited",null],"default":null,"description":"Which rule refused the request, for clients to act on. Null when no rule applies."}},"required":["status"]},"MyStackV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID.","example":1},"title":{"type":"string","description":"The stack title.","example":"Isekai where dying is the plot"},"canonical_url":{"type":"string","format":"uri","description":"Canonical URL for this stack on MangaBaka.","example":"https://mangabaka.org/stacks/1-isekai-where-dying-is-the-plot"},"kind":{"type":"string","enum":["personal","community","official"],"description":"`personal`: made by a user. `official`: run by MangaBaka staff. `community` is not in use yet."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_featured":{"type":"boolean","description":"Picked by MangaBaka staff."},"owner":{"type":"object","properties":{"username":{"type":["string","null"],"description":"Null for an account that was deleted."},"name":{"type":"string","description":"Display name."}},"required":["username","name"],"additionalProperties":false,"description":"Who made the stack."},"entry_count":{"type":"number","description":"Number of entries, placeholders included."},"vote_count":{"type":"number","description":"Votes for the stack, its owner's included: creating a stack votes for it."},"save_count":{"type":"number","description":"Readers who saved the stack."},"first_published_at":{"type":["string","null"],"format":"date-time","description":"When it first left draft. Kept if it goes back to draft; null if it never left."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the stack or its entries last changed."},"covers":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, in several sizes."}},"required":["series_id","cover"],"additionalProperties":false},"description":"Up to 4 covers, in stack order, within the requested content ratings."},"is_delisted":{"type":"boolean","description":"Taken out of public listings by a moderator. It still opens from its link."},"is_hidden":{"type":"boolean","description":"Hidden by a moderator: only you and staff can open it."},"description":{"type":["string","null"],"description":"Markdown, without images.","example":"Leads who keep losing, and have to **live with it**."},"min_content_rating":{"type":["string","null"],"enum":["safe","suggestive","erotica","pornographic",null],"description":"Set by a moderator; the stack cannot go lower."},"is_spoiler_locked":{"type":"boolean","description":"Set by a moderator; `is_spoiler` cannot be turned off."},"is_comments_enabled":{"type":"boolean","description":"Whether readers can comment on the stack."},"token":{"type":"string","description":"Send it with your next update. If the stack changed since, the update is a 409."},"entries":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"number","description":"Position in the stack, 1 is first.","example":1},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"note":{"type":["string","null"],"description":"Why this series is in the stack. Markdown, without images.","example":"Return by Death makes every loss count."},"issue":{"type":["object","null"],"properties":{"state":{"type":"string","enum":["merged","deleted"],"description":"`merged` into another series, or `deleted` from MangaBaka."},"merged_with":{"type":["number","null"],"description":"The series it was merged into, when `merged`."}},"required":["state","merged_with"],"additionalProperties":false,"description":"Set when the series no longer shows on MangaBaka. Readers see a placeholder and it does not count toward the 5 a published stack needs."},"series":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"state":{"type":"string","enum":["active","merged","deleted"],"description":"When state is `merged` see the `merged_with` field for the new series ID. You should update your system reference to the new ID to receive future series updates."},"merged_with":{"type":["number","null"],"example":null,"description":"When series `state` is `merged`, this field represent the new series. Please update your records to this value"},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/novel/84926/Re-Zero-Starting-Life-in-Another-World","description":"Canonical URL for this series. Earlier URLs for the same series redirect here."},"authors":{"type":["array","null"],"items":{"type":"string"},"example":["NAGATSUKI Tappei"],"description":"Staff that is credited with being authors on the sites"},"artists":{"type":["array","null"],"items":{"type":"string"},"example":["Shinichirou Ootsuka"],"description":"Staff that is credited with being artists on the sites"},"description":{"type":["string","null"],"example":"Subaru Natsuki was just trying to get to the convenience store but wound up summoned to another world. He encounters the usual things--life-threatening situations, silver haired beauties, cat fairies--you know, normal stuff. All that would be bad enough, but he's also gained the most inconvenient magical ability of all--time travel, but he's got to die to use it. How do you repay someone who saved your life when all you can do is die?","description":"The series description"},"published":{"type":"object","properties":{"start_date":{"type":["string","null"],"format":"date","example":"2014-01-01","description":"Date publication started for the series"},"end_date":{"type":["string","null"],"format":"date","example":"2020-11-10","description":"Date publication ended for the series"},"start_date_is_estimated":{"type":["boolean","null"],"example":true,"description":"Whether start_date is estimated from year-only source precision"},"end_date_is_estimated":{"type":["boolean","null"],"example":false,"description":"Whether end_date is estimated from year-only source precision"}},"required":["start_date","end_date","start_date_is_estimated","end_date_is_estimated"],"additionalProperties":false,"description":"Publication date details"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"is_licensed":{"type":"boolean","example":true,"description":"Has the series been licensed in English?"},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"example":"safe","description":"The sexual content rating of the series - denotes the highest level of sexual content shown.\n\nGenerally, \"safe\" has no nudity or sex, \"suggestive\" can have nudity but no sex, \"erotica\" has sex but it's censored, and \"pornographic\" has uncensored sex or for censored 18+ works."},"type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"ja","description":"BCP 47 code of the language the series was first published in, e.g. `ja`, `ko`, `en`, `zh-Hant-TW`."},"rating":{"type":["number","null"],"example":91.4908571428572,"description":"The MangaBaka meta rating on a 0-100 scale, averaged across the sources. Per-source values are in `source[*].rating_normalized` on the same scale; `source[*].rating` is each provider's own scale and is not comparable."},"popularity":{"type":["object","null"],"properties":{"global":{"type":"object","properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity across all series."},"type":{"type":["object","null"],"properties":{"current":{"type":["number","null"],"example":118,"description":"Current rank in this scope. Rank 1 = most popular (lower is better)."},"history":{"type":"object","properties":{"1d":{"type":["integer","null"]},"1w":{"type":["integer","null"]},"1mo":{"type":["integer","null"]},"3mo":{"type":["integer","null"]},"6mo":{"type":["integer","null"]},"1y":{"type":["integer","null"]}},"required":["1d","1w","1mo","3mo","6mo","1y"],"example":{"1d":130,"1w":145,"1mo":95,"3mo":null,"6mo":null,"1y":null},"description":"Rank at each past point in time (null = insufficient history). Rank 1 = most popular (lower is better), so a value greater than `current` means the series has trended up since then."}},"required":["current","history"],"description":"Popularity within the series' media type (the `type` field). Null when the type is unknown."}},"required":["global","type"],"description":"Popularity ranking and per-window trends, both across all series (`global`) and within the series' media type (`type`). Rank 1 = most popular (lower is better). Updated daily; cached responses may lag."},"last_updated_at":{"type":["string","null"],"format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when ANY source was updated. See `source[*].last_updated_at` (in the full response) for individual source update timestamps"},"source":{"type":"object","properties":{"anilist":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_planet":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"anime_news_network":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"kitsu":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"manga_updates":{"type":"object","properties":{"id":{"type":["string","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"my_anime_list":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false},"shikimori":{"type":"object","properties":{"id":{"type":["number","null"]},"rating":{"type":["number","null"]},"rating_normalized":{"type":["number","null"]}},"required":["id","rating"],"additionalProperties":false}},"required":["anilist","anime_planet","anime_news_network","kitsu","manga_updates","my_anime_list","shikimori"],"additionalProperties":false,"example":{"anilist":{"id":85737,"rating":8.8},"anime_planet":{"id":null,"rating":null},"anime_news_network":{"id":17902,"rating":null},"kitsu":{"id":26776,"rating":8.261},"manga_updates":{"id":"3qzxncc","rating":7.65},"my_anime_list":{"id":74697,"rating":8.82},"shikimori":{"id":74697,"rating":8.82}},"description":"The entry for this series on each of the sites we track, with that site’s own id and rating. Null where the series has no entry there, or where the site publishes no rating."},"publishers":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"example":4211,"description":"Publisher id. Not unique within `publishers`: a publisher is listed once per release language, so the same id can appear more than once."},"name":{"type":["string","null"],"example":"Yen On","description":"Publisher name."},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"example":"en","description":"Language of this release. The series' original language for the original release; null when unknown."},"note":{"type":["string","null"],"example":"25 Volumes - Ongoing","description":"Note about this release."}},"required":["name","note"]},"example":[{"id":4211,"name":"Yen On","canonical_url":"https://mangabaka.org/publisher/4211/Yen-On","language":"en","note":"25 Volumes - Ongoing"}],"description":"Publishers of the series, one entry per publisher and release language."},"rating_count":{"type":["number","null"],"description":"Number of user ratings backing `rating`."},"final_volume":{"type":["number","null"],"example":40,"description":"Final volume number; null if unknown."},"total_chapters":{"type":["number","null"],"example":71,"description":"Total chapter count; null if unknown."},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]},"description":"The best title in each language. Use the full series response for every known alternative."},"cover":{"type":"object","properties":{"raw":{"type":["string","null"],"format":"uri","description":"Original (unscaled) cover metadata"},"x150":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x250":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"x350":{"type":["string","null"],"format":"uri","description":"@1-DPR URL, 350px tall. Swap `@1`→`@2`/`@3` for higher DPR."},"blurhash":{"type":["string","null"],"description":"BlurHash for the LCP placeholder."},"width":{"type":["number","null"],"description":"Intrinsic cover width (px), for aspect-ratio reservation."},"height":{"type":["number","null"],"description":"Intrinsic cover height (px), for aspect-ratio reservation."}},"required":["raw","x150","x250","x350","blurhash","width","height"],"additionalProperties":false,"description":"Cover image, with its dimensions and a blurhash placeholder you can render while the image loads."},"anime":{"type":"object","properties":{"exists":{"type":"boolean","example":true,"description":"Whether an anime adaptation exists (any source)."},"start":{"type":["string","null"],"example":"Vol 1 (S1)","description":"From what volume/chapter the anime started (MangaUpdates-sourced; may be null even when `exists`)."},"end":{"type":["string","null"],"example":"Vol 9 (S1)","description":"At what volume/chapter the anime stopped (MangaUpdates-sourced; may be null even when `exists`)."}},"required":["exists","start","end"],"additionalProperties":false,"description":"Anime adaptation: `exists` flag + optional MangaUpdates vol/ch range."}},"required":["id","state","merged_with","canonical_url","authors","artists","description","status","is_licensed","content_rating","type","original_language","rating","last_updated_at","source","publishers","final_volume","total_chapters","cover","anime"],"additionalProperties":false,"description":"Null when `issue` is set."}},"required":["rank","series_id","note","issue","series"],"additionalProperties":false},"description":"Every series in rank order."}},"required":["id","title","canonical_url","kind","visibility","content_rating","is_spoiler","is_featured","owner","entry_count","vote_count","save_count","first_published_at","updated_at","covers","is_delisted","is_hidden","description","min_content_rating","is_spoiler_locked","is_comments_enabled","token","entries"],"additionalProperties":false,"description":"Your stack (v2)"},"MySeriesStackV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID."},"title":{"type":"string","description":"The stack title."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"entry_count":{"type":"number","description":"Number of entries, placeholders included."},"rank":{"type":["number","null"],"description":"Where the series sits in this stack; null when it is not in it."},"can_add":{"type":"boolean","description":"False when the series is already in the stack, the stack is full, or a moderator locked it."}},"required":["id","title","visibility","entry_count","rank","can_add"],"additionalProperties":false,"description":"Your stack, for one series (v2)"},"StackStatusV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID."},"has_voted":{"type":"boolean","description":"Whether you voted for the stack."},"has_saved":{"type":"boolean","description":"Whether you saved the stack."},"has_followed":{"type":"boolean","description":"Whether you follow the stack."},"library_count":{"type":["number","null"],"description":"How many of its series are in your library. `null` for an OAuth token without `library.read`."},"vote_count":{"type":"number","description":"Votes for the stack, its owner's included: creating a stack votes for it. Always current; other stack responses can be up to an hour old."},"save_count":{"type":"number","description":"Readers who saved the stack. Always current; other stack responses can be up to an hour old."},"follow_count":{"type":"number","description":"Readers who follow the stack."}},"required":["id","has_voted","has_saved","has_followed","library_count","vote_count","save_count","follow_count"],"additionalProperties":false,"description":"Your status on a stack (v2)"},"V1_Work_Full":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka work ID.","example":"019a5f27-bbf6-7000-8000-000000000004"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"source_ids":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Identifier"}},"sub_title":{"type":["string","null"],"example":"Starting Life in Another World","description":"The subtitle of the work"},"count_type":{"type":"string","enum":["main","extra","other"]},"images":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Cover_Image"},"default":[]},"release_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"sequence_string":{"type":"string","example":"1-5","description":"The STRING \"number\" of the work"},"sequence_numeric":{"type":["number","null"],"example":"1-5","description":"The number of the work"},"identifiers":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Identifier"}},"trim":{"type":["object","null"],"properties":{"w_mm":{"type":["number","null"]},"h_mm":{"type":["number","null"]}}},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"pages":{"type":["number","null"],"example":321},"price":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Price"}},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"inc_chapters":{"type":["string","null"],"example":"1,2,3,4"},"part_of_volume":{"type":["string","null"],"example":"3"},"revision":{"type":["string","null"],"example":"Second revision with redrawn panels"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the work was updated."},"collections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false}},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["id","series_id","source_ids","sub_title","count_type","release_date","sequence_string","sequence_numeric","identifiers","trim","note","pages","price","links","inc_chapters","part_of_volume","revision","updated_at","collections","series"],"additionalProperties":false},"V1_Collection_Full":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."},"series":{"$ref":"#/components/schemas/V1_Series_Default"},"works":{"type":"array","items":{"$ref":"#/components/schemas/V1_Work_Default"}},"related_collection":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at","series","works","related_collection"],"additionalProperties":false},"PublisherV2":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"]},"name":{"type":"string","minLength":1},"canonical_url":{"type":"string","format":"uri","example":"https://mangabaka.org/publisher/32/Kodansha"},"aliases":{"type":"array","items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"languages":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"description":{"type":["string","null"]},"note":{"type":["string","null"]},"links":{"type":"array","items":{"$ref":"#/components/schemas/V1_WebLink"}},"parent":{"$ref":"#/components/schemas/PublisherV2Ref"},"imprints":{"type":"array","items":{"$ref":"#/components/schemas/PublisherV2Ref"}},"logo":{"$ref":"#/components/schemas/PublisherV2Logo"},"series_count":{"type":"integer","description":"Active series this publisher is credited on."},"merged_with":{"type":["number","null"],"description":"The publisher this one was merged into; follow it for the live record."}},"required":["id","type","sub_type","name","canonical_url","aliases","languages","country_of_origin","founded","closed","description","note","links","parent","imprints","logo","series_count","merged_with"],"description":"Publisher"},"PublisherV2Ref":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"canonical_url":{"type":"string","format":"uri"}},"required":["id","name","canonical_url"],"description":"Publisher reference"},"PublisherV2Logo":{"type":["object","null"],"properties":{"raw":{"type":"string","format":"uri","description":"The logo as uploaded; SVG is sanitised."},"x150":{"type":"string","format":"uri","description":"@1-DPR URL, 150px tall. Swap `@1`→`@2`/`@3` for higher DPR. For an SVG logo, the SVG itself."},"x250":{"type":"string","format":"uri","description":"@1-DPR URL, 250px tall. Swap `@1`→`@2`/`@3` for higher DPR. For an SVG logo, the SVG itself."}},"required":["raw","x150","x250"],"additionalProperties":false,"description":"Publisher logo"},"PublisherV2Card":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["publisher","imprint","child"]},"canonical_url":{"type":"string","format":"uri"},"languages":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"logo":{"$ref":"#/components/schemas/PublisherV2Logo"},"series_count":{"type":"integer","minimum":0,"description":"Active series this publisher is credited on."},"top_media_type":{"type":["string","null"],"enum":["manga","novel","manhwa","manhua","oel","other",null],"example":"novel","description":"The media type most of its active series have."}},"required":["id","name","type","canonical_url","languages","country_of_origin","logo","series_count","top_media_type"],"description":"Publisher summary"},"PublisherStatsV2":{"type":"object","properties":{"series_count":{"type":"integer","minimum":0},"tagged_count":{"type":"integer","minimum":0},"media_type":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"count":{"type":"integer","minimum":0}},"required":["key","count"]}},"status":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"]},"count":{"type":"integer","minimum":0}},"required":["key","count"]}},"content_rating":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"count":{"type":"integer","minimum":0}},"required":["key","count"]}},"has_anime":{"type":"integer","minimum":0},"score":{"type":"object","properties":{"average":{"type":["number","null"]}},"required":["average"],"description":"Mean `meta_score` (0-100) of the scored series."},"popularity":{"type":"object","properties":{"median_rank":{"type":["number","null"]},"ranked_count":{"type":"integer","minimum":0}},"required":["median_rank","ranked_count"],"description":"Median site-wide popularity rank of the publisher's ranked series (approximate), and how many active series are ranked."},"years":{"type":"object","properties":{"first":{"type":["integer","null"]},"last":{"type":["integer","null"]}},"required":["first","last"],"description":"First and last start year of the publisher's series."},"decades":{"type":"array","items":{"type":"object","properties":{"decade":{"type":"integer"},"count":{"type":"integer","minimum":0}},"required":["decade","count"]}},"known_for":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"count":{"type":"integer","minimum":0},"share":{"type":"number","description":"Share of the publisher's tagged series."},"catalog_share":{"type":["number","null"],"description":"Share of all tagged active series."}},"required":["id","name","count","share","catalog_share"]},"description":"Tags the publisher over-indexes on versus the catalog. Empty below three qualifying tags."},"genres":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"count":{"type":"integer","minimum":0},"share":{"type":"number","description":"Share of the publisher's tagged series."},"catalog_share":{"type":["number","null"],"description":"Share of all tagged active series."}},"required":["id","name","count","share","catalog_share"]}},"audience":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"count":{"type":"integer","minimum":0},"share":{"type":"number","description":"Share of the publisher's tagged series."},"catalog_share":{"type":["number","null"],"description":"Share of all tagged active series."}},"required":["id","name","count","share","catalog_share"]}},"shares_with":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"canonical_url":{"type":"string","format":"uri"},"languages":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"shared_count":{"type":"integer","minimum":0}},"required":["id","name","canonical_url","languages","shared_count"]},"description":"Publishers credited on at least two of the same active series."}},"required":["series_count","tagged_count","media_type","status","content_rating","has_anime","score","popularity","years","decades","known_for","genres","audience","shares_with"],"description":"Publisher stats"},"PublisherSimilarV2":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"canonical_url":{"type":"string","format":"uri"},"hits":{"type":"integer","minimum":0,"description":"Nearest-neighbour hits from this publisher's popular series."},"score":{"type":"number","description":"hits / sqrt(series count); higher is more similar."}},"required":["id","name","canonical_url","hits","score"]},"description":"Similar publishers"},"SubmissionSummary":{"type":"object","properties":{"submission_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"Unique submission id.","example":1},"entity":{"type":"string","description":"DB entity discriminator the submission targets.","example":"series"},"entity_id":{"type":"string","description":"ID of the targeted resource row.","example":"1"},"status":{"type":"string","enum":["pending","accepted","rejected","withdrawn"],"description":"Review lifecycle status of the submission."},"user_note":{"type":"string","description":"Submitter-supplied note describing the change."},"admin_note":{"type":["string","null"],"description":"Moderator note attached on accept/reject; null while pending."},"created_at":{"type":"string","format":"date-time","description":"When the submission was created (ISO 8601)."},"updated_at":{"type":"string","format":"date-time","description":"When the submission was last modified (ISO 8601)."}},"required":["submission_id","entity","entity_id","status","user_note","admin_note","created_at","updated_at"],"description":"A submission as it appears in lists and mutation responses."},"SubmissionResourceSlug":{"type":"string","enum":["series","series-images","tags","series-merge","link-domains","forum-sections","publishers","publisher-merge","badges"],"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","example":"series"},"SubmissionResourceSnapshotData":{"anyOf":[{"$ref":"#/components/schemas/series"},{"$ref":"#/components/schemas/series-images"},{"$ref":"#/components/schemas/tags"},{"$ref":"#/components/schemas/link-domains"},{"$ref":"#/components/schemas/series-merge-snapshot"},{"$ref":"#/components/schemas/forum-sections"},{"$ref":"#/components/schemas/publishers"},{"$ref":"#/components/schemas/publisher-merge-snapshot"},{"$ref":"#/components/schemas/badges"}],"description":"Live snapshot data shaped per resource; a new series-merge or publisher-merge request starts with no counterpart selected."},"series":{"type":"object","properties":{"content_rating":{"type":["string","null"],"enum":["safe","suggestive","erotica","pornographic",null],"description":"Moderator override for the series content rating; null inherits the source-derived value."},"description":{"type":["string","null"],"minLength":1,"maxLength":50000,"description":"Moderator override for the series description (max 50,000 chars)."},"final_volume":{"type":["number","null"],"minimum":1,"maximum":999,"description":"Override for the final volume number (max 2 decimal places)."},"final_volume_override_mode":{"type":"string","enum":["auto","lock","floor"],"default":"auto","description":"How `final_volume` resolves against sources: auto (manual-or-source), lock (manual verbatim), floor (manual unless a source is greater)."},"has_anime":{"type":["boolean","null"],"description":"Override marking whether the series has an anime adaptation."},"is_licensed":{"type":["boolean","null"],"description":"Override marking whether the series is officially licensed."},"media_type":{"type":["string","null"],"enum":["manga","novel","manhwa","manhua","oel","other",null],"example":"novel","description":"Override for the media type (manga, manhwa, manhua, novel, …)."},"original_language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"description":"Override for the language the series was first published in (BCP 47, e.g. `ja`)."},"status":{"type":["string","null"],"enum":["cancelled","completed","hiatus","releasing","unknown","upcoming",null],"example":"releasing","description":"Override for the publication status (releasing, completed, hiatus, cancelled, …)."},"total_chapters":{"type":["number","null"],"minimum":1,"maximum":99999,"description":"Override for the total chapter count (max 2 decimal places)."},"total_chapters_override_mode":{"type":"string","enum":["auto","lock","floor"],"default":"auto","description":"How `total_chapters` resolves against sources: auto (manual-or-source), lock (manual verbatim), floor (manual unless a source is greater)."},"is_standalone":{"type":"boolean","default":false,"description":"Whether the series can be active on the site WITHOUT any external metadata source id (anilist_id, manga_updates_id, etc.). When true it is self-sourced - the submitter supplies the otherwise-derived fields directly (see the sourceless-required rule); when false it derives its metadata from at least one linked source."},"disable_automatic_external_identifiers":{"type":["boolean","null"],"default":false,"description":"When true, stop automatic linking of external source ids to this series."},"disable_automatic_tag_assignment":{"type":["boolean","null"],"default":false,"description":"When true, stop automatic (source-derived) tag assignment for this series."},"disable_automatic_publisher_assignment":{"type":["boolean","null"],"default":false,"description":"When true, stop source-derived publisher changes for this series."},"anidb_id":{"type":["number","null"],"description":"External AniDB id; null if unmapped."},"anilist_id":{"type":["number","null"],"description":"External AniList id; null if unmapped."},"anime_news_network_id":{"type":["number","null"],"description":"External Anime News Network id; null if unmapped."},"anime_planet_id":{"type":["string","null"],"description":"External Anime-Planet slug/id; null if unmapped."},"kitsu_id":{"type":["number","null"],"description":"External Kitsu id; null if unmapped."},"manga_updates_id":{"type":["string","null"],"minLength":7,"maxLength":7,"pattern":"^[a-z0-9]{7}$/i","description":"External MangaUpdates id (7 alphanumeric base-36 chars); null if unmapped."},"my_anime_list_id":{"type":["number","null"],"description":"External MyAnimeList id; null if unmapped."},"shikimori_id":{"type":["number","null"],"description":"External Shikimori id; null if unmapped."},"published_start_date":{"type":["string","null"],"format":"date","description":"First publication date (YYYY-MM-DD); null if unknown."},"published_end_date":{"type":["string","null"],"format":"date","description":"Last publication date (YYYY-MM-DD); null if ongoing or unknown."},"wikidata_id":{"type":["string","null"],"pattern":"^Q\\d+","description":"Wikidata entity id (Q-number, e.g. `Q12345`); null if unmapped."},"series_titles":{"type":"array","items":{"$ref":"#/components/schemas/SeriesTitleFormEntry"},"maxItems":500,"default":[],"description":"Series titles (v2) - the primary titles model. Full-replace collection: send the complete set and mark a removal with `is_excluded`. Supersedes the deprecated top-level `titles`."},"links":{"type":"array","items":{"$ref":"#/components/schemas/SeriesLinkEntry"},"default":[],"description":"External link bindings (v2). Full-replace collection. Distinct from the deprecated legacy `overrides.links` URL list."},"relationships":{"type":"array","items":{"$ref":"#/components/schemas/SeriesRelationshipEntry"},"default":[],"description":"Series-to-series relationships: manual rows plus merged auto-derived rows. Full-replace collection; use `_action` to remove/restore and `is_manual` to override the materializer."},"series_publishers":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid","description":"Existing series publisher row id (uuid). Omit/null to add a new row."},"publisher_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"The publisher (`publishers.id`)."},"language":{"type":["string","null"],"enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","jv","ka","kk","km","kn","ko","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK",null],"description":"Language of this publisher's release of the series. `null` is the original-language release. A series lists a publisher once per language."},"note":{"type":["string","null"],"description":"What this publisher published for the series, e.g. `Vol 1-3`."},"is_locked":{"type":"boolean","description":"Automation never changes a locked row. Rows added or edited by hand must be locked; only a row a source provides can be unlocked."},"is_hidden":{"type":"boolean","description":"Hidden rows are removed publishers a source still provides. Always locked."},"_key":{"type":"string","description":"Client-only stable row key for new (id-less) rows; ignored server-side."}},"required":["publisher_id","language","is_locked","is_hidden"]},"maxItems":100,"default":[],"description":"Publishers of this series, one row per publisher per release language, keyed on the row `id`. Full-replace collection: a row left out is removed, as a hidden row when a source provides it. Adding or editing a row locks it."},"tags":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SeriesTagEntry"},"default":{},"description":"The tags to apply to this series, and how relevant each one is to it."},"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"],"description":"Existing series_images row id; null/omit for a new cover."},"series_id":{"type":["number","null"],"description":"Owning series id."},"work_id":{"type":["string","null"],"format":"uuid","description":"Owning work id (uuid) when the cover belongs to a specific work; send `null` when it does not. The key is required — an omission is a 400, not \"leave it alone\"."},"url":{"type":"string","format":"uri","description":"Cover image URL. imgur is rejected (aggressive rate limiting). Acts as the cover identity on save."},"index":{"type":["string","null"],"minLength":1,"description":"Display order key (string); paired with index_numeric for sorting."},"index_numeric":{"type":["number","null"],"minimum":0,"description":"Numeric sort order (derived from `index` when omitted)."},"language":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown"],"description":"Language/script of the cover (e.g. `en`, `ja`)."},"type":{"type":"string","enum":["audiobook","banner","chapter","other","season","volume","volume_back"],"default":"volume","description":"Cover type (volume, poster, …); defaults to `volume`."},"note":{"type":["string","null"],"description":"Free-form moderator note about this cover; send `null` when there is none. The key is required."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Content rating of the cover image."},"is_default":{"type":"boolean","default":false,"description":"Whether this is the default/primary cover. Exactly one cover must be default when the set is non-empty."}},"required":["series_id","work_id","url","index_numeric","language","note","content_rating"]},"default":[],"description":"Cover images for the series. **Omit this field entirely to leave the existing covers alone** — sending it, even as an empty list, replaces them, so an empty list removes every cover."}},"description":"Full series record (scalars, titles, tags, relationships, links, cover images)."},"SeriesTagEntry":{"type":"object","properties":{"tag_id":{"type":["number","null"],"description":"The tag to apply (id from the tags catalog)."},"is_spoiler":{"type":["boolean","null"],"description":"Mark this tag as a spoiler for the series; null inherits the source-derived value."},"is_explicit":{"type":["boolean","null"],"description":"Whether the tag is moderator-set (true) vs auto-derived (false), default true. Only explicit tags are pruned when a tag set is saved — derived tags are left untouched."},"manual_weight":{"type":["string","null"],"enum":["core","defining","recurrent","incidental",null],"description":"Moderator weight override (core/defining/recurrent/incidental); null falls through to derived → unweighted."}},"required":["tag_id"],"description":"A tag applied to a series, with optional spoiler flag and weight override."},"series-images":{"type":"object","properties":{"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":["number","null"],"description":"Existing series_images row id; null/omit for a new cover."},"series_id":{"type":["number","null"],"description":"Owning series id."},"work_id":{"type":["string","null"],"format":"uuid","description":"Owning work id (uuid) when the cover belongs to a specific work; send `null` when it does not. The key is required — an omission is a 400, not \"leave it alone\"."},"url":{"type":"string","format":"uri","description":"Cover image URL. imgur is rejected (aggressive rate limiting). Acts as the cover identity on save."},"index":{"type":["string","null"],"minLength":1,"description":"Display order key (string); paired with index_numeric for sorting."},"index_numeric":{"type":["number","null"],"minimum":0,"description":"Numeric sort order (derived from `index` when omitted)."},"language":{"type":"string","enum":["af","am","ar","az","be","bg","bn","bs","ca","ce","cs","cv","cy","da","de","el","en","eo","es","es-la","et","eu","fa","fi","fr","ga","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ja-Latn","jv","ka","kk","km","kn","ko","ko-Latn","ku","la","lb","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","ne","nl","no","pa","pl","pt","pt-br","ro","ru","si","sk","sl","sq","sr","sv","sw","ta","te","th","tl","tg","tr","uk","ur","uz","vi","yo","lg","mi","sn","so","st","ts","tn","xh","zu","zh","zh-hk","zh-Hans","zh-Hant","zh-Hans-CN","zh-Hant-TW","zh-Hant-HK","yue-Hant-HK","yue-Latn","zh-Latn","unknown"],"description":"Language/script of the cover (e.g. `en`, `ja`)."},"type":{"type":"string","enum":["audiobook","banner","chapter","other","season","volume","volume_back"],"default":"volume","description":"Cover type (volume, poster, …); defaults to `volume`."},"note":{"type":["string","null"],"description":"Free-form moderator note about this cover; send `null` when there is none. The key is required."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Content rating of the cover image."},"is_default":{"type":"boolean","default":false,"description":"Whether this is the default/primary cover. Exactly one cover must be default when the set is non-empty."}},"required":["series_id","work_id","url","index_numeric","language","note","content_rating"]},"default":[],"description":"The complete set of cover images for the series. This replaces what is already there, so include the covers you want to keep as well as the ones you are adding."}},"description":"Cover-image set for a series."},"tags":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The tag’s own name, without the tags it sits under. `name_path` gives the full path."},"parent_id":{"type":["number","null"],"description":"The tag this one sits under. Empty for a top-level tag."},"description":{"type":["string","null"],"description":"What the tag means and when it applies. Shown to readers."},"is_spoiler":{"type":"boolean","default":false,"description":"Whether the tag gives away plot. Spoiler tags are blurred until you hover them. A series can override this for its own listing."},"is_genre":{"type":"boolean","default":false,"description":"Whether this is a genre rather than an ordinary tag. Filter `tags_v2` on this to get a series’ genres."},"is_organizational":{"type":"boolean","default":false,"description":"A tag that exists to group other tags rather than to describe a series. These are left out when matching similar series."},"recommendation_weight":{"type":["number","null"],"minimum":0,"maximum":2,"description":"How much this tag counts when matching similar series. 1 is normal, higher counts for more, and 0 leaves the tag out of matching altogether. Empty takes the weight most of its sibling tags have."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"default":"safe","description":"The tag’s own rating. A series carries its own rating separately; it is not worked out from its tags."},"rules":{"type":"array","items":{"$ref":"#/components/schemas/TagRuleEntry"},"default":[],"description":"Links between this tag and others that apply one automatically when the other is used. Each entry says which way round it goes — this tag implying the other, or the other implying this one."}},"required":["name"],"description":"Tag record (scalars, parent, and implication rules)."},"TagRuleEntry":{"type":"object","properties":{"id":{"type":"string","description":"tag_implications row id (as string). Client-generated for new rows on the form side."},"key":{"type":"string","description":"Synthetic identity \"direction:other_tag_id\" — the diff identity for this edge."},"direction":{"type":"string","enum":["implies","implied_by"],"description":"`implies` = this tag implies the other tag; `implied_by` = the other tag implies this tag."},"other_tag_id":{"type":"number","description":"The other tag in the edge (not the tag being edited)."},"remove_action":{"type":"string","enum":["CLEAN","CONVERT_TO_EXPLICIT"],"description":"Cleanup mode for a removal — passed to delete_tag_implication. Defaults to CLEAN. Ignored unless _action=remove."},"_action":{"type":"string","enum":["remove"],"description":"Operation marker: `remove` deletes the rule (running the cleanup). Omit for add/keep."},"_new":{"type":"boolean","description":"Form marker for a client-created row not yet persisted."}},"required":["id","key","direction","other_tag_id"],"description":"A tag-implication edge relative to the edited tag (direction + the other tag)."},"link-domains":{"type":"object","properties":{"name_ascii":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9.-]+$","description":"The hostname, lowercase (international domains in their punycode form). Set when the domain is created and **cannot be changed afterwards** — links are matched to a domain by hostname, so renaming one would orphan every link on it. An edit that changes it is rejected."},"name_display":{"type":"string","minLength":1,"maxLength":255,"description":"The site’s name as shown to readers. International hostnames are shown in their normal script."},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","enum":[""]}],"default":"","description":"The domain this one sits under and inherits its defaults and link clean-up rules from. Nesting is one level deep, so the parent cannot itself have a parent. Leave empty for a top-level domain."},"inherit_parent_rules":{"type":"boolean","description":"Also apply the parent domain’s link clean-up rules, before this domain’s own. No effect when there is no parent."},"default_type":{"anyOf":[{"type":"string","enum":["retailer","publisher","webplatform","info","social","news","piracy","other"]},{"type":"string","enum":[""]}],"default":"","description":"What kind of site this is. Used for links on this host that do not say what they are. Leave empty to inherit the parent domain’s type."},"default_language":{"anyOf":[{"$ref":"#/components/schemas/V2_TitleLanguage"},{"type":"string","enum":[""]}],"default":"","description":"The language links on this host are in. Used for links that do not say. Leave empty to inherit the parent domain’s language."},"status":{"type":"string","enum":["new","active","blocked","archived"],"description":"Where the domain stands. `new` is a newly discovered host nobody has reviewed yet, `active` is in normal use. `blocked` and `archived` are both treated as untrusted whatever the trust level says, so links on them are removed when a series description is cleaned up."},"trust_level":{"anyOf":[{"type":"string","enum":["blocked","untrusted","neutral","trusted","official"]},{"type":"string","enum":[""]}],"default":"","description":"How much links on this host are trusted. Only `trusted` and `official` links are kept when a series description is cleaned up; the rest are removed. A `blocked` or `archived` status overrides this. Leave empty to inherit the parent domain’s level, which falls back to `neutral`."},"favicon_override_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","enum":[""]}],"default":"","description":"Icon to show for this site instead of the one found on the host itself. Leave empty to use the host’s own."},"in_metrics_allowlist":{"type":"boolean","description":"Include this domain in link metrics reporting."},"description":{"type":"string","maxLength":10000,"description":"Notes about this domain for moderators. Not shown to readers."},"canonicalization_rules":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/strip_query_param"},{"$ref":"#/components/schemas/strip_path_segment"},{"$ref":"#/components/schemas/extract_and_rebuild"},{"$ref":"#/components/schemas/remove_fragment"},{"$ref":"#/components/schemas/strip_trailing_slash"},{"$ref":"#/components/schemas/strip_subdomain"},{"$ref":"#/components/schemas/replace_host"},{"$ref":"#/components/schemas/extract_language"}],"discriminator":{"propertyName":"action","mapping":{"strip_query_param":"#/components/schemas/strip_query_param","strip_path_segment":"#/components/schemas/strip_path_segment","extract_and_rebuild":"#/components/schemas/extract_and_rebuild","remove_fragment":"#/components/schemas/remove_fragment","strip_trailing_slash":"#/components/schemas/strip_trailing_slash","strip_subdomain":"#/components/schemas/strip_subdomain","replace_host":"#/components/schemas/replace_host","extract_language":"#/components/schemas/extract_language"}}},"default":[],"description":"Rules that tidy up link addresses on this host — dropping tracking parameters, trimming path segments, and similar. They run in the order given, after the standard clean-up applied to every link, and after the parent domain’s rules when `inherit_parent_rules` is set. A rule that does not match the address leaves it alone."}},"required":["name_ascii","name_display","inherit_parent_rules","status","in_metrics_allowlist","description"],"description":"Link domain record (scalars, parent, and canonicalization rules)."},"strip_query_param":{"type":"object","properties":{"action":{"type":"string","enum":["strip_query_param"]},"params":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","params","tests"],"additionalProperties":false,"description":"Removes named query parameters while keeping the rest of the URL unchanged. Example: ?utm_source=x&ref=y becomes no tracking params."},"strip_path_segment":{"type":"object","properties":{"action":{"type":"string","enum":["strip_path_segment"]},"regex":{"type":"string","minLength":1},"replace":{"type":"string"},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","regex","replace","tests"],"additionalProperties":false,"description":"Regex-replaces part of the URL path. Example: /-/en/book becomes /book."},"extract_and_rebuild":{"type":"object","properties":{"action":{"type":"string","enum":["extract_and_rebuild"]},"match_scope":{"type":"string","enum":["url","path"]},"regex":{"type":"string","minLength":1},"output_template":{"type":"string","minLength":1},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","regex","output_template","tests"],"additionalProperties":false,"description":"Captures the stable identifier and builds a clean canonical URL. Example: With Path only, /title/123 can capture 123 and rebuild a stable URL."},"remove_fragment":{"type":"object","properties":{"action":{"type":"string","enum":["remove_fragment"]},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","tests"],"additionalProperties":false,"description":"Drops browser-only anchor fragments. Example: /title#comments becomes /title."},"strip_trailing_slash":{"type":"object","properties":{"action":{"type":"string","enum":["strip_trailing_slash"]},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","tests"],"additionalProperties":false,"description":"Removes a final slash from non-root paths. Example: /title/ becomes /title."},"strip_subdomain":{"type":"object","properties":{"action":{"type":"string","enum":["strip_subdomain"]},"subdomain":{"type":"string","minLength":1},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","subdomain","tests"],"additionalProperties":false,"description":"Removes a fixed subdomain prefix from the host. Example: www.example.com becomes example.com."},"replace_host":{"type":"object","properties":{"action":{"type":"string","enum":["replace_host"]},"from_regex":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"}},"required":["input","expected"],"additionalProperties":false},"minItems":1}},"required":["action","from_regex","to","tests"],"additionalProperties":false,"description":"Renames matching hosts. Example: x.com/user becomes twitter.com/user."},"extract_language":{"type":"object","properties":{"action":{"type":"string","enum":["extract_language"]},"match_scope":{"type":"string","enum":["url","path"]},"regex":{"type":"string","minLength":1},"language_template":{"type":"string","minLength":1},"tests":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","maxLength":2048,"format":"uri"},"expected":{"type":"string","maxLength":2048,"format":"uri"},"expected_language":{"type":"string","minLength":1}},"required":["input","expected_language"],"additionalProperties":false},"minItems":1}},"required":["action","regex","language_template","tests"],"additionalProperties":false,"description":"Extracts a language code and stores it on the link without changing the URL. Example: With Path only, /da_DK/title stores da."},"series-merge-snapshot":{"type":"object","properties":{"merge_with_series_id":{"type":["integer","null"],"exclusiveMinimum":0,"default":null,"description":"The other series this one is a duplicate of. Which of the two survives the merge is decided for you, so it does not matter which side you file from — explain your reasoning in the submission note."}},"description":"Empty merge-request state. Select a positive counterpart ID before saving."},"forum-sections":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"slug":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,40}$"},"description":{"type":"string","maxLength":300},"guide_md":{"type":"string","maxLength":4000},"min_role_view":{"type":"string","enum":["public","user","contributor","moderator","admin"]},"min_role_post":{"type":"string","enum":["user","contributor","moderator","admin"]},"min_role_comment":{"type":"string","enum":["user","contributor","moderator","admin"]},"voting_enabled":{"type":"boolean"},"discord_target":{"type":"string","maxLength":64,"default":""},"groups":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"name":{"type":"string","minLength":1,"maxLength":60},"sort_order":{"type":"integer","minimum":0},"min_picks":{"type":"integer","minimum":0,"maximum":30},"max_picks":{"type":["integer","null"],"minimum":1,"maximum":30},"is_status":{"type":"boolean"},"default_tag_ref":{"anyOf":[{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},{"type":"string","enum":[""]}]},"set_by":{"type":"string","enum":["author","role"]},"set_by_role":{"anyOf":[{"type":"string","enum":["contributor","moderator","admin"]},{"type":"string","enum":[""]}]}},"required":["ref","name","sort_order","min_picks","max_picks","is_status","default_tag_ref","set_by","set_by_role"]},"maxItems":50},"tags":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"group_ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"name":{"type":"string","minLength":1,"maxLength":60},"description":{"type":"string","maxLength":300},"emoji":{"type":"string","maxLength":8},"color":{"type":"string","enum":["neutral","red","orange","amber","lime","green","teal","blue","violet","pink"]},"min_role":{"anyOf":[{"type":"string","enum":["user","contributor","moderator","admin"]},{"type":"string","enum":[""]}]},"closes_post":{"type":"boolean"},"sort_order":{"type":"integer","minimum":0},"archived":{"type":"boolean"}},"required":["ref","group_ref","name","description","emoji","color","min_role","closes_post","sort_order","archived"]},"maxItems":500},"intents":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"label":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":300},"type_tag_ref":{"anyOf":[{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},{"type":"string","enum":[""]}]},"sort_order":{"type":"integer","minimum":0},"archived":{"type":"boolean"}},"required":["ref","label","description","type_tag_ref","sort_order","archived"]},"maxItems":50},"forms":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"name":{"type":"string","minLength":1,"maxLength":60},"submit_label":{"type":"string","maxLength":40},"is_default":{"type":"boolean"},"sort_order":{"type":"integer","minimum":0},"trigger_tag_refs":{"type":"array","items":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"maxItems":30}},"required":["ref","name","submit_label","is_default","sort_order","trigger_tag_refs"]},"maxItems":50},"questions":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"form_ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,40}$"},"label":{"type":"string","minLength":1,"maxLength":120},"help":{"type":"string","maxLength":300},"kind":{"type":"string","enum":["short_text","long_text","steps","links","images","choice","multi_choice","environment"]},"heading":{"type":"string","maxLength":60},"required":{"type":"boolean"},"include_diagnostics":{"type":"boolean"},"sort_order":{"type":"integer","minimum":0}},"required":["ref","form_ref","key","label","help","kind","heading","required","include_diagnostics","sort_order"]},"maxItems":500},"options":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"question_ref":{"type":"string","pattern":"^(?:[1-9]\\d{0,9}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"},"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,40}$"},"label":{"type":"string","minLength":1,"maxLength":120},"sort_order":{"type":"integer","minimum":0},"archived":{"type":"boolean"}},"required":["ref","question_ref","key","label","sort_order","archived"]},"maxItems":2000}},"required":["name","slug","description","guide_md","min_role_view","min_role_post","min_role_comment","voting_enabled","groups","tags","intents","forms","questions","options"],"description":"Forum section settings (scalars, tag groups, tags, intents, post forms and their questions)."},"publishers":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["publisher","imprint"]},"sub_type":{"type":"string","enum":["physical","digital","both"]},"parent_id":{"type":["number","null"]},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"languages":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"},"default":[]},"links":{"type":"array","items":{"$ref":"#/components/schemas/V1_WebLink"},"default":[]},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"description":{"type":["string","null"]},"note":{"type":["string","null"]},"logo_url":{"type":["string","null"],"pattern":"^https:\\/\\/uploads\\.mangabaka\\.org\\/publisher-logo\\/[0-9a-f]{32}\\.(png|png|jpg|webp|gif|avif|svg)$"},"aliases":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":500},"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"type":{"type":"string","enum":["alternative","native","official","romanized","unofficial","unknown"]},"note":{"type":["string","null"]}},"required":["ref","title","language","type"]},"default":[]}},"required":["name","type","sub_type"],"description":"Publisher record (scalars, imprint parent, and aliases)."},"publisher-merge-snapshot":{"type":"object","properties":{"merge_into_publisher_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647,"default":null,"description":"The publisher that survives. The submitted publisher redirects to it afterwards."}},"description":"Empty publisher-merge state. Select the publisher to merge into before saving."},"badges":{"type":"object","properties":{"label":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"priority":{"type":"integer","minimum":-2147483647,"maximum":2147483647},"tiers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":1},"threshold":{"type":"integer","minimum":0,"maximum":1000000000},"label":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"image_light":{"type":"string","minLength":1,"pattern":"^(https:\\/\\/uploads\\.mangabaka\\.org\\/badges|\\/images\\/badges)\\/[\\w.-]+\\.(svg|png|webp)$"},"image_dark":{"type":["string","null"],"minLength":1,"pattern":"^(https:\\/\\/uploads\\.mangabaka\\.org\\/badges|\\/images\\/badges)\\/[\\w.-]+\\.(svg|png|webp)$"},"lapsed_image_light":{"type":"string","minLength":1,"pattern":"^(https:\\/\\/uploads\\.mangabaka\\.org\\/badges|\\/images\\/badges)\\/[\\w.-]+\\.(svg|png|webp)$"},"lapsed_image_dark":{"type":["string","null"],"minLength":1,"pattern":"^(https:\\/\\/uploads\\.mangabaka\\.org\\/badges|\\/images\\/badges)\\/[\\w.-]+\\.(svg|png|webp)$"},"discord_role_id":{"type":["string","null"],"pattern":"^\\d{17,20}$"}},"required":["ref","threshold","label","description","image_light","lapsed_image_light"]},"minItems":1}},"required":["label","description","priority","tiers"],"description":"Badge catalog entry and its tiers. Admin only."},"SubmissionMutateResult":{"type":"object","properties":{"submission_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"Unique submission id.","example":1},"entity":{"type":"string","description":"DB entity discriminator the submission targets.","example":"series"},"entity_id":{"type":"string","description":"ID of the targeted resource row.","example":"1"},"status":{"type":"string","enum":["pending","accepted","rejected","withdrawn"],"description":"Review lifecycle status of the submission."},"user_note":{"type":"string","description":"Submitter-supplied note describing the change."},"admin_note":{"type":["string","null"],"description":"Moderator note attached on accept/reject; null while pending."},"created_at":{"type":"string","format":"date-time","description":"When the submission was created (ISO 8601)."},"updated_at":{"type":"string","format":"date-time","description":"When the submission was last modified (ISO 8601)."},"changes":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionDiff"},"description":"The field-level diff this submission produced (accepted) or will produce on accept (pending)."}},"required":["submission_id","entity","entity_id","status","user_note","admin_note","created_at","updated_at","changes"],"description":"A submission summary plus the diff it represents."},"SubmissionDiff":{"type":"object","properties":{"field":{"type":"string","description":"Resource field that changed (dotted for nested, e.g. `overrides.status`)."},"type":{"type":"string","enum":["added","removed","changed"],"description":"What happened to the field: `added` had no value before, `removed` has none now, `changed` had one and now has a different one."},"identity":{"type":"string","description":"Identity of the changed item within an array/key-set field (e.g. a tag id or cover url)."},"label":{"type":"string","description":"Human-readable label for the changed item, when applicable."},"details":{"type":"object","additionalProperties":{"type":"object","properties":{"old":{},"new":{}}},"description":"Per-subfield old→new values for a `changed` entry."}},"required":["field","type"],"description":"A single field-level change a save would produce."},"CreateSubmissionBody":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubmissionResourceData"},"user_note":{"type":"string","minLength":1,"description":"Required note describing the proposed change."},"save_mode":{"type":"string","enum":["direct","review"],"description":"Trusted users (contributor+) only: `direct` (default) applies the change immediately; `review` sends it to the moderator queue. Ignored for users and resources that cannot self-approve; series-merge requests always queue."}},"required":["data","user_note"],"description":"Body for creating a brand-new resource. Carries no `version`."},"SubmissionResourceData":{"anyOf":[{"$ref":"#/components/schemas/series"},{"$ref":"#/components/schemas/series-images"},{"$ref":"#/components/schemas/tags"},{"$ref":"#/components/schemas/link-domains"},{"$ref":"#/components/schemas/series-merge"},{"$ref":"#/components/schemas/forum-sections"},{"$ref":"#/components/schemas/publishers"},{"$ref":"#/components/schemas/publisher-merge"},{"$ref":"#/components/schemas/badges"}],"description":"The submitted resource data, shaped per `resource` — one variant per resource: `series`, `series-images`, `tags`, `link-domains`, `series-merge`, `forum-sections`, `publishers`, `publisher-merge`, `badges`."},"series-merge":{"type":"object","properties":{"merge_with_series_id":{"type":"integer","exclusiveMinimum":0,"description":"The other series this one is a duplicate of. Which of the two survives the merge is decided for you, so it does not matter which side you file from — explain your reasoning in the submission note."}},"required":["merge_with_series_id"],"description":"Request that this series be merged with another as duplicates. The merge direction is not proposed — it is derived from the pair (the lower/older id wins); the rationale rides on the submission `user_note`."},"publisher-merge":{"type":"object","properties":{"merge_into_publisher_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"The publisher that survives. The submitted publisher redirects to it afterwards."}},"required":["merge_into_publisher_id"],"description":"Fold this publisher into `merge_into_publisher_id`. Its links, series, aliases and imprints move to that publisher and its page redirects there."},"SaveSubmissionBody":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubmissionResourceData"},"version":{"type":"integer","description":"Opaque optimistic-concurrency token returned by the snapshot GET. Compare it for equality only, never interpret it as a timestamp. Round-trip it as `version` — a stale value is rejected (409)."},"user_note":{"type":"string","minLength":1,"description":"Required note describing the proposed change."},"save_mode":{"type":"string","enum":["direct","review"],"description":"Trusted users (contributor+) only: `direct` (default) applies the change immediately; `review` sends it to the moderator queue. Ignored for users and resources that cannot self-approve; series-merge requests always queue."}},"required":["data","version","user_note"],"description":"Body for editing an existing resource. `version` (from the snapshot) is REQUIRED — a stale value is rejected (409)."},"PreviewSubmissionBody":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubmissionResourceData"},"version":{"type":"integer","description":"Opaque optimistic-concurrency token returned by the snapshot GET. Compare it for equality only, never interpret it as a timestamp. Round-trip it as `version` — a stale value is rejected (409)."}},"required":["data"],"description":"Body for previewing (dry-running) a submission."},"SubmissionDetail":{"type":"object","properties":{"submission_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"Unique submission id.","example":1},"entity":{"type":"string","description":"DB entity discriminator the submission targets.","example":"series"},"entity_id":{"type":"string","description":"ID of the targeted resource row.","example":"1"},"status":{"type":"string","enum":["pending","accepted","rejected","withdrawn"],"description":"Review lifecycle status of the submission."},"user_note":{"type":"string","description":"Submitter-supplied note describing the change."},"admin_note":{"type":["string","null"],"description":"Moderator note attached on accept/reject; null while pending."},"created_at":{"type":"string","format":"date-time","description":"When the submission was created (ISO 8601)."},"updated_at":{"type":"string","format":"date-time","description":"When the submission was last modified (ISO 8601)."},"data":{"anyOf":[{"$ref":"#/components/schemas/series"},{"$ref":"#/components/schemas/series-images"},{"$ref":"#/components/schemas/tags"},{"$ref":"#/components/schemas/link-domains"},{"$ref":"#/components/schemas/series-merge"},{"$ref":"#/components/schemas/forum-sections"},{"$ref":"#/components/schemas/publishers"},{"$ref":"#/components/schemas/publisher-merge"},{"$ref":"#/components/schemas/badges"}],"description":"The submitted resource data (shape depends on `resource`)."},"changes":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionDiff"},"description":"The submitter's proposed field-level diff (their original proposal)."},"final_data":{"anyOf":[{"$ref":"#/components/schemas/series"},{"$ref":"#/components/schemas/series-images"},{"$ref":"#/components/schemas/tags"},{"$ref":"#/components/schemas/link-domains"},{"$ref":"#/components/schemas/series-merge"},{"$ref":"#/components/schemas/forum-sections"},{"$ref":"#/components/schemas/publishers"},{"$ref":"#/components/schemas/publisher-merge"},{"$ref":"#/components/schemas/badges"},{"type":"null"}],"description":"What was actually applied to the live DB on accept (the reviewer may have edited it); null until accepted."},"final_changes":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SubmissionDiff"},"description":"The field-level diff actually applied on accept; null until accepted. Differs from `changes` when a reviewer edited before accepting."},"version":{"type":"integer","description":"The submission row's concurrency token (unix epoch millis). Round-trip it as `version` on a PATCH/withdraw — a stale value is rejected (409)."}},"required":["submission_id","entity","entity_id","status","user_note","admin_note","created_at","updated_at","data","changes","final_data","final_changes","version"],"description":"A single submission including its full submitted data."},"PatchSubmissionBody":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubmissionResourceData"},"version":{"type":"integer","description":"Opaque optimistic-concurrency token returned by the snapshot GET. Compare it for equality only, never interpret it as a timestamp. Round-trip it as `version` — a stale value is rejected (409)."},"user_note":{"type":"string","minLength":1,"description":"Required note describing the proposed change."},"save_mode":{"type":"string","enum":["direct","review"],"description":"Trusted users (contributor+) only: `direct` (default) applies the change immediately; `review` sends it to the moderator queue. Ignored for users and resources that cannot self-approve; series-merge requests always queue."}},"required":["data","version"],"description":"Sparse merge into a pending submission — send only the changed resource fields under `data`. `version` (the submission row token from GET) is REQUIRED — a stale value is rejected (409)."},"WithdrawSubmissionBody":{"type":"object","properties":{"version":{"type":"integer","description":"Opaque optimistic-concurrency token returned by the snapshot GET. Compare it for equality only, never interpret it as a timestamp. Round-trip it as `version` — a stale value is rejected (409)."},"reason":{"type":"string","minLength":1,"description":"Required reason shown in the submission audit trail."}},"required":["version","reason"],"description":"Body for withdrawing a pending submission."},"LibraryEntryV2":{"type":"object","properties":{"entry":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"finish_date":{"type":["string","null"],"format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"user_id":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time","description":"When the series was added to the library. Omitted on a public library."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the entry was last saved. Moves on saves that change nothing visible too. Omitted on a public library."}},"required":["id","series_id","user_id"],"additionalProperties":false,"description":"Your own tracking for this series — reading state, rating, progress, re-reads and notes."},"lists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"is_private":{"type":"boolean"}},"required":["id","name","is_private"],"additionalProperties":false},"description":"The lists you have put this series on."},"series":{"$ref":"#/components/schemas/SeriesV2Any"}},"required":["entry","lists","series"],"additionalProperties":false,"description":"Library entry (v2)"},"V2_Cursor_Pagination":{"type":"object","properties":{"limit":{"type":"number","description":"The number of rows per page"},"cursor":{"type":"string","description":"Send it as `cursor` on your next call. Store it only once you have applied this page."},"more":{"type":"boolean","description":"`true`: call again now with `cursor`. `false`: you are caught up; send `cursor` on your next poll."}},"required":["limit","cursor","more"],"additionalProperties":false},"LibraryChangeItem":{"oneOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["entry"]},"action":{"type":"string","enum":["upsert"]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991,"format":"int64","description":"The revision this entry or list last changed at."},"current":{"$ref":"#/components/schemas/LibraryChangesEntry"}},"required":["type","action","revision","current"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["entry"]},"action":{"type":"string","enum":["delete"]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991,"format":"int64","description":"The revision this entry or list last changed at."},"current":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["series_id"],"additionalProperties":false}},"required":["type","action","revision","current"],"additionalProperties":false}]},{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["list"]},"action":{"type":"string","enum":["upsert"]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991,"format":"int64","description":"The revision this entry or list last changed at."},"current":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"is_private":{"type":"boolean"}},"required":["id","name","is_private"],"additionalProperties":false}},"required":["type","action","revision","current"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["list"]},"action":{"type":"string","enum":["delete"]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991,"format":"int64","description":"The revision this entry or list last changed at."},"current":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id"],"additionalProperties":false}},"required":["type","action","revision","current"],"additionalProperties":false}]}],"description":"Library change"},"LibraryChangesEntry":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"finish_date":{"type":["string","null"],"format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"user_id":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time","description":"When the series was added to the library."},"updated_at":{"type":["string","null"],"format":"date-time","description":"When the entry was last saved. Moves on saves that change nothing visible too."},"list_ids":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"description":"Ids of the lists this entry belongs to, ascending. May name a list you have not received yet."}},"required":["id","series_id","user_id","created_at","updated_at","list_ids"],"additionalProperties":false,"description":"Library changes entry"},"LibraryChangedUser":{"type":"object","properties":{"user_id":{"type":"string","description":"The user's id, the `sub` of their OAuth token."},"cursor":{"type":["string","null"],"description":"A changes feed `cursor` for this user, from where your app's last finished sync run ended; `null` before the first one (bootstrap)."},"url":{"type":"string","format":"uri","description":"The changes feed call to make next with this user's OAuth token: `cursor`, if any, already set."}},"required":["user_id","cursor","url"],"additionalProperties":false,"description":"Library changed user"}},"parameters":{}},"paths":{"/v1/series/{id}":{"get":{"operationId":"get_series_id_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get a series by its ID (auth: none, cache ttl: 7 days)","description":"Only includes the MangaBaka processed data. Use the `GET /v1/series/{id}/full` endpoint to get the raw source responses as well\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/images":{"get":{"operationId":"get_series_id_images_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get cover images for a series (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["audiobook","banner","chapter","other","season","volume","volume_back"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V1_TitleLanguage"},"default":[]},"required":false,"name":"language","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Cover_Image"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"available_languages":{"type":"array","items":{"$ref":"#/components/schemas/V1_TitleLanguage"}},"available_types":{"type":"array","items":{"type":"string","enum":["audiobook","banner","chapter","other","season","volume","volume_back"]}}},"required":["status","data","pagination","available_languages","available_types"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/related":{"get":{"operationId":"get_series_id_related_v1","tags":["Series","v1"],"summary":"🌐 (deprecated) Get related series for the series (deprecated) (auth: none, cache ttl: 7 days)","description":"**Deprecated.** Returns a coarse 8-bucket roll-up of related series IDs. New consumers should use `GET /v1/series/{id}/relationships` (paginated, directional, filterable). This endpoint is retained unchanged for backwards compatibility.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"adaptation":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"alternative":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"main_story":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"other":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"prequel":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"sequel":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"side_story":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"spin_off":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}}}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/batch":{"get":{"operationId":"get_series_batch_v1","tags":["Series","v1"],"summary":"🌐 (stable) Batch get up to 50 series in one request (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Follow merged and deleted series","url":"https://mangabaka.org/developers/guides/follow-merged-series"},"parameters":[{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"minItems":1,"maxItems":50,"description":"Up to 50 MangaBaka Series ID"},"required":true,"description":"Up to 50 MangaBaka Series ID","name":"id","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/full":{"get":{"operationId":"get_series_id_full_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get a series by ID with full source response fields (auth: none, cache ttl: 7 days)","description":"This is same as `GET /v1/series/{id}` but with the full raw responses from the sources\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Series_Full"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/search":{"get":{"operationId":"get_series_search_v1","tags":["Series","v1"],"summary":"🌐 (stable) Search for series (auth: none, cache ttl: varies)","description":"At least one parameter is required\n\nPagination is bounded by a 12,000-row result window: `page * limit` must not exceed it, and a deeper request returns 400. Lower `limit` to reach more pages, or narrow the query.\n\nCaching: 1 hour by default; 10 minutes with `sort_by=latest`; not cached when `exclude_user_library` is used.\n\nAuthentication: not required.","x-cache-ttl":"VARIES","parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_lower","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"with_boosts","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120."},"required":false,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["chapters_asc","chapters_desc","latest","name_asc","name_desc","popularity_asc","popularity_desc","published_end_date_asc","published_end_date_desc","published_start_date_asc","published_start_date_desc","published_year_asc","published_year_desc","random","relevance_asc","relevance_desc","score_asc","score_desc","trending_30d","trending_7d","volumes_asc","volumes_desc"],"default":"relevance_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set."},"required":false,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set.","name":"random_seed","in":"query"},{"schema":{"deprecated":true,"description":"Use \"with_ignore_content_rating_count\" instead"},"required":false,"description":"Use \"with_ignore_content_rating_count\" instead","name":"with_content_excluded_count","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Return how many results were hidden due to content rating restrictions"},"required":false,"description":"Return how many results were hidden due to content rating restrictions","name":"with_ignore_content_rating_count","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}},"excluded_count":{"type":"number"}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/search":{"get":{"operationId":"get_series_search_v2","tags":["Series","v2"],"summary":"🌐 (beta) Search for series (auth: none, cache ttl: varies)","description":"At least one parameter is required. Use the `schema` parameter to pick the response shape: omit for the lean default; `full` adds links/tags/relationships and the full per-language title list.\n\nPagination is bounded by a 12,000-row result window: `page * limit` must not exceed it, and a deeper request returns 400. Lower `limit` to reach more pages, or narrow the query.\n\nCaching: 1 hour by default; 10 minutes with `sort_by=latest`; not cached when `exclude_user_library` is used.\n\nAuthentication: not required.","x-cache-ttl":"VARIES","parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"with_boosts","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120."},"required":false,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["chapters_asc","chapters_desc","latest","popularity_asc","popularity_desc","published_end_date_asc","published_end_date_desc","published_start_date_asc","published_start_date_desc","published_year_asc","published_year_desc","random","relevance_asc","relevance_desc","score_asc","score_desc","trending_30d","trending_7d","volumes_asc","volumes_desc"],"default":"relevance_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set."},"required":false,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set.","name":"random_seed","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Return how many results were hidden due to content rating restrictions"},"required":false,"description":"Return how many results were hidden due to content rating restrictions","name":"with_ignore_content_rating_count","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeriesV2Any"}},"excluded_count":{"type":"number","description":"Present when `with_ignore_content_rating_count=true`: results hidden by the content-rating filter."}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/{id}":{"get":{"operationId":"get_series_id_v2","tags":["Series","v2"],"summary":"🌐 (beta) Get a series by its ID (auth: none, cache ttl: 7 days)","description":"Returns the MangaBaka processed data for one series. The response shape follows the `schema` query param: omit for the lean default; `full` adds links, tags, relationships and the full per-language title list. Replaces v1 `GET /v1/series/{id}` (lean) and `GET /v1/series/{id}/full`. Merged/deleted series are returned too (with `state`/`merged_with`) so a merge can be followed.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/SeriesV2Any"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/batch":{"get":{"operationId":"get_series_batch_v2","tags":["Series","v2"],"summary":"🌐 (beta) Batch get up to 50 series in one request (auth: none, cache ttl: 7 days)","description":"Resolve up to 50 series by id (repeat the `id` parameter) in a single request. Element shape follows the `schema` query param (omit for the lean default). Missing or inactive ids are omitted from the response.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Follow merged and deleted series","url":"https://mangabaka.org/developers/guides/follow-merged-series"},"parameters":[{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"minItems":1,"maxItems":50,"description":"Up to 50 MangaBaka Series ID"},"required":true,"description":"Up to 50 MangaBaka Series ID","name":"id","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeriesV2Any"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/match":{"get":{"operationId":"get_series_match_v1","tags":["Series","v1"],"summary":"🌐 (internal) Match a series by full title (auth: none, cache ttl: 7 days)","description":"Resolve a reasonably accurate full title to its canonical series. Expects words in the correct order with no typos. Returns the first page of matches only — no pagination metadata, no total count. Match returns nothing rather than guessing when the title does not exactly match an indexed compact form (with a phrase fallback for stemming/stopword divergence). For broader recall, use /v1/series/search.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_lower","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"with_boosts","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120."},"required":false,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["chapters_asc","chapters_desc","latest","name_asc","name_desc","popularity_asc","popularity_desc","published_end_date_asc","published_end_date_desc","published_start_date_asc","published_start_date_desc","published_year_asc","published_year_desc","random","relevance_asc","relevance_desc","score_asc","score_desc","trending_30d","trending_7d","volumes_asc","volumes_desc"],"default":"relevance_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set."},"required":false,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set.","name":"random_seed","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/match":{"get":{"operationId":"get_series_match_v2","tags":["Series","v2"],"summary":"🌐 (beta) Match a series by full title (auth: none, cache ttl: 7 days)","description":"Resolve a reasonably accurate full title to its canonical series. Expects words in the correct order with no typos. Returns the first page of matches only — no pagination metadata, no total count. Match returns nothing rather than guessing when the title does not exactly match an indexed compact form (with a phrase fallback for stemming/stopword divergence). For broader recall, use /v2/series/search. Use the `schema` parameter to pick the response shape: omit for the lean default; `full` adds links/tags/relationships and the full per-language title list.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"with_boosts","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120."},"required":false,"description":"Rows per page (max 100). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 100 the deepest page is 120.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["chapters_asc","chapters_desc","latest","popularity_asc","popularity_desc","published_end_date_asc","published_end_date_desc","published_start_date_asc","published_start_date_desc","published_year_asc","published_year_desc","random","relevance_asc","relevance_desc","score_asc","score_desc","trending_30d","trending_7d","volumes_asc","volumes_desc"],"default":"relevance_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set."},"required":false,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set.","name":"random_seed","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeriesV2Any"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/discover/rising":{"get":{"operationId":"get_series_discover_rising_v2","tags":["Series","v2"],"summary":"🌐 (beta) Discover: rising in libraries (auth: none, cache ttl: 1 day)","description":"Series gaining the most library adds over the last `window_days`. Public and cacheable; optional `content_rating` and `tag_not` filters. Element shape follows the `schema` parameter (lean by default).\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"maximum":20,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":90,"default":7},"required":false,"name":"window_days","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeriesV2Any"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/discover/hidden-gems":{"get":{"operationId":"get_series_discover_hidden_gems_v2","tags":["Series","v2"],"summary":"🌐 (beta) Discover: hidden gems (auth: none, cache ttl: 1 day)","description":"Highly rated series that relatively few readers have found (high external score, low popularity). Public and cacheable; optional `content_rating` and `tag_not` filters. Element shape follows the `schema` parameter (lean by default).\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"maximum":20,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"description":"Only this publisher's series. The popularity floor is unchanged; the score floor drops to the catalog median, so smaller catalogs still fill the rail."},"required":false,"description":"Only this publisher's series. The popularity floor is unchanged; the score floor drops to the catalog median, so smaller catalogs still fill the rail.","name":"publisher_id","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeriesV2Any"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/news":{"get":{"operationId":"get_series_id_news_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get news related to the series (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka unique ID"},"source_id":{"type":["string","null"],"description":"The source unique identifier for the news item"},"source_name":{"type":"string","enum":["ann"],"description":"The source providing the news"},"title":{"type":"string","description":"Title for the news item"},"url":{"type":"string","format":"uri","description":"URL to the article"},"primary":{"type":"boolean","description":"Wether its a primary or secondary news. If `false` it means the article does not have the series as its primary focus."},"type":{"type":"string","enum":["default","review","releases"],"description":"The kind of news item"},"author":{"type":["string","null"],"description":"The author of the article"},"mentioned_series":{"type":"array","items":{"type":"number"},"description":"List of MangaBaka Series IDs that was mentioned in the article"},"series":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"List of MangaBaka Series (expanded) that was mentioned in the article"},"published_at":{"type":["string","null"],"format":"date-time","description":"The date the article was published"},"created_at":{"type":["string","null"],"format":"date-time","description":"The timestamp when MangaBaka created the article"},"updated_at":{"type":["string","null"],"format":"date-time","description":"The last time the article was updated"}},"required":["id","source_name","title","url","primary","type","author","mentioned_series","series","published_at","created_at","updated_at"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/works":{"get":{"operationId":"get_series_id_works_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get works for a series (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Work_Default"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/collections":{"get":{"operationId":"get_series_id_collections_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get collections for a series (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/links":{"get":{"operationId":"get_series_id_links_v1","tags":["Series","v1"],"summary":"🌐 (stable) List enriched series links (auth: none, cache ttl: 7 days)","description":"Hidden, dead, blocked and `piracy`-typed links are never returned.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"description":"Series ID."},"required":true,"description":"Series ID.","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number (1-based)."},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":100,"description":"Links per page (max 100)."},"required":false,"description":"Links per page (max 100).","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUIDv7 of the series ↔ link binding (`series_links.id`).","example":"019024ff-1e8a-7ad9-9b0a-1f8b3c4d5e6f"},"url":{"type":"string","format":"uri","description":"Canonical URL. Always https. Tracker params stripped, per-domain rules applied.","example":"https://www.amazon.de/dp/B0CN8ZRF1K"},"name":{"type":"string","description":"Lowercased punycode hostname (`link_domains.name_ascii`). Used for grouping in the UI.","example":"www.amazon.de"},"name_display":{"type":"string","description":"Human-readable domain display name (`link_domains.name_display`). Falls back to `name` when unset; leading `www.` is stripped for display.","example":"Amazon.de"},"type":{"type":"string","enum":["retailer","publisher","webplatform","info","social","news","piracy","other"],"description":"Effective link type. Resolved via COALESCE(series_links.type, link_domains.default_type, parent.default_type, \"other\").","example":"retailer"},"language":{"type":"string","description":"Effective language. Resolved via COALESCE(series_links.language, links.language, link_domains.default_language, parent.default_language, \"unknown\").","example":"de"},"og_title":{"type":["string","null"],"description":"Open Graph title (Phase 2).","example":null},"og_description":{"type":["string","null"],"description":"Open Graph description (Phase 2).","example":null},"og_image":{"type":["string","null"],"format":"uri","description":"Open Graph image URL (Phase 2).","example":null},"og_site_name":{"type":["string","null"],"description":"Open Graph site_name (Phase 2).","example":null},"last_checked_at":{"type":["string","null"],"format":"date-time","description":"When the last Phase 2 health check ran.","example":null},"status":{"type":["integer","null"],"description":"HTTP status of the last health check (Phase 2). Null in Phase 1.","example":null},"status_history":{"type":["array","null"],"items":{"type":"object","properties":{"status":{"type":"integer"},"checked_at":{"type":"string","format":"date-time"}},"required":["status","checked_at"]},"description":"Phase 2: bounded history of recent health-check outcomes. Null in Phase 1.","example":null},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","url","name","name_display","type","language","og_title","og_description","og_image","og_site_name","last_checked_at","status","status_history","created_at","updated_at"],"additionalProperties":false}}},"required":["status","pagination","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/relationships":{"get":{"operationId":"get_series_id_relationships_v1","tags":["Series","v1"],"summary":"🌐 (beta) List relationships for a series (paginated) (auth: none, cache ttl: 7 days)","description":"Paginated list of directional relationship edges for a series. Each edge points at a related series and carries a `relation_type` (`sequel`, `adaptation`, `spin_off`, etc.). Filter with `relation_type` (repeatable) and paginate with `page`/`limit`. Ordering is fixed: edges are returned by relationship strength so the most useful entries (sequels, prequels, adaptations) come first. Use this endpoint instead of the deprecated `/v1/series/{id}/related`.\n\nAuthentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"]},"default":[]},"required":false,"name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"]},"default":[]},"required":false,"name":"not_type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"relation_type":{"type":"string","enum":["adaptation","alternative","cameo","character_focus","compilation","contains","crossover","expansion","main","other","parent","parody","prequel","reboot","remake","sequel","series","side_story","source","spin_off","summary","uncollected"]},"is_manual":{"type":"boolean"},"note":{"type":["string","null"]},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["id","relation_type","is_manual","note","series"],"additionalProperties":false}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"counts":{"type":"object","additionalProperties":{"type":"number"},"description":"Edge count per relation_type over the content-rating-filtered set (and active targets); ignores the type filter and pagination. Partial: only present types are keys."}},"required":["status","data","pagination","counts"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/similar":{"get":{"operationId":"get_series_id_similar_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get similar series recommendations (auth: none, cache ttl: 1 day)","description":"Returns tag-vector similar series for a source series. Optional `content_rating` filters candidates; omit it for no rating filter. Optional `tag_not` excludes series carrying any listed tag; omit it for no tag blocklist. Results are MMR-diversified and include shared-tag metadata.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":24,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[]},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[],"deprecated":true,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it."},"required":false,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it.","name":"blocked_tag","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"shared_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"weight":{"type":["string","null"],"enum":["core","defining","recurrent","incidental","unweighted",null]}},"required":["id","name","weight"]}},"shared_tags_total":{"type":"integer","minimum":0},"matched_author":{"type":"boolean","default":false},"matched_related":{"type":"boolean","default":false},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["score","shared_tags","shared_tags_total","series"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/{id}/readers-also-like":{"get":{"operationId":"get_series_id_readers_also_like_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get readers-also-like recommendations (auth: none, cache ttl: 1 day)","description":"Returns collaborative-filtering recommendations for a source series based on shared library activity. Optional `content_rating` filters candidates; omit it for no rating filter. Optional `tag_not` excludes series carrying any listed tag; omit it for no tag blocklist.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":24,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[]},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[],"deprecated":true,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it."},"required":false,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it.","name":"blocked_tag","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"shared_users":{"type":"integer","minimum":0},"rank":{"type":"integer","minimum":1,"maximum":50},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["score","shared_users","rank","series"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/{id}/similar":{"get":{"operationId":"get_series_id_similar_v2","tags":["Series","v2"],"summary":"🌐 (beta) Get similar series recommendations (auth: none, cache ttl: 1 day)","description":"Returns tag-vector similar series for a source series, MMR-diversified and annotated with shared-tag metadata. Optional `content_rating` filters candidates; optional `tag_not` excludes series carrying any listed tag. The embedded series shape follows the `schema` parameter (lean by default; `full` for more).\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":24,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[]},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[],"deprecated":true,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it."},"required":false,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it.","name":"blocked_tag","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"shared_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"weight":{"type":["string","null"],"enum":["core","defining","recurrent","incidental","unweighted",null]}},"required":["id","name","weight"]}},"shared_tags_total":{"type":"integer","minimum":0},"matched_author":{"type":"boolean","default":false},"matched_related":{"type":"boolean","default":false},"series":{"$ref":"#/components/schemas/SeriesV2Any"}},"required":["score","shared_tags","shared_tags_total","series"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/{id}/readers-also-like":{"get":{"operationId":"get_series_id_readers_also_like_v2","tags":["Series","v2"],"summary":"🌐 (beta) Get readers-also-like recommendations (auth: none, cache ttl: 1 day)","description":"Returns collaborative-filtering recommendations for a source series based on shared library activity. Optional `content_rating` filters candidates; optional `tag_not` excludes series carrying any listed tag. The embedded series shape follows the `schema` parameter (lean by default; `full` for more).\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":24,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[]},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[],"deprecated":true,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it."},"required":false,"description":"Deprecated alias for `tag_not`. Prefer `tag_not`; ids supplied here are merged into it.","name":"blocked_tag","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"shared_users":{"type":"integer","minimum":0},"rank":{"type":"integer","minimum":1,"maximum":50},"series":{"$ref":"#/components/schemas/SeriesV2Any"}},"required":["score","shared_users","rank","series"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/mix":{"get":{"operationId":"get_series_mix_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get mix recommendations from seed series and tag rules (auth: none, cache ttl: varies)","description":"Combines N seed series tag vectors into a single HNSW probe and returns ranked recommendations. Include-tags can be strict (hard SQL filter) or loose (vector boost). Exclude-tags always filter. All params are in the URL for Cloudflare edge caching. At least one seed or one include-tag is required.\n\nCaching: 1 day by default; not cached when `exclude_user_library` or `blend_user_id` is used.\n\nAuthentication: not required.","x-cache-ttl":"VARIES","parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0},"maxItems":25,"default":[]},"required":false,"name":"series","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"strict","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 120-row result window, so the deepest page depends on `limit` (2 at limit 50, 5 at limit 24, 120 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 120-row result window, so the deepest page depends on `limit` (2 at limit 50, 5 at limit 24, 120 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 120-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 2."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 120-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 2.","name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"number"},"default":[]},"required":false,"name":"blocked_tag","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i"},"required":false,"name":"blend_user_id","in":"query"},{"schema":{"type":"string","enum":["off","light","balanced","strong"],"default":"balanced","description":"How much being widely read shapes the ranking: both a popularity lift and, from 2 seeds, what readers of the seeds also read. `off` ignores popularity and co-reading, `strong` favours well-known series. Series without a popularity rank are placed by their rating; unrated ones count as the least popular."},"required":false,"description":"How much being widely read shapes the ranking: both a popularity lift and, from 2 seeds, what readers of the seeds also read. `off` ignores popularity and co-reading, `strong` favours well-known series. Series without a popularity rank are placed by their rating; unrated ones count as the least popular.","name":"popularity_influence","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number"},"cosine":{"type":"number"},"shared_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"}},"required":["id","name"]}},"shared_tags_total":{"type":"integer","minimum":0},"matched_author":{"type":"boolean","default":false},"matched_related":{"type":"boolean","default":false},"matched_seed_ids":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["score","cosine","shared_tags","shared_tags_total","matched_seed_ids","series"],"additionalProperties":false}},"dna":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"weight":{"type":"number"}},"required":["tag_id","name","weight"],"additionalProperties":false}},"seed_count":{"type":"integer","minimum":0}},"required":["status","pagination","data","dna","seed_count"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/mix":{"get":{"operationId":"get_series_mix_v2","tags":["Series","v2"],"summary":"🌐 (beta) Get mix recommendations from seed series and tag rules (auth: none, cache ttl: varies)","description":"Combines N seed series tag vectors into a single HNSW probe and returns ranked recommendations. Include-tags can be strict (hard SQL filter) or loose (vector boost). Exclude-tags always filter. At least one seed or one include-tag is required. Genre filtering is expressed through `tag`. Use the `schema` parameter to pick the response shape: omit for the lean default; `full` adds links/tags/relationships and the full per-language title list.\n\nCaching: 1 day by default; not cached when `exclude_user_library` or `blend_user_id` is used.\n\nAuthentication: not required.","x-cache-ttl":"VARIES","parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0},"maxItems":25,"default":[]},"required":false,"name":"series","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"strict","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 120-row result window, so the deepest page depends on `limit` (2 at limit 50, 5 at limit 24, 120 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 120-row result window, so the deepest page depends on `limit` (2 at limit 50, 5 at limit 24, 120 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 120-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 2."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 120-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 2.","name":"limit","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"number"},"default":[]},"required":false,"name":"blocked_tag","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i"},"required":false,"name":"blend_user_id","in":"query"},{"schema":{"type":"string","enum":["off","light","balanced","strong"],"default":"balanced","description":"How much being widely read shapes the ranking: both a popularity lift and, from 2 seeds, what readers of the seeds also read. `off` ignores popularity and co-reading, `strong` favours well-known series. Series without a popularity rank are placed by their rating; unrated ones count as the least popular."},"required":false,"description":"How much being widely read shapes the ranking: both a popularity lift and, from 2 seeds, what readers of the seeds also read. `off` ignores popularity and co-reading, `strong` favours well-known series. Series without a popularity rank are placed by their rating; unrated ones count as the least popular.","name":"popularity_influence","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","description":"Ranking score. Comparable within one response, not across responses."},"cosine":{"type":"number","description":"Tag-vector similarity to the combined seed probe."},"shared_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"}},"required":["id","name"]},"description":"Tags this result has in common with the seeds. Ids, so they feed straight back into search."},"shared_tags_total":{"type":"integer","minimum":0},"matched_author":{"type":"boolean","default":false,"description":"Shares an author or artist with a seed."},"matched_related":{"type":"boolean","default":false,"description":"Is a declared relation of a seed."},"matched_seed_ids":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"description":"Which of the seeds drove this recommendation."},"series":{"$ref":"#/components/schemas/SeriesV2Any"}},"required":["score","cosine","shared_tags","shared_tags_total","matched_seed_ids","series"],"additionalProperties":false}},"dna":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string"},"weight":{"type":"number"}},"required":["tag_id","name","weight"],"additionalProperties":false},"description":"The combined taste profile the seeds produced, as weighted tag ids."},"seed_count":{"type":"integer","minimum":0}},"required":["status","pagination","data","dna","seed_count"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/series/mix/seeds":{"get":{"operationId":"get_series_mix_seeds_v1","tags":["Series","v1"],"summary":"🌐 (beta) Get seed suggestions for a mix (auth: none, cache ttl: varies)","description":"Given 2+ seed series, returns up to 5 suggested series from collaborative_pairs that co-occur with multiple seeds.\n\nCaching: 1 day by default; not cached when `exclude_user_library` or `blend_user_id` is used.\n\nAuthentication: not required.","x-cache-ttl":"VARIES","parameters":[{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0},"maxItems":25,"default":[]},"required":false,"name":"series","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"overlap_count":{"type":"integer","minimum":0},"series":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["overlap_count","series"],"additionalProperties":false}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/stacks":{"get":{"operationId":"get_stacks_v2","tags":["Stacks","v2"],"summary":"🌐 (beta) List stacks, newest first (auth: none, cache ttl: 5 minutes)","description":"Lists public stacks; drafts, unlisted, hidden and delisted stacks never appear.\n\nAuthentication: not required.\n\nCaching: up to 5 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"5_MIN","x-cache-ttl-cdn-seconds":300,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating."},"required":false,"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Only stacks picked by MangaBaka staff."},"required":false,"description":"Only stacks picked by MangaBaka staff.","name":"featured","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/stacks/{id}":{"get":{"operationId":"get_stacks_id_v2","tags":["Stacks","v2"],"summary":"🌐 (beta) Get a stack with its entries (auth: none, cache ttl: 5 minutes)","description":"Public and unlisted stacks. A draft, hidden or deleted stack is a 404. Every entry comes back whatever its rating; compare the stack's and each series' `content_rating` with the reader's settings to hide or blur what they should not see.\n\nAuthentication: not required.\n\nCaching: up to 5 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"5_MIN","x-cache-ttl-cdn-seconds":300,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/series/{id}/stacks":{"get":{"operationId":"get_series_id_stacks_v2","tags":["Stacks","v2"],"summary":"🌐 (beta) List stacks that include a series (auth: none, cache ttl: 5 minutes)","description":"Lists public stacks; drafts, unlisted, hidden and delisted stacks never appear.\n\nAuthentication: not required.\n\nCaching: up to 5 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"5_MIN","x-cache-ttl-cdn-seconds":300,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926,"description":"MangaBaka series ID."},"required":true,"description":"MangaBaka series ID.","name":"id","in":"path"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating."},"required":false,"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["vote_count_desc","vote_count_asc","save_count_desc","save_count_asc","updated_at_desc","updated_at_asc","first_published_at_desc","first_published_at_asc"],"default":"vote_count_desc","description":"`vote_count` breaks ties on `save_count` and `save_count` on `vote_count`, both in the same direction, then on `updated_at`, newest first."},"required":false,"description":"`vote_count` breaks ties on `save_count` and `save_count` on `vote_count`, both in the same direction, then on `updated_at`, newest first.","name":"sort_by","in":"query"},{"schema":{"type":"string","enum":["exclude","include","only"],"default":"exclude","description":"Stacks marked `is_spoiler`: `exclude` leaves them out, `include` lists them with the rest, `only` lists nothing else."},"required":false,"description":"Stacks marked `is_spoiler`: `exclude` leaves them out, `include` lists them with the rest, `only` lists nothing else.","name":"spoilers","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/users/{username}/stacks":{"get":{"operationId":"get_users_username_stacks_v2","tags":["Stacks","v2"],"summary":"🌐 (beta) List a user's stacks (auth: none, cache ttl: 5 minutes)","description":"Public and unlisted stacks, last updated first. Drafts and hidden stacks never appear.\n\nAuthentication: not required.\n\nCaching: up to 5 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"5_MIN","x-cache-ttl-cdn-seconds":300,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","example":"jippi","description":"Username of the stack owner."},"required":true,"description":"Username of the stack owner.","name":"username","in":"path"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating."},"required":false,"description":"Only stacks rated within these ratings, and only covers within them. Omit for every rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks":{"get":{"operationId":"get_my_stacks_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) List your stacks (auth: pat or oauth, cache ttl: none)","description":"The stacks you own, drafts and hidden ones included, last updated first.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only covers within these ratings. Stacks are listed whatever their own rating."},"required":false,"description":"Only covers within these ratings. Stacks are listed whatever their own rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MyStackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"post":{"operationId":"post_my_stacks_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Create a stack (auth: pat or oauth, cache ttl: none)","description":"Creates a draft. Publish it with `PUT /v2/my/stacks/{id}/visibility` once it has 5 series.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200,"description":"The stack title.","example":"Isekai where dying is the plot"},"description":{"type":["string","null"],"maxLength":10000,"description":"Markdown, without images.","example":"Leads who keep losing, and have to **live with it**."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"default":"safe","description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","default":false,"description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_comments_enabled":{"type":"boolean","default":true,"description":"Whether readers can comment on the stack."},"entries":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"note":{"type":["string","null"],"maxLength":5000,"description":"Why this series is in the stack. Markdown, without images.","example":"Return by Death makes every loss count."}},"required":["series_id"]},"maxItems":100,"default":[],"description":"Every series in order, first is #1."}},"required":["title"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/MyStackV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[400]},"message":{"type":"string","default":"Bad Request"},"code":{"type":["string","null"],"enum":["series_unavailable","rating_below_floor",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`series_unavailable`: A series you added was merged or deleted.\n\n`rating_below_floor`: Too many series are rated above the stack. Raise its `content_rating`."},"reason":{},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"keys":{"type":"array","items":{"type":"string"}},"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["code","keys","message"]}}},"required":["status","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/{id}":{"get":{"operationId":"get_my_stacks_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Get your stack for editing (auth: pat or oauth, cache ttl: none)","description":"Every entry with its series, and the `token` your next update needs.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/MyStackV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stack_locked",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_locked`: A moderator locked the stack."}},"required":["status","code"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"put":{"operationId":"put_my_stacks_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Update your stack (auth: pat or oauth, cache ttl: none)","description":"Replaces the details and the whole entry list in one go, in the order given. Send the `token` from your last read or update; a stale one is a 409.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200,"description":"The stack title.","example":"Isekai where dying is the plot"},"description":{"type":["string","null"],"maxLength":10000,"description":"Markdown, without images.","example":"Leads who keep losing, and have to **live with it**."},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"description":"Rating of the whole stack. At most 10% of its series may be rated higher."},"is_spoiler":{"type":"boolean","description":"Whether the stack gives away plot twists or endings, in its notes, description or the list itself (\"Series where the lead dies in the end\"). Readers see a warning before the entries."},"is_comments_enabled":{"type":"boolean","description":"Whether readers can comment on the stack."},"token":{"type":"string","minLength":1,"description":"The `token` from your last read or update. A stale one is a 409."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."},"entries":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"note":{"type":["string","null"],"maxLength":5000,"description":"Why this series is in the stack. Markdown, without images.","example":"Return by Death makes every loss count."}},"required":["series_id"]},"maxItems":100,"description":"Every series in order, first is #1. Replaces the whole list."}},"required":["title","content_rating","is_spoiler","is_comments_enabled","token","visibility","entries"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/MyStackV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[400]},"message":{"type":"string","default":"Bad Request"},"code":{"type":["string","null"],"enum":["too_few_entries","series_unavailable","rating_below_floor","rating_below_minimum",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`too_few_entries`: Publishing, or staying published, needs more series that are still on MangaBaka.\n\n`series_unavailable`: A series you added was merged or deleted.\n\n`rating_below_floor`: Too many series are rated above the stack. Raise its `content_rating`.\n\n`rating_below_minimum`: A moderator set a minimum `content_rating` for the stack."},"reason":{},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"keys":{"type":"array","items":{"type":"string"}},"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["code","keys","message"]}}},"required":["status","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stack_locked","spoiler_locked","username_required",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_locked`: A moderator locked the stack.\n\n`spoiler_locked`: A moderator locked `is_spoiler` on.\n\n`username_required`: The owner has to pick a username before the stack is published."}},"required":["status","code"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[409]},"message":{"type":"string","default":"Conflict"},"code":{"type":["string","null"],"enum":["stale_token",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stale_token`: The stack changed since you read it. Read it again and retry with the new `token`."}},"required":["status","code"]}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"delete":{"operationId":"delete_my_stacks_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Delete your stack (auth: pat or oauth, cache ttl: none)","description":"Deletes the stack. It returns 404 for everyone, you included, and leaves every list, readers' saved lists too. You can't undo it; MangaBaka staff can restore it with its votes and saves. Works on a locked stack and doesn't count toward the hourly limit.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]}},"required":["status"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/{id}/visibility":{"put":{"operationId":"put_my_stacks_id_visibility_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Publish or unpublish your stack (auth: pat or oauth, cache ttl: none)","description":"Changes only the visibility, with no `token` or entry list. `public` and `unlisted` need 5 series that are still on MangaBaka.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."}},"required":["visibility"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka stack ID."},"visibility":{"type":"string","enum":["draft","unlisted","public"],"description":"`draft`: only the owner. `unlisted`: anyone with the link, and listed on the owner's profile, but never in browse or on series pages. `public`: listed everywhere on MangaBaka."}},"required":["id","visibility"],"additionalProperties":false}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[400]},"message":{"type":"string","default":"Bad Request"},"code":{"type":["string","null"],"enum":["too_few_entries","rating_below_floor","rating_below_minimum",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`too_few_entries`: Publishing, or staying published, needs more series that are still on MangaBaka.\n\n`rating_below_floor`: Too many series are rated above the stack. Raise its `content_rating`.\n\n`rating_below_minimum`: A moderator set a minimum `content_rating` for the stack."},"reason":{},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"keys":{"type":"array","items":{"type":"string"}},"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["code","keys","message"]}}},"required":["status","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stack_locked","username_required",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_locked`: A moderator locked the stack.\n\n`username_required`: The owner has to pick a username before the stack is published."}},"required":["status","code"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/{id}/entries":{"post":{"operationId":"post_my_stacks_id_entries_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Add a series to your stack (auth: pat or oauth, cache ttl: none)","description":"Adds one series at `rank` (omit for the end), with an optional note. Send `content_rating` to raise the stack rating when the series is rated higher than the stack allows.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"note":{"type":["string","null"],"maxLength":5000,"description":"Why this series is in the stack. Markdown, without images.","example":"Return by Death makes every loss count."},"rank":{"type":["integer","null"],"exclusiveMinimum":0,"description":"Where to put it, 1 is first. Omit to add at the end."},"content_rating":{"type":["string","null"],"enum":["safe","suggestive","erotica","pornographic",null],"description":"A higher rating for the stack, when this series is rated above what it allows. Omit to keep it."}},"required":["series_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"rank":{"type":"number","description":"Rank of the added series, 1 is first."},"token":{"type":"string","description":"The new `token`, for your next update."}},"required":["rank","token"],"additionalProperties":false}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[400]},"message":{"type":"string","default":"Bad Request"},"code":{"type":["string","null"],"enum":["stack_full","series_unavailable","rating_below_floor","rating_below_minimum",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_full`: The stack already holds the most series it can.\n\n`series_unavailable`: A series you added was merged or deleted.\n\n`rating_below_floor`: Too many series are rated above the stack. Raise its `content_rating`.\n\n`rating_below_minimum`: A moderator set a minimum `content_rating` for the stack."},"reason":{},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"keys":{"type":"array","items":{"type":"string"}},"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["code","keys","message"]}}},"required":["status","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stack_locked",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_locked`: A moderator locked the stack."}},"required":["status","code"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[409]},"message":{"type":"string","default":"Conflict"},"code":{"type":["string","null"],"enum":["duplicate_entry",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`duplicate_entry`: The series is already in the stack."}},"required":["status","code"]}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/series/{id}/stacks":{"get":{"operationId":"get_my_series_id_stacks_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Your stacks, for one series (auth: pat or oauth, cache ttl: none)","description":"Every stack you own, and where the series sits in each.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":84926,"description":"MangaBaka series ID."},"required":true,"description":"MangaBaka series ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/MySeriesStackV2"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/saved":{"get":{"operationId":"get_my_stacks_saved_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) List the stacks you saved (auth: pat or oauth, cache ttl: none)","description":"Saved stacks you can still open, last updated first.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only covers within these ratings. Stacks are listed whatever their own rating."},"required":false,"description":"Only covers within these ratings. Stacks are listed whatever their own rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/followed":{"get":{"operationId":"get_my_stacks_followed_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) List the stacks you follow (auth: pat or oauth, cache ttl: none)","description":"Followed stacks you can still open, last updated first.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Only covers within these ratings. Stacks are listed whatever their own rating."},"required":false,"description":"Only covers within these ratings. Stacks are listed whatever their own rating.","name":"content_rating","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (240 at limit 50, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":24,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackV2ListItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/status":{"get":{"operationId":"get_my_stacks_status_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Your votes, saves and library matches for up to 50 stacks (auth: pat or oauth, cache ttl: none)","description":"Stacks you cannot open come back with `has_voted`, `has_saved` and `has_followed` false.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.read"]}],"parameters":[{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"minItems":1,"maxItems":50,"description":"Up to 50 stack ids; repeat the parameter."},"required":true,"description":"Up to 50 stack ids; repeat the parameter.","name":"id","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/StackStatusV2"}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/votes/{id}":{"put":{"operationId":"put_my_stacks_votes_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Vote for a stack (auth: pat or oauth, cache ttl: none)","description":"Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[403]},"message":{"type":"string","default":"Forbidden"},"code":{"type":["string","null"],"enum":["stack_locked",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`stack_locked`: A moderator locked the stack."}},"required":["status","code"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"delete":{"operationId":"delete_my_stacks_votes_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Remove your vote (auth: pat or oauth, cache ttl: none)","description":"Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/saved/{id}":{"put":{"operationId":"put_my_stacks_saved_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Save a stack (auth: pat or oauth, cache ttl: none)","description":"Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"delete":{"operationId":"delete_my_stacks_saved_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Remove a stack from your saved (auth: pat or oauth, cache ttl: none)","description":"Also unfollows it. Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/stacks/followed/{id}":{"put":{"operationId":"put_my_stacks_followed_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Follow a stack (auth: pat or oauth, cache ttl: none)","description":"Also saves it. Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[429]},"message":{"type":"string","default":"Too Many Requests"},"code":{"type":["string","null"],"enum":["rate_limited",null],"description":"Which rule refused the request, for clients to act on. Null when no rule applies.\n\n`rate_limited`: You reached the hourly limit for this kind of change. Try again later."}},"required":["status","code"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"delete":{"operationId":"delete_my_stacks_followed_id_v2","tags":["Stacks","v2"],"summary":"🔒 (beta) Unfollow a stack (auth: pat or oauth, cache ttl: none)","description":"Keeps it saved. Repeating it changes nothing. Returns your status on the stack.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `stack.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["stack.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1,"description":"MangaBaka stack ID."},"required":true,"description":"MangaBaka stack ID.","name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/StackStatusV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/works/{id}":{"get":{"operationId":"get_works_id_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Get a work by ID (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Work_Default"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/works/{id}/full":{"get":{"operationId":"get_works_id_full_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Get a work by ID with full details (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Work_Full"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/works/identifiers":{"get":{"operationId":"get_works_identifiers_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Look up works by identifier (auth: none, cache ttl: 1 hour)","description":"Look up works by identifier value (ISBN, ISSN, etc.)\n\nAuthentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":50,"example":"9781975312345","description":"Search works by identifier value (ISBN, ISSN, etc.). Hyphens are stripped before matching."},"required":true,"description":"Search works by identifier value (ISBN, ISSN, etc.). Hyphens are stripped before matching.","name":"identifier","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Work_Default"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/works/upcoming":{"get":{"operationId":"get_works_upcoming_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Get upcoming works (future releases) (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":9999,"default":30},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Work_Default"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/collections/{id}":{"get":{"operationId":"get_collections_id_v1","tags":["Collections","v1"],"summary":"🌐 (internal) Get a collection by ID (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/collections/{id}/full":{"get":{"operationId":"get_collections_id_full_v1","tags":["Collections","v1"],"summary":"🌐 (internal) Get a collection by ID with full details (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Collection_Full"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/collections/{id}/works":{"get":{"operationId":"get_collections_id_works_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Get works in a collection (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Work_Default"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/publishers/{id}":{"get":{"operationId":"get_publishers_id_v1","tags":["Publishers","v1"],"summary":"🌐 (beta) Get a publisher by ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/publishers/{id}/full":{"get":{"operationId":"get_publishers_id_full_v1","tags":["Publishers","v1"],"summary":"🌐 (beta) Get a publisher by ID with full details (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"parent":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"imprints":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]}},"description":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["type","aliases","name","languages","country_of_origin","founded","closed","links","parent","description","note"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/publishers/{id}/collections":{"get":{"operationId":"get_publishers_id_collections_v1","tags":["Publishers","v1"],"summary":"🌐 (beta) Get collections for a publisher (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"id","in":"path"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"MangaBaka collection ID.","example":"019a5f27-bbf6-7000-8000-000000000001"},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka series ID.","example":84926},"title":{"type":["string","null"],"example":"Re:Zero -Starting Life in Another World-","description":"The title of the work in the collection's language"},"language":{"type":"object","properties":{"iso":{"$ref":"#/components/schemas/V2_TitleLanguage"},"language":{"type":"string"}},"required":["iso","language"]},"publisher":{"type":["object","null"],"properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]},"edition":{"$ref":"#/components/schemas/V1_Edition_Default"},"type":{"type":"string","enum":["volume","chapter","one-shot","other"]},"format":{"type":["string","null"],"enum":["paged","longstrip",null],"example":"paged"},"medium":{"type":"string","enum":["digital","paperback","hardcover"],"example":"digital"},"status":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."},"reading":{"type":"string","enum":["ltr","rtl"],"example":"ltr"},"licensed":{"type":"boolean"},"description":{"type":["object","null"],"properties":{"desc":{"type":["string","null"]},"source":{"type":["string","null"]},"license":{"type":["string","null"]}},"default":{"desc":null,"source":null,"license":null}},"note":{"type":["string","null"],"example":"Multiple covers"},"start_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"end_date":{"type":["string","null"],"format":"date","example":"2014-12-04","description":"The date of publication"},"links":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_WebLink"}},"related_collection_id":{"type":["string","null"],"format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000003","description":"The collection ID of a related collection. Publisher change etc."},"count_main":{"type":"number"},"count_extra":{"type":"number"},"count_other":{"type":"number"},"updated_at":{"type":"string","format":"date-time","example":"2025-06-01T15:07:57.706Z","description":"Most recent timestamp for when the collection was updated."}},"required":["id","series_id","title","language","publisher","edition","type","format","medium","status","reading","licensed","note","start_date","end_date","links","related_collection_id","count_main","count_extra","count_other","updated_at"],"additionalProperties":false}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/publishers/all":{"get":{"operationId":"get_publishers_all_v1","tags":["Publishers","v1"],"summary":"🌐 (beta) List all publishers (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["name:asc","name:desc","year:asc","year:desc","type:asc","type:desc","founded:asc","founded:desc","closed:asc","closed:desc","languages:asc","languages:desc","country_of_origin:asc","country_of_origin:desc",null]},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"required":false,"name":"languages","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/publishers/search":{"get":{"operationId":"get_publishers_search_v1","tags":["Publishers","v1"],"summary":"🌐 (beta) Search publishers (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","example":"viz","description":"Search for publisher name"},"required":false,"description":"Search for publisher name","name":"q","in":"query"},{"schema":{"type":"string","enum":["publisher","imprint","child",null],"description":"Limit the type of publisher (publisher, imprint)"},"required":false,"description":"Limit the type of publisher (publisher, imprint)","name":"type","in":"query"},{"schema":{"type":"boolean","example":"true","description":"Search for publishers with a closed date"},"required":false,"description":"Search for publishers with a closed date","name":"closed","in":"query"},{"schema":{"type":"integer","description":"Search for publishers founded in this year or after"},"required":false,"description":"Search for publishers founded in this year or after","name":"year_lower","in":"query"},{"schema":{"type":"integer","description":"Search for publishers founded in this year or before"},"required":false,"description":"Search for publishers founded in this year or before","name":"year_upper","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":10,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","enum":["name_asc","name_desc","year_asc","year_desc","type_asc","type_desc","founded_asc","founded_desc","closed_asc","closed_desc","languages_asc","languages_desc","country_of_origin_asc","country_of_origin_desc"],"default":"name_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"$ref":"#/components/schemas/V2_TitleLanguage"},"required":false,"name":"language","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"type":{"type":"string","enum":["publisher","imprint","child"]},"sub_type":{"type":"string","enum":["physical","digital","both"],"default":"physical"},"aliases":{"type":["array","null"],"items":{"$ref":"#/components/schemas/API_V1_Series_Title"}},"parent_id":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1},"canonical_url":{"type":["string","null"],"format":"uri","example":"https://mangabaka.org/publisher/4211/Yen-On","description":"Canonical URL of the publisher page. Earlier URLs for the same publisher redirect here."},"languages":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V2_TitleLanguage"}},"country_of_origin":{"$ref":"#/components/schemas/CountryCode"},"founded":{"type":["string","null"],"format":"date"},"closed":{"type":["string","null"],"format":"date"},"merged_with":{"type":["number","null"],"default":null,"description":"The publisher this one was merged into. Lists and search never return a merged publisher."}},"required":["type","aliases","name","languages","country_of_origin","founded","closed"]}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/publishers/{id}":{"get":{"operationId":"get_publishers_id_v2","tags":["Publishers","v2"],"summary":"🌐 (beta) Get a publisher by its ID (auth: none, cache ttl: 1 day)","description":"Profile, links, parent, imprints and active series count. Replaces v1 `GET /v1/publishers/{id}` and `/full`. A merged publisher is returned with `merged_with` set so the merge can be followed.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":32},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/PublisherV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/publishers":{"get":{"operationId":"get_publishers_v2","tags":["Publishers","v2"],"summary":"🌐 (beta) List or search publishers (auth: none, cache ttl: 1 day)","description":"Publishers with their logo, active series count and top media type, optionally matched by name or alias with `q`. Merged publishers are left out. Replaces v1 `GET /v1/publishers/all` and `GET /v1/publishers/search`.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200,"example":"viz","description":"Name or alias to look up; every word must match."},"required":false,"description":"Name or alias to look up; every word must match.","name":"q","in":"query"},{"schema":{"type":"string","enum":["relevance_desc","series_count_desc","series_count_asc","name_asc","name_desc","created_at_desc","created_at_asc"],"description":"Defaults to `relevance_desc` with `q`, else `series_count_desc`. `relevance_desc` needs `q`. `created_at` is when the publisher was added to MangaBaka."},"required":false,"description":"Defaults to `relevance_desc` with `q`, else `series_count_desc`. `relevance_desc` needs `q`. `created_at` is when the publisher was added to MangaBaka.","name":"sort_by","in":"query"},{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2_TitleLanguage"},"description":"Only publishers with at least one of these languages."},"required":false,"description":"Only publishers with at least one of these languages.","name":"languages","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublisherV2Card"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/publishers/{id}/stats":{"get":{"operationId":"get_publishers_id_stats_v2","tags":["Publishers","v2"],"summary":"🌐 (beta) Get statistics about a publisher's catalog (auth: none, cache ttl: 1 day)","description":"Counts by media type, status and content rating, start decades, the tags it is known for, genre and audience shares against the catalog, and the publishers it shares series with. Not filtered by content rating. A merged id returns 404 naming the publisher it was merged into.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":32},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/PublisherStatsV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/publishers/{id}/similar":{"get":{"operationId":"get_publishers_id_similar_v2","tags":["Publishers","v2"],"summary":"🌐 (beta) Get publishers with a similar catalog (auth: none, cache ttl: 1 day)","description":"Publishers sharing a language with this one whose series sit closest, by tags, to this publisher's most popular series. Empty when the publisher has no languages set. A merged id returns 404 naming the publisher it was merged into.\n\nAuthentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":32},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/PublisherSimilarV2"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/editions/{id}":{"get":{"operationId":"get_editions_id_v1","tags":["Collections","v1"],"summary":"🌐 (beta) Get an edition by ID (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"uuid","example":"019a5f27-bbf6-7000-8000-000000000001"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Edition_Default"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/editions/all":{"get":{"operationId":"get_editions_all_v1","tags":["Collections","v1"],"summary":"🌐 (beta) List all editions (auth: none, cache ttl: 1 day)","description":"Authentication: not required.\n\nCaching: up to 1 day at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_DAY","x-cache-ttl-cdn-seconds":86400,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"$ref":"#/components/schemas/V1_Edition_Default"}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"}},"required":["status","data","pagination"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/genres":{"get":{"operationId":"get_genres_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get supported series genres (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":["label","value"]}}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/news":{"get":{"operationId":"get_news_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get latest news (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"boolean","default":true},"required":false,"name":"only_primary","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["default","releases","review"]},"default":[]},"required":false,"name":"type","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":10,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka unique ID"},"source_id":{"type":["string","null"],"description":"The source unique identifier for the news item"},"source_name":{"type":"string","enum":["ann"],"description":"The source providing the news"},"title":{"type":"string","description":"Title for the news item"},"url":{"type":"string","format":"uri","description":"URL to the article"},"primary":{"type":"boolean","description":"Wether its a primary or secondary news. If `false` it means the article does not have the series as its primary focus."},"type":{"type":"string","enum":["default","review","releases"],"description":"The kind of news item"},"author":{"type":["string","null"],"description":"The author of the article"},"mentioned_series":{"type":"array","items":{"type":"number"},"description":"List of MangaBaka Series IDs that was mentioned in the article"},"series":{"type":["array","null"],"items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"List of MangaBaka Series (expanded) that was mentioned in the article"},"published_at":{"type":["string","null"],"format":"date-time","description":"The date the article was published"},"created_at":{"type":["string","null"],"format":"date-time","description":"The timestamp when MangaBaka created the article"},"updated_at":{"type":["string","null"],"format":"date-time","description":"The last time the article was updated"}},"required":["id","source_name","title","url","primary","type","author","mentioned_series","series","published_at","created_at","updated_at"],"additionalProperties":false}}},"required":["status","pagination","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/news":{"get":{"operationId":"get_news_v2","tags":["Series","v2"],"summary":"🌐 (beta) Get latest news with v2 series entities (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"boolean","default":true},"required":false,"name":"only_primary","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["default","releases","review"]},"default":[]},"required":false,"name":"type","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":10,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"description":"MangaBaka unique ID"},"source_id":{"type":["string","null"],"description":"The source unique identifier for the news item"},"source_name":{"type":"string","enum":["ann"],"description":"The source providing the news"},"title":{"type":"string","description":"Title for the news item"},"url":{"type":"string","format":"uri","description":"URL to the article"},"primary":{"type":"boolean","description":"Wether its a primary or secondary news. If `false` it means the article does not have the series as its primary focus."},"type":{"type":"string","enum":["default","review","releases"],"description":"The kind of news item"},"author":{"type":["string","null"],"description":"The author of the article"},"mentioned_series":{"type":"array","items":{"type":"number"},"description":"List of MangaBaka Series IDs that was mentioned in the article"},"published_at":{"type":["string","null"],"format":"date-time","description":"The date the article was published"},"created_at":{"type":["string","null"],"format":"date-time","description":"The timestamp when MangaBaka created the article"},"updated_at":{"type":["string","null"],"format":"date-time","description":"The last time the article was updated"},"series":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SeriesV2"}}},"required":["id","source_name","title","url","primary","type","author","mentioned_series","published_at","created_at","updated_at","series"],"additionalProperties":false}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/tags":{"get":{"operationId":"get_tags_v1","tags":["Series","v1"],"summary":"🌐 (stable) Get all tags (auth: none, cache ttl: 1 hour)","description":"Every filter is optional. With no parameters this returns the whole tag tree, ordered by\n`name_path`, which is depth-first tree order.\n\n`q` ranks by relevance over the tag name and its ancestor path; the other parameters browse\nthe tree instead. Tags are hierarchical and a tag id in `GET /v2/series/search` matches the\ntag's entire subtree, so `level` is how broad a filter a tag is.\n\nAuthentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":100,"description":"Rank tags by name and path. Handles stems, prefixes, substrings and typos."},"required":false,"description":"Rank tags by name and path. Handles stems, prefixes, substrings and typos.","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0},"maxItems":100,"default":[],"description":"Resolve these exact tag ids. Unlike `parent` this does NOT include descendants."},"required":false,"description":"Resolve these exact tag ids. Unlike `parent` this does NOT include descendants.","name":"id","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"description":"Restrict to this tag and its descendants."},"required":false,"description":"Restrict to this tag and its descendants.","name":"parent","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":6,"description":"How many levels to include. Counted from `parent` when given, otherwise from the roots, so `1` alone is the top-level tags."},"required":false,"description":"How many levels to include. Counted from `parent` when given, otherwise from the roots, so `1` alone is the top-level tags.","name":"depth","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[],"description":"Limit to tags with these ratings. Empty means no filtering. This is the TAG's own rating."},"required":false,"description":"Limit to tags with these ratings. Empty means no filtering. This is the TAG's own rating.","name":"content_rating","in":"query"},{"schema":{"type":"boolean","description":"Limit to genres (`true`) or to everything but genres (`false`). Omit for both."},"required":false,"description":"Limit to genres (`true`) or to everything but genres (`false`). Omit for both.","name":"is_genre","in":"query"},{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served."},"required":false,"description":"Page number, starting at 1. It carries no maximum of its own; `page * limit` must not exceed the 12,000-row result window, so the deepest page depends on `limit` (120 at limit 100, 500 at limit 24, 12,000 at limit 1). Past it the request is refused with 400 rather than served.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":10000,"default":10000,"description":"Rows per page (max 10000). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 10000 the deepest page is 1."},"required":false,"description":"Rows per page (max 10000). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 10000 the deepest page is 1.","name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0},"parent_id":{"type":["number","null"]},"merged_with":{"type":["number","null"],"default":null},"name":{"type":"string","minLength":1},"name_path":{"type":"string","minLength":1},"description":{"type":["string","null"],"default":""},"is_spoiler":{"type":"boolean","default":false},"is_genre":{"type":"boolean","default":false},"content_rating":{"type":"string","enum":["safe","suggestive","erotica","pornographic"],"default":"safe"},"series_count":{"type":"number","default":0},"level":{"type":"number","default":1}},"required":["id","parent_id","name","name_path"]}}},"required":["status","pagination","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/badges":{"get":{"operationId":"get_badges_v2","tags":["Users","v2"],"summary":"🌐 (beta) List badges, their tiers, labels and images (auth: none, cache ttl: 1 hour)","description":"Authentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"badge":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"tiers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"threshold":{"type":"integer","minimum":0},"label":{"type":"string"},"description":{"type":"string"},"image":{"type":"object","properties":{"light":{"type":"string"},"dark":{"type":"string"}},"required":["light","dark"]},"lapsed_image":{"type":"object","properties":{"light":{"type":"string"},"dark":{"type":"string"}},"required":["light","dark"]}},"required":["id","threshold","label","description","image","lapsed_image"]}}},"required":["badge","label","description","tiers"]}}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/source/anilist/{id}":{"get":{"operationId":"get_source_anilist_id_v1","tags":["Source","v1"],"summary":"🌐 (stable) Get MangaBaka series and/or Anilist raw API response via Anilist ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"number","example":85736},"required":true,"name":"id","in":"path"},{"schema":{"type":"boolean","default":false,"description":"Include MangaBaka internally processed data"},"required":false,"description":"Include MangaBaka internally processed data","name":"with_internal","in":"query"},{"schema":{"type":"boolean","default":true,"description":"Include MangaBaka Series matching the source ID"},"required":false,"description":"Include MangaBaka Series matching the source ID","name":"with_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include merged MangaBaka Series instead of only active ones"},"required":false,"description":"Include merged MangaBaka Series instead of only active ones","name":"with_merged_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include the raw API response from the source"},"required":false,"description":"Include the raw API response from the source","name":"with_source_response","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"internal":{"description":"Included in response when `?with_internal=1` is provided and hidden when `?with_internal=0` is set.\n\n**THE INTERNAL SCHEMA IS NOT STABLE AND MAY CHANGE AT ANY TIME**"},"series":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"Included in response when `?with_series=1` is provided. Hidden when `?with_series=0` is set"},"source_response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["source_response"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/source/kitsu/{id}":{"get":{"operationId":"get_source_kitsu_id_v1","tags":["Source","v1"],"summary":"🌐 (stable) Get MangaBaka series and/or Kitsu raw API response via Kitsu ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"number","example":26985},"required":true,"name":"id","in":"path"},{"schema":{"type":"boolean","default":false,"description":"Include MangaBaka internally processed data"},"required":false,"description":"Include MangaBaka internally processed data","name":"with_internal","in":"query"},{"schema":{"type":"boolean","default":true,"description":"Include MangaBaka Series matching the source ID"},"required":false,"description":"Include MangaBaka Series matching the source ID","name":"with_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include merged MangaBaka Series instead of only active ones"},"required":false,"description":"Include merged MangaBaka Series instead of only active ones","name":"with_merged_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include the raw API response from the source"},"required":false,"description":"Include the raw API response from the source","name":"with_source_response","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"internal":{"description":"Included in response when `?with_internal=1` is provided and hidden when `?with_internal=0` is set.\n\n**THE INTERNAL SCHEMA IS NOT STABLE AND MAY CHANGE AT ANY TIME**"},"series":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"Included in response when `?with_series=1` is provided. Hidden when `?with_series=0` is set"},"source_response":{"type":["object","null"],"properties":{"ageRating":{"type":["string","null"],"enum":["G","PG","R","R18",null]},"ageRatingGuide":{"type":["string","null"]},"averageRating":{"type":["number","null"]},"averageRatingRank":{"type":["number","null"]},"bannerImage":{"type":["object","null"],"properties":{"blurhash":{"type":["string","null"]},"original":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]},"views":{"type":"array","items":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]}}},"required":["original","views"]},"categories":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"isNsfw":{"type":"boolean"},"slug":{"type":"string"},"title":{"type":"object","additionalProperties":{"type":"string"}}},"required":["id","isNsfw","slug","title"]}}}},"chapterCount":{"type":["number","null"]},"chapterCountGuess":{"type":["number","null"]},"createdAt":{"type":"string"},"description":{"type":"object","properties":{"en":{"type":["string","null"]}},"additionalProperties":false},"endDate":{"type":["string","null"]},"favoritesCount":{"type":["number","null"]},"id":{"type":["number","null"]},"mappings":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"externalId":{"type":"string"},"externalSite":{"type":"string","enum":["ANIDB","ANILIST_ANIME","ANILIST_MANGA","ANIMENEWSNETWORK","AOZORA","HULU","IMDB_EPISODES","MANGAUPDATES","MYANIMELIST_ANIME","MYANIMELIST_CHARACTERS","MYANIMELIST_MANGA","MYANIMELIST_PEOPLE","MYANIMELIST_PRODUCERS","MYDRAMALIST","THETVDB","THETVDB_SEASON","THETVDB_SERIES","TRAKT"]},"id":{"type":["number","null"]}},"required":["externalId","externalSite","id"]}}}},"originCountries":{"type":"array","items":{"type":"string"}},"originLanguages":{"type":"array","items":{"type":"string"}},"posterImage":{"type":["object","null"],"properties":{"blurhash":{"type":["string","null"]},"original":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]},"views":{"type":"array","items":{"type":"object","properties":{"height":{"type":["number","null"]},"name":{"type":"string"},"url":{"type":"string"},"width":{"type":["number","null"]}},"required":["name","url"]}}},"required":["original","views"]},"relationships":{"type":"object","properties":{"nodes":{"type":"array","items":{"type":["object","null"],"properties":{"destination":{"type":"object","properties":{"id":{"type":["number","null"]},"slug":{"type":"string"},"type":{"type":"string"}},"required":["id","slug","type"]},"kind":{"type":"string","enum":["ADAPTATION","ALTERNATIVE_SETTING","ALTERNATIVE_VERSION","CHARACTER","FULL_STORY","OTHER","PARENT_STORY","PREQUEL","SEQUEL","SIDE_STORY","SPINOFF","SUMMARY"]}},"required":["destination","kind"]}}},"required":["nodes"]},"sfw":{"type":"boolean"},"slug":{"type":"string"},"staff":{"type":"object","properties":{"nodes":{"type":["array","null"],"items":{"type":["object","null"],"properties":{"id":{"type":["number","null"]},"person":{"type":"object","properties":{"id":{"type":["number","null"]},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"role":{"type":"string"}},"required":["id","person","role"]}}}},"startDate":{"type":["string","null"]},"status":{"type":"string","enum":["CURRENT","FINISHED","TBA","UNRELEASED","UPCOMING"]},"subtype":{"type":"string","enum":["DOUJIN","MANGA","MANHUA","MANHWA","NOVEL","OEL","ONESHOT"]},"tba":{"type":["string","null"]},"titles":{"type":"object","properties":{"alternatives":{"type":["array","null"],"items":{"type":"string"}},"canonical":{"type":"string"},"canonicalLocale":{"type":["string","null"]},"original":{"type":["string","null"]},"originalLocale":{"type":["string","null"]},"preferred":{"type":"string"},"romanized":{"type":["string","null"]},"romanizedLocale":{"type":["string","null"]},"translated":{"type":["string","null"]},"translatedLocale":{"type":["string","null"]}},"required":["canonical","preferred"]},"type":{"type":"string"},"updatedAt":{"type":"string"},"userCount":{"type":["number","null"]},"userCountRank":{"type":["number","null"]},"volumeCount":{"type":["number","null"]}},"required":["categories","createdAt","description","id","mappings","originCountries","originLanguages","relationships","sfw","slug","staff","status","subtype","titles","type","updatedAt"],"additionalProperties":false,"description":"Included in the response when `?with_source_response=1` is provided and hidden when `?with_source_response=0` is set.\n\nThis is the RAW response from MangaUpdates and may change at any time.\n\n**There are NO API stability guarantees**."}},"required":["source_response"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/source/manga-updates/{id}":{"get":{"operationId":"get_source_manga_updates_id_v1","tags":["Source","v1"],"summary":"🌐 (stable) Get MangaBaka series and/or MangaUpdates raw API response via MangaUpdates ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"string","example":"53olqck"},"required":true,"name":"id","in":"path"},{"schema":{"type":"boolean","default":false,"description":"Include MangaBaka internally processed data"},"required":false,"description":"Include MangaBaka internally processed data","name":"with_internal","in":"query"},{"schema":{"type":"boolean","default":true,"description":"Include MangaBaka Series matching the source ID"},"required":false,"description":"Include MangaBaka Series matching the source ID","name":"with_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include merged MangaBaka Series instead of only active ones"},"required":false,"description":"Include merged MangaBaka Series instead of only active ones","name":"with_merged_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include the raw API response from the source"},"required":false,"description":"Include the raw API response from the source","name":"with_source_response","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"internal":{"description":"Included in response when `?with_internal=1` is provided and hidden when `?with_internal=0` is set.\n\n**THE INTERNAL SCHEMA IS NOT STABLE AND MAY CHANGE AT ANY TIME**"},"series":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"Included in response when `?with_series=1` is provided. Hidden when `?with_series=0` is set"},"source_response":{"type":["object","null"],"properties":{"series_id":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string"},"associated":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"}},"required":["title"],"additionalProperties":false}},"description":{"type":["string","null"]},"image":{"type":"object","properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"type":{"type":"string","enum":["Artbook","Doujinshi","Drama CD","Filipino","Indonesian","Manga","Manhwa","Manhua","Novel","OEL","Thai","Vietnamese","Malaysian","Nordic","French","Spanish","German"]},"year":{"type":["string","null"]},"bayesian_rating":{"type":["number","null"]},"rating_votes":{"type":"integer"},"genres":{"type":"array","items":{"type":"object","properties":{"genre":{"type":"string"}},"required":["genre"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer"},"category":{"type":"string"},"votes":{"type":"integer"},"votes_plus":{"type":"integer"},"votes_minus":{"type":"integer"},"added_by":{"type":"integer"}},"required":["category","votes"]}},"latest_chapter":{"type":"integer"},"forum_id":{"type":"integer"},"status":{"type":["string","null"]},"licensed":{"type":"boolean"},"completed":{"type":"boolean"},"anime":{"type":"object","properties":{"start":{"type":["string","null"]},"end":{"type":["string","null"]}},"additionalProperties":false},"related_series":{"type":"array","items":{"type":"object","properties":{"relation_id":{"type":"integer"},"relation_type":{"type":"string","enum":["Prequel","Sequel","Spin-Off","Adapted From","Alternate Version","Part of Anthology","Main Story","Side Story","Full Anthology","Other"]},"related_series_id":{"type":"integer"},"related_series_name":{"type":["string","null"]},"related_series_url":{"type":["string","null"]},"triggered_by_relation_id":{"type":["integer","null"]}},"required":["relation_type","related_series_id","triggered_by_relation_id"],"additionalProperties":false}},"authors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"author_id":{"type":["integer","null"]},"url":{"type":["string","null"]},"type":{"type":"string","enum":["Author","Artist"]}},"required":["name","author_id","type"],"additionalProperties":false}},"publishers":{"type":"array","items":{"type":"object","properties":{"publisher_name":{"type":"string"},"publisher_id":{"type":["integer","null"]},"url":{"type":["string","null"]},"type":{"type":"string","enum":["Original","English"]},"notes":{"type":["string","null"]}},"required":["publisher_name","publisher_id","type"],"additionalProperties":false}},"publications":{"type":"array","items":{"type":"object","properties":{"publication_name":{"type":"string"},"publisher_name":{"type":["string","null"]},"publisher_id":{"type":["number","null"]}},"required":["publication_name","publisher_id"],"additionalProperties":false}},"recommendations":{"type":"array","items":{"type":"object","properties":{"series_name":{"type":["string","null"]},"series_url":{"type":["string","null"]},"series_id":{"type":["integer","null"]},"series_image":{"type":["object","null"],"properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"weight":{"type":["integer","null"]}},"required":["series_id","series_image","weight"]}},"category_recommendations":{"type":"array","items":{"type":"object","properties":{"series_name":{"type":["string","null"]},"series_url":{"type":["string","null"]},"series_id":{"type":["integer","null"]},"series_image":{"type":["object","null"],"properties":{"url":{"type":"object","properties":{"original":{"type":["string","null"]},"thumb":{"type":["string","null"]}}},"height":{"type":["integer","null"]},"width":{"type":["integer","null"]}},"required":["url","height","width"]},"weight":{"type":["integer","null"]}},"required":["series_id","series_image","weight"]}},"rank":{"type":"object","properties":{"position":{"type":"object","properties":{"week":{"type":["integer","null"]},"month":{"type":["integer","null"]},"three_months":{"type":["integer","null"]},"six_months":{"type":["integer","null"]},"year":{"type":["integer","null"]}},"required":["week","month","three_months","six_months","year"],"additionalProperties":false},"old_position":{"type":"object","properties":{"week":{"type":["integer","null"]},"month":{"type":["integer","null"]},"three_months":{"type":["integer","null"]},"six_months":{"type":["integer","null"]},"year":{"type":["integer","null"]}},"required":["week","month","three_months","six_months","year"],"additionalProperties":false},"lists":{"type":"object","properties":{"reading":{"type":["integer","null"]},"wish":{"type":["integer","null"]},"complete":{"type":["integer","null"]},"unfinished":{"type":["integer","null"]},"custom":{"type":["integer","null"]}},"required":["reading","wish","complete","unfinished","custom"],"additionalProperties":false}},"required":["position","old_position","lists"],"additionalProperties":false},"last_updated":{"type":"object","properties":{"timestamp":{"type":["integer","null"]},"as_rfc3339":{"type":["string","null"],"format":"date-time"},"as_string":{"type":["string","null"]}},"required":["timestamp","as_rfc3339"]},"admin":{}},"required":["series_id","title","url","associated","image","type","bayesian_rating","rating_votes","genres","categories","latest_chapter","forum_id","licensed","completed","anime","related_series","authors","publishers","publications","recommendations","category_recommendations","rank","last_updated"],"additionalProperties":false,"description":"Included in the response when `?with_source_response=1` is provided and hidden when `?with_source_response=0` is set.\n\nThis is the RAW response from MangaUpdates and may change at any time.\n\n**There are NO API stability guarantees**."}},"required":["source_response"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/source/my-anime-list/{id}":{"get":{"operationId":"get_source_my_anime_list_id_v1","tags":["Source","v1"],"summary":"🌐 (stable) Get MangaBaka series and/or MyAnimeList raw API response via MyAnimeList ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"number","example":74695},"required":true,"name":"id","in":"path"},{"schema":{"type":"boolean","default":false,"description":"Include MangaBaka internally processed data"},"required":false,"description":"Include MangaBaka internally processed data","name":"with_internal","in":"query"},{"schema":{"type":"boolean","default":true,"description":"Include MangaBaka Series matching the source ID"},"required":false,"description":"Include MangaBaka Series matching the source ID","name":"with_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include merged MangaBaka Series instead of only active ones"},"required":false,"description":"Include merged MangaBaka Series instead of only active ones","name":"with_merged_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include the raw API response from the source"},"required":false,"description":"Include the raw API response from the source","name":"with_source_response","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"internal":{"description":"Included in response when `?with_internal=1` is provided and hidden when `?with_internal=0` is set.\n\n**THE INTERNAL SCHEMA IS NOT STABLE AND MAY CHANGE AT ANY TIME**"},"series":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"Included in response when `?with_series=1` is provided. Hidden when `?with_series=0` is set"},"source_response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["source_response"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/source/anime-planet/{id}":{"get":{"operationId":"get_source_anime_planet_id_v1","tags":["Source","v1"],"summary":"🌐 (stable) Get MangaBaka series and/or AnimePlanet raw API response via Anime-Planet ID (auth: none, cache ttl: 7 days)","description":"Authentication: not required.\n\nCaching: up to 7 days at the CDN edge, 1 minute in the browser.","x-cache-ttl":"7_DAY","x-cache-ttl-cdn-seconds":604800,"x-cache-ttl-browser-seconds":60,"externalDocs":{"description":"Map your IDs to MangaBaka","url":"https://mangabaka.org/developers/guides/map-your-ids"},"parameters":[{"schema":{"type":"string","example":"re-zero-starting-life-in-another-world-light-novel"},"required":true,"name":"id","in":"path"},{"schema":{"type":"boolean","default":false,"description":"Include MangaBaka internally processed data"},"required":false,"description":"Include MangaBaka internally processed data","name":"with_internal","in":"query"},{"schema":{"type":"boolean","default":true,"description":"Include MangaBaka Series matching the source ID"},"required":false,"description":"Include MangaBaka Series matching the source ID","name":"with_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include merged MangaBaka Series instead of only active ones"},"required":false,"description":"Include merged MangaBaka Series instead of only active ones","name":"with_merged_series","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include the raw API response from the source"},"required":false,"description":"Include the raw API response from the source","name":"with_source_response","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"internal":{"description":"Included in response when `?with_internal=1` is provided and hidden when `?with_internal=0` is set.\n\n**THE INTERNAL SCHEMA IS NOT STABLE AND MAY CHANGE AT ANY TIME**"},"series":{"type":"array","items":{"$ref":"#/components/schemas/V1_Series_Default"},"description":"Included in response when `?with_series=1` is provided. Hidden when `?with_series=0` is set"},"source_response":{"type":"null","deprecated":true,"description":"No longer distributed. Always null."}},"required":["source_response"]}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions":{"get":{"operationId":"get_my_submissions_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) List own submissions (auth: pat, cache ttl: none)","description":"**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"number","minimum":1,"default":1,"description":"Page number, starting at 1. This listing is not bounded by the 12,000-row result window; page depth is limited only by the number of rows you can see."},"required":false,"description":"Page number, starting at 1. This listing is not bounded by the 12,000-row result window; page depth is limited only by the number of rows you can see.","name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":50,"default":25,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240."},"required":false,"description":"Rows per page (max 50). Combines with `page`: `page * limit` must not exceed the 12,000-row result window, so a larger `limit` reaches fewer pages. At 50 the deepest page is 240.","name":"limit","in":"query"},{"schema":{"$ref":"#/components/schemas/SubmissionResourceSlug"},"required":false,"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","name":"resource","in":"query"},{"schema":{"type":"string","enum":["pending","accepted","rejected","withdrawn"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["id:asc","id:desc","status:asc","status:desc","type:asc","type:desc","changes:asc","changes:desc","created_at:asc","created_at:desc","updated_at:asc","updated_at:desc",null],"description":"Column sort as `<column>:<direction>`. Omit for the endpoint's default order.","example":"created_at:desc"},"required":false,"description":"Column sort as `<column>:<direction>`. Omit for the endpoint's default order.","name":"sort_by","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionSummary"}}},"required":["status","pagination","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions/{resource}/{resource_id}":{"get":{"operationId":"get_my_submissions_resource_resource_id_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Get the live resource in submission-input shape (with concurrency token) (auth: pat, cache ttl: none)","description":"**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","enum":["series","series-images","tags","series-merge","link-domains","forum-sections","publishers","publisher-merge","badges"],"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","example":"series"},"required":true,"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","name":"resource","in":"path"},{"schema":{"type":"string","description":"ID of the existing resource to read.","example":"1"},"required":true,"description":"ID of the existing resource to read.","name":"resource_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubmissionResourceSnapshotData"},"version":{"type":"integer","description":"Opaque optimistic-concurrency token returned by the snapshot GET. Compare it for equality only, never interpret it as a timestamp. Round-trip it as `version` — a stale value is rejected (409)."}},"required":["data","version"],"description":"Live resource in submission-input shape (under `data`), plus a `version` concurrency token"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"post":{"operationId":"post_my_submissions_resource_resource_id_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Submit changes to an existing resource (auth: pat, cache ttl: none)","description":"Propose changes to an existing resource. The body is merged over the live resource (sparse — omitted fields keep their live value); trusted users may apply directly via `save_mode: direct`.\n\n**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\n**Pending limit:** regular users may not have more than `min(2 × approved submissions, 250)` pending submissions at once — exceeding it returns `403 Forbidden` (withdraw one or wait for review). Trusted users (contributor+) are exempt.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","enum":["series","series-images","tags","series-merge","link-domains","forum-sections","publishers","publisher-merge","badges"],"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","example":"series"},"required":true,"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","name":"resource","in":"path"},{"schema":{"type":"string","description":"ID of the existing resource to submit changes for.","example":"1"},"required":true,"description":"ID of the existing resource to submit changes for.","name":"resource_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveSubmissionBody"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[201]},"data":{"$ref":"#/components/schemas/SubmissionMutateResult"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions/{resource}":{"post":{"operationId":"post_my_submissions_resource_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Create a new resource (no existing id) (auth: pat, cache ttl: none)","description":"Propose a brand-new resource (e.g. a new series). The resource is not materialized until a moderator accepts the submission; trusted users may apply directly via `save_mode: direct`.\n\n**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\n**Pending limit:** regular users may not have more than `min(2 × approved submissions, 250)` pending submissions at once — exceeding it returns `403 Forbidden` (withdraw one or wait for review). Trusted users (contributor+) are exempt.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","enum":["series","series-images","tags","series-merge","link-domains","forum-sections","publishers","publisher-merge","badges"],"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","example":"series"},"required":true,"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","name":"resource","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubmissionBody"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[201]},"data":{"$ref":"#/components/schemas/SubmissionMutateResult"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions/{resource}/{resource_id}/preview":{"post":{"operationId":"post_my_submissions_resource_resource_id_preview_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Preview (dry-run) the diff a submission would produce — mutates nothing (auth: pat, cache ttl: none)","description":"Computes the same field-level diff a save would, against the current live resource, and returns it without writing anything. Use it to see the impact of a change before submitting.\n\n**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","enum":["series","series-images","tags","series-merge","link-domains","forum-sections","publishers","publisher-merge","badges"],"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","example":"series"},"required":true,"description":"Which resource a submission targets. `series` covers the full record (scalars, titles, tags, relationships, links, and cover images); `series-images` is the cover-image-only flow; `tags` covers a tag record (scalars, parent, and implication rules); `series-merge` requests that two series be merged as duplicates; `link-domains` covers a link domain (scalars, parent, and canonicalization rules); `forum-sections` covers a forum section with its tag groups, intents and post forms; `publishers` covers a publisher (scalars, imprint parent, and aliases); `publisher-merge` folds one publisher into another; `badges` covers a badge catalog entry and its tiers (admin only).","name":"resource","in":"path"},{"schema":{"type":"string","description":"ID of the existing resource to dry-run changes against.","example":"1"},"required":true,"description":"ID of the existing resource to dry-run changes against.","name":"resource_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewSubmissionBody"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"has_changes":{"type":"boolean","description":"False when the submitted data already matches live (a no-op save)."},"changes":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionDiff"},"description":"The field-level diff a save would apply. Empty for a no-op."}},"required":["has_changes","changes"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions/{submission_id}":{"get":{"operationId":"get_my_submissions_submission_id_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Get a submission (auth: pat, cache ttl: none)","description":"**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"submission_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/SubmissionDetail"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"patch":{"operationId":"patch_my_submissions_submission_id_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Update a pending submission (auth: pat, cache ttl: none)","description":"Sparse merge into a pending submission — send only the resource fields you want to change (same flat shape as a save). `user_note` is optional here (omit to keep the existing note).\n\n**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"submission_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSubmissionBody"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/SubmissionMutateResult"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/my/submissions/{submission_id}/withdraw":{"post":{"operationId":"post_my_submissions_submission_id_withdraw_v0","tags":["Data Moderation","v0"],"summary":"🔒 (internal) Withdraw a pending submission (auth: pat, cache ttl: none)","description":"**Access:** requires the `contributor` role (or higher), or at least 25 approved submissions — otherwise `403 Forbidden`.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Submission API guide","url":"https://mangabaka.org/developers/guides/submit-series-data"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":1},"required":true,"name":"submission_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawSubmissionBody"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"boolean"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/library":{"get":{"operationId":"get_my_library_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) List library entries (with series info) (auth: pat or oauth, cache ttl: none)","description":"Authentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_lower","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":10000,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1},"required":false,"name":"random_seed","in":"query"},{"schema":{"type":"string","enum":["available_chapters_asc","available_chapters_desc","created_at_asc","created_at_desc","default","my_rating_asc","my_rating_desc","priority_asc","priority_desc","random","series_rating_asc","series_rating_desc","series_title_asc","series_title_desc","trending_30d","trending_7d","updated_at_asc","updated_at_desc"],"default":"default"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]}},"required":false,"name":"state","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]}},"required":false,"name":"state_not","in":"query"},{"schema":{"type":"array","items":{"type":"string"}},"required":false,"name":"list","in":"query"},{"schema":{"type":"array","items":{"type":"string"}},"required":false,"name":"list_not","in":"query"},{"schema":{"type":"array","items":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30}},"required":false,"name":"priority","in":"query"},{"schema":{"type":"array","items":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30}},"required":false,"name":"priority_not","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_chapter_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_chapter_upper","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_volume_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_volume_upper","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"rereads_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"rereads_upper","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_private","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"library_rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"library_rating_upper","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Only include entries whose `updated_at` is at or after this timestamp (ISO 8601). Primary use is incremental sync — pass your last-seen timestamp to fetch everything changed since.","example":"2026-07-01T00:00:00Z"},"required":false,"description":"Only include entries whose `updated_at` is at or after this timestamp (ISO 8601). Primary use is incremental sync — pass your last-seen timestamp to fetch everything changed since.","name":"updated_after","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Only include entries whose `updated_at` is at or before this timestamp (ISO 8601).","example":"2026-07-31T23:59:59Z"},"required":false,"description":"Only include entries whose `updated_at` is at or before this timestamp (ISO 8601).","name":"updated_before","in":"query"},{"schema":{"type":"string"},"required":false,"name":"username","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."}},"additionalProperties":false}}},"required":["status","pagination","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/library":{"get":{"operationId":"get_my_library_v2","tags":["Users (/my)","v2"],"summary":"🔒 (beta) List library entries (with v2 series info) (auth: pat or oauth, cache ttl: none)","description":"Returns each entry as `{ entry, lists, series }`. Use the `schema` parameter to pick the embedded series shape: omit for the lean default; `full` adds links/tags/relationships and the full per-language title list. Sorting by series title is not supported.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":10000,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":24},"required":false,"name":"limit","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1},"required":false,"name":"random_seed","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]}},"required":false,"name":"state","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]}},"required":false,"name":"state_not","in":"query"},{"schema":{"type":"array","items":{"type":"string"}},"required":false,"name":"list","in":"query"},{"schema":{"type":"array","items":{"type":"string"}},"required":false,"name":"list_not","in":"query"},{"schema":{"type":"array","items":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30}},"required":false,"name":"priority","in":"query"},{"schema":{"type":"array","items":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30}},"required":false,"name":"priority_not","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_chapter_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_chapter_upper","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_volume_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"progress_volume_upper","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"rereads_lower","in":"query"},{"schema":{"type":"number","minimum":0},"required":false,"name":"rereads_upper","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_private","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"library_rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"library_rating_upper","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Only include entries whose `updated_at` is at or after this timestamp (ISO 8601). Primary use is incremental sync — pass your last-seen timestamp to fetch everything changed since.","example":"2026-07-01T00:00:00Z"},"required":false,"description":"Only include entries whose `updated_at` is at or after this timestamp (ISO 8601). Primary use is incremental sync — pass your last-seen timestamp to fetch everything changed since.","name":"updated_after","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Only include entries whose `updated_at` is at or before this timestamp (ISO 8601).","example":"2026-07-31T23:59:59Z"},"required":false,"description":"Only include entries whose `updated_at` is at or before this timestamp (ISO 8601).","name":"updated_before","in":"query"},{"schema":{"type":"string"},"required":false,"name":"username","in":"query"},{"schema":{"type":"string","enum":["available_chapters_asc","available_chapters_desc","created_at_asc","created_at_desc","default","my_rating_asc","my_rating_desc","priority_asc","priority_desc","random","series_rating_asc","series_rating_desc","trending_30d","trending_7d","updated_at_asc","updated_at_desc"],"default":"default"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"string","enum":["full"],"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list."},"required":false,"description":"Response shape. Omit for the lean default. `full` adds links, tags, relationships and the full per-language title list.","name":"schema","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LibraryEntryV2"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/library/changes":{"get":{"operationId":"get_my_library_changes_v2","tags":["Users (/my)","v2"],"summary":"🔒 (beta) Library changes feed (auth: pat or oauth, cache ttl: none)","description":"Everything that changed in your library since your last sync, removals included, without series data.\n\n**Read the [library sync guide](https://mangabaka.org/developers/guides/sync-a-library)** for setup, safe cursor handling, efficient polling, and recovery.\n\n**Requests.** No `cursor` starts a bootstrap: every list and entry you have. Every response has a `pagination.cursor`: send it back as `cursor`. While `more` is `true`, call again now; once it is `false` you are caught up, and the same cursor returns, on your next poll, only what changed since. A malformed cursor is `400`: bootstrap again.\n\n**Items.** Each item is `{ type, action, revision, current }` with `type` `entry` or `list` and `action` `upsert` or `delete`. `current` is the entry or list as it is when the page was read, so ten edits arrive as one upsert. A delete carries only the key: `series_id` for entries, `id` for lists. Ignore `type` and `action` values you do not know and keep going.\n\n**Your side.**\n- Identify entries by `series_id`; an entry's `id` can change (wipe and reimport).\n- Apply pages in order; the last state per `series_id` wins. A change made while you page shows up again later at its higher revision.\n- Store `pagination.cursor` only once you have applied that page; a crash resumes from the last stored cursor.\n- `list_ids` may name a list you have not received yet, and two lists may briefly share a name, even on the last page. Treat unknown list ids as not loaded yet.\n- Nothing changed: `200`, empty `data`, `more: false`.\n- You can bootstrap again at any time.\n\n**When to poll.** Apps and extensions people open: on launch, on returning to the foreground and on manual refresh; in the background at most every 15 minutes. Server-side apps with many users: use `GET /v2/my/apps/{clientId}/library/changes` and sync only the users it lists. An empty page still counts against your rate limit. After an error keep your stored `cursor` and retry on the next poll.\n\n**Privacy.** Apps with library access see which series you removed and roughly when: a revision is close to a microsecond timestamp.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Library sync guide","url":"https://mangabaka.org/developers/guides/sync-a-library"},"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"The `pagination.cursor` of your previous call. Omit for a full read (bootstrap)."},"required":false,"description":"The `pagination.cursor` of your previous call. Omit for a full read (bootstrap).","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":250,"description":"Items per page (max 1000). A bootstrap counts entries only; every list comes on its first page."},"required":false,"description":"Items per page (max 1000). A bootstrap counts entries only; every list comes on its first page.","name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V2_Cursor_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LibraryChangeItem"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v2/my/apps/{clientId}/library/changes":{"get":{"operationId":"get_my_apps_clientId_library_changes_v2","tags":["Users (/my)","v2"],"summary":"🔒 (beta) Users of your OAuth app with library changes (auth: pat, cache ttl: none)","description":"Which users of your OAuth app have library changes you have not fetched yet. Call it with a personal access token of the app's owner; any other caller gets `404`.\n\n**Read the [library sync guide](https://mangabaka.org/developers/guides/sync-a-library)** for setup, safe cursor handling, efficient polling, and recovery.\n\n**Full listing.** Without `cursor`, every user who has granted your app `library.read` and either changed their library since your last finished sync run for them, or has none yet.\n\n**The one rule.** Store a response's `pagination.cursor` only once every user on that page is synced, or saved in your own retry queue. A run lists each user once unless their library changes again, so a cursor you store past a user you did not sync loses them until their library changes again. To retry a page, send the same cursor again: users you have synced since drop out.\n\n**Paging and polling.** While `more` is `true`, call again with the new cursor. Once it is `false` the run is done, and that cursor lists, on your next poll, only users whose library changed or who granted access after this run started. A user who changes their library again during a run shows up again. Nothing to do: `200` with empty `data`. A full listing (no `cursor`) catches everyone, at any time. A malformed or unknown cursor is `400`: run a full listing.\n\nFor each listed user, call the changes feed, `GET /v2/my/library/changes`, with that user's OAuth token: follow `url`, or use the feed cursor you stored yourself. The listed `cursor` is where we last ended a run for your app, not what you stored: use it only if you save each feed page before fetching the next, otherwise your own stored cursor never loses data. Users who revoke access drop off the list; if they grant it again they come back with `cursor: null`, and if you kept their data you can continue from your own stored cursor.\n\nAuthentication: requires a Personal Access Token.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Library sync guide","url":"https://mangabaka.org/developers/guides/sync-a-library"},"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Your app's OAuth client id."},"required":true,"description":"Your app's OAuth client id.","name":"clientId","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"The `pagination.cursor` of your previous call. Omit for a full listing."},"required":false,"description":"The `pagination.cursor` of your previous call. Omit for a full listing.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":250,"description":"Users per page (max 1000)."},"required":false,"description":"Users per page (max 1000).","name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"pagination":{"$ref":"#/components/schemas/V2_Cursor_Pagination"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LibraryChangedUser"}}},"required":["status","pagination","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/library/{series_id}":{"get":{"operationId":"get_my_library_series_id_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Get a library entry (auth: pat or oauth, cache ttl: none)","description":"Authentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"series_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"user_id":{"type":"string"},"Entries":{"type":"array","items":{"type":"object","properties":{"library_entry_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"library_list_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["library_entry_id","library_list_id"]},"default":[]}},"required":["id","series_id","user_id"],"additionalProperties":false}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"post":{"operationId":"post_my_library_series_id_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Create a library entry (auth: pat or oauth, cache ttl: none)","description":"Authentication: requires a Personal Access Token or OAuth (scope `library.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"series_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."}},"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[201]},"data":{"type":"boolean"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"put":{"operationId":"put_my_library_series_id_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Update a library entry (auth: pat or oauth, cache ttl: none)","description":"You can omit fields you do not want to change - e.g. sending just `{\"rating\": 2}` will succeed\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"series_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"boolean"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"patch":{"operationId":"patch_my_library_series_id_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Update a library entry (with partial data) (auth: pat or oauth, cache ttl: none)","description":"You can omit fields you do not want to change - e.g. sending just `{\"rating\": 2}` will succeed. <br />This is CURRENTLY identical to PUT, since all fields are optional, but that might change in the future.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"series_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"boolean"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"delete":{"operationId":"delete_my_library_series_id_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Delete a library entry (auth: pat or oauth, cache ttl: none)","description":"Authentication: requires a Personal Access Token or OAuth (scope `library.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.write"]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"series_id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"boolean"}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/library/batch":{"get":{"operationId":"get_my_library_batch_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Get a list of up to 100 library entries (auth: pat or oauth, cache ttl: none)","description":"Authentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Write to a library in bulk","url":"https://mangabaka.org/developers/guides/bulk-library-writes"},"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"integer[]","description":"List of series (up to 100) to look up in the users library. If a series is not in the users library, it will silently be omitted from the response","example":"?series_id=1&series_id=2"},"required":true,"description":"List of series (up to 100) to look up in the users library. If a series is not in the users library, it will silently be omitted from the response","name":"series_id","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"user_id":{"type":"string"},"Entries":{"type":"array","items":{"type":"object","properties":{"library_entry_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"library_list_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["library_entry_id","library_list_id"]},"default":[]}},"required":["id","series_id","user_id"],"additionalProperties":false}}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}},"post":{"operationId":"post_my_library_batch_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Create or update up to 100 library entries (auth: pat or oauth, cache ttl: none)","description":"Accepts an array of up to 100 entries; only `series_id` is required per entry and all other fields are optional. Each entry is created if the series is not yet in the library, or patched (only the provided fields) if it is. Every `series_id` must reference an active series (merged/inactive series are rejected). The whole batch is atomic — if any entry fails, nothing is written. The response reports, per entry, whether it was `created`, `updated` or, with `insert_only`, `skipped`.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.write`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"externalDocs":{"description":"Write to a library in bulk","url":"https://mangabaka.org/developers/guides/bulk-library-writes"},"security":[{"x-api-key":[]},{"oauth-token":["library.write"]}],"parameters":[{"schema":{"type":"boolean","default":false,"description":"Skip series already in the library instead of patching them; they come back as `skipped`."},"required":false,"description":"Skip series already in the library instead of patching them; they come back as `skipped`.","name":"insert_only","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":20,"default":[],"description":"Ids of your own lists to add every created or updated entry to."},"required":false,"description":"Ids of your own lists to add every created or updated entry to.","name":"lists","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"note":{"type":["string","null"]},"read_link":{"type":["string","null"],"format":"uri"},"rating":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"priority":{"type":"number","exclusiveMinimum":0,"minimum":10,"maximum":30,"default":20},"is_private":{"type":"boolean","default":false},"number_of_rereads":{"type":["number","null"],"minimum":0,"maximum":1000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_chapter":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"progress_volume":{"type":["number","null"],"minimum":0,"maximum":10000,"description":"Null when nothing is recorded. A submitted `0` means the same and is stored as null."},"start_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"finish_date":{"type":["string","null"],"format":"date-time","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"A calendar date. On a request a bare `YYYY-MM-DD` is accepted and preferred; the `date-time` form is kept for compatibility and its time and offset are discarded — the day is read from the string as written. Responses still carry the day as `YYYY-MM-DDT00:00:00.000Z`, which is what v1 has always emitted. API v2 will accept and return `YYYY-MM-DD` only."},"series_id":{"type":"integer","exclusiveMinimum":0}},"required":["series_id"],"additionalProperties":false},"minItems":1,"maxItems":100}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"action":{"type":"string","enum":["created","updated","skipped"]}},"required":["series_id","action"],"additionalProperties":false}}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/profile":{"get":{"operationId":"get_my_profile_v1","tags":["Users (/my)","v1"],"summary":"🔒 (stable) Get the authenticated user (auth: pat or oauth, cache ttl: none)","description":"Returns the authenticated user profile - works with any OAuth / PAT token\n\nAuthentication: requires a Personal Access Token or OAuth.\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":[]}],"parameters":[{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"id":{"type":"string"},"nickname":{"type":["string","null"]},"preferred_username":{"type":["string","null"]},"picture":{"type":["string","null"]},"updated_at":{"type":["string","null"],"format":"date-time"},"role":{"type":"string","enum":["user","developer","contributor","moderator","admin"]},"auth_type":{"type":"string","enum":["oauth","pat","session"]},"scopes":{"type":"array","items":{"type":"string","enum":["library.read","library.write","stack.read","stack.write","mod","openid","profile","offline_access","badges"]}},"client_id":{"type":["string","null"],"description":"The OAuth client the token was issued to. Absent for personal access tokens."},"rating_steps":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[5]},{"type":"number","enum":[10]},{"type":"number","enum":[20]},{"type":"number","enum":[25]},{"type":"null"}],"default":1},"library_default_state":{"type":["string","null"],"enum":["plan_to_read","considering",null],"default":"plan_to_read"},"accepted_contribution_terms":{"type":"boolean","default":false},"badges":{"type":"array","items":{"type":"object","properties":{"badge":{"type":"string"},"tier_id":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["active","lapsed"]},"since":{"type":["string","null"],"format":"date-time"}},"required":["badge","tier_id","state","since"]},"default":[],"description":"Visible badges. Filled only for OAuth tokens with the `badges` scope; always empty otherwise."}},"required":["id","updated_at","role","auth_type","scopes"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/series/recommendations":{"get":{"operationId":"get_my_series_recommendations_v1","tags":["Users (/my)","v1"],"summary":"🔒 (beta) Personalized For-You series recommendations (auth: pat or oauth, cache ttl: none)","description":"Taste-profile + collaborative recommendations for the authenticated user, retrieved by taste-vector similarity and co-read, ranked with MMR. Accepts the series-search filter surface plus `limit`, `page`, and `exclude_ids`. Returns `cold_start` / `profile_stale` so clients can adapt when the profile is not yet warm.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"string","example":"re:zero","description":"Search in series titles"},"required":false,"description":"Search in series titles","name":"q","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Limit the type of series"},"required":false,"description":"Limit the type of series","name":"type","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"description":"Exclude the type of series"},"required":false,"description":"Exclude the type of series","name":"type_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["cancelled","completed","hiatus","releasing","unknown","upcoming"],"example":"releasing","description":"The series publication status."}},"required":false,"name":"status_not","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["safe","suggestive","erotica","pornographic"]},"default":[]},"required":false,"name":"not_content_rating","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["action","adult","adventure","avant_garde","award_winning","boys_love","comedy","doujinshi","drama","ecchi","erotica","fantasy","gender_bender","girls_love","gourmet","harem","hentai","historical","horror","josei","lolicon","mahou_shoujo","martial_arts","mature","mecha","music","mystery","psychological","romance","school_life","sci-fi","seinen","shotacon","shoujo","shoujo_ai","shounen","shounen_ai","slice_of_life","smut","sports","supernatural","suspense","thriller","tragedy","yaoi","yuri"]}},"required":false,"name":"genre_not","in":"query"},{"schema":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]},"maxItems":100},"required":false,"name":"tag","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100},"required":false,"name":"tag_not","in":"query"},{"schema":{"type":"string","enum":["and","or"],"default":"and"},"required":false,"name":"tag_mode","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":64,"maxLength":64}},"required":false,"name":"phash","in":"query"},{"schema":{"type":"string"},"required":false,"name":"publisher","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement."},"required":false,"description":"Limit to series from any of these publishers (repeatable, OR, also OR'd with `publisher`). Ids come from a series' `publishers[].id`; a merged publisher's id also matches its replacement.","name":"publisher_id","in":"query"},{"schema":{"type":"string","description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","example":"Hiromu Arakawa"},"required":false,"description":"Search across series authors and artists (single input). Word order changes which series match, so try the other order if a creator looks like they are missing work.","name":"staff","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_lower","in":"query"},{"schema":{"type":"integer","minimum":1679,"maximum":2262,"deprecated":true},"required":false,"name":"year_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication start date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_start_date_upper","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date >= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_lower","in":"query"},{"schema":{"type":"string","format":"date","formatMinimum":"1679-01-01","formatMaximum":"2262-12-31","description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD"},"required":false,"description":"Filter by publication end date <= this value. Accepts YYYY, YYYY-MM, or YYYY-MM-DD","name":"published_end_date_upper","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_lower","in":"query"},{"schema":{"type":"number","minimum":0,"maximum":100},"required":false,"name":"rating_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters >= this value"},"required":false,"description":"Filter by total chapters >= this value","name":"chapters_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total chapters <= this value"},"required":false,"description":"Filter by total chapters <= this value","name":"chapters_upper","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes >= this value"},"required":false,"description":"Filter by total volumes >= this value","name":"volumes_lower","in":"query"},{"schema":{"type":"number","minimum":0,"description":"Filter by total volumes <= this value"},"required":false,"description":"Filter by total volumes <= this value","name":"volumes_upper","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"with_boosts","in":"query"},{"schema":{"type":"boolean","description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned"},"required":false,"description":"Any licensed state is used when omitted. When \"true\" only licensed series are returned. When \"false\" only unlicensed series are returned","name":"is_licensed","in":"query"},{"schema":{"type":"boolean","description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned"},"required":false,"description":"Any adaptation state is used when omitted. When \"true\" only series with an anime adaptation are returned. When \"false\" only series without one are returned","name":"has_anime","in":"query"},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-z0-9]+$/i","description":"This a alpha feature, it may be removed or changed without any warning"},"required":false,"description":"This a alpha feature, it may be removed or changed without any warning","name":"exclude_user_library","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":12},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["chapters_asc","chapters_desc","latest","name_asc","name_desc","popularity_asc","popularity_desc","published_end_date_asc","published_end_date_desc","published_start_date_asc","published_start_date_desc","published_year_asc","published_year_desc","random","relevance_asc","relevance_desc","score_asc","score_desc","trending_30d","trending_7d","volumes_asc","volumes_desc"],"default":"relevance_desc"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"number","minimum":-1,"maximum":1,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set."},"required":false,"description":"Can optionally be used with [sort_by=random] to ensure consistent sorting, allowing users to go back to \"random\" results or share them with others. Effective range is [0, 1) — negative values are clamped to 0 and include the full filtered set.","name":"random_seed","in":"query"},{"schema":{"deprecated":true,"description":"Use \"with_ignore_content_rating_count\" instead"},"required":false,"description":"Use \"with_ignore_content_rating_count\" instead","name":"with_content_excluded_count","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Return how many results were hidden due to content rating restrictions"},"required":false,"description":"Return how many results were hidden due to content rating restrictions","name":"with_ignore_content_rating_count","in":"query"},{"schema":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"maxItems":100,"default":[]},"required":false,"name":"exclude_ids","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"canonical_url":{"type":"string"},"titles":{"type":["array","null"],"items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"note":{"type":["string","null"]},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]}},"media_type":{"type":"string","enum":["manga","novel","manhwa","manhua","oel","other"],"example":"novel","description":"The media type for the series."},"cover_image":{"$ref":"#/components/schemas/V1_Series_Image"},"published_year":{"type":["number","null"]},"score":{"type":"number"},"reason":{"type":"object","properties":{"reason_type":{"type":"string","enum":["tag_match","similar_to","hidden_gem"]},"top_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"weight":{"type":["string","null"],"enum":["core","defining","recurrent","incidental","unweighted",null]}},"required":["id","name","weight"]}},"suppressed_tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"weight":{"type":["string","null"],"enum":["core","defining","recurrent","incidental","unweighted",null]}},"required":["id","name","weight"]}},"source_alignment_used":{"type":"boolean"},"negative_factor":{"type":"number"},"reason_seeds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"canonical_url":{"type":"string"},"state":{"type":"string","enum":["considering","completed","dropped","paused","plan_to_read","reading","rereading"]},"titles":{"type":"array","items":{"type":"object","properties":{"language":{"$ref":"#/components/schemas/V2_TitleLanguage"},"traits":{"type":"array","items":{"type":"string","enum":["official","native","alternative"]}},"title":{"type":"string","minLength":1,"maxLength":1000},"note":{"type":["string","null"]},"is_primary":{"type":["boolean","null"],"default":false}},"required":["language","traits","title"]}}},"required":["id","canonical_url","state","titles"]}}},"required":["reason_type","top_tags","suppressed_tags","source_alignment_used","negative_factor","reason_seeds"]}},"required":["id","canonical_url","media_type","cover_image","score","reason"]}},"pagination":{"$ref":"#/components/schemas/V1_Pagination"},"cold_start":{"type":"boolean"},"profile_stale":{"type":"boolean"}},"required":["status","results","pagination","cold_start","profile_stale"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/series/recommendations/status":{"get":{"operationId":"get_my_series_recommendations_status_v1","tags":["Users (/my)","v1"],"summary":"🔒 (beta) For-You readiness probe (auth: pat or oauth, cache ttl: none)","description":"Lightweight probe reporting whether the authenticated user’s For-You pipeline is warm (`cold_start` / `profile_stale`) plus their `library_count`, without running the recommendation re-rank.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"cold_start":{"type":"boolean"},"profile_stale":{"type":"boolean"},"library_count":{"type":"integer","minimum":0}},"required":["status","cold_start","profile_stale","library_count"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v1/my/series/discover/top-genres":{"get":{"operationId":"get_my_series_discover_top_genres_v1","tags":["Users (/my)","v1"],"summary":"🔒 (beta) Your top genres (auth: pat or oauth, cache ttl: none)","description":"The authenticated user’s top genre tags from their taste profile (the selection that drives the Discover \"Top in {genre}\" rails). Feed each `tag_id` into `/v2/series/search?tag={id}&sort_by=score_desc` for the per-genre content.\n\nAuthentication: requires a Personal Access Token or OAuth (scope `library.read`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]},{"oauth-token":["library.read"]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":10,"default":3},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"},{"schema":{"type":"string","example":"Bearer TOKEN","description":"OAuth2 token"},"required":false,"description":"OAuth2 token","name":"Authorization","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"results":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","exclusiveMinimum":0},"tag_name":{"type":"string"},"affinity_score":{"type":"number"}},"required":["tag_id","tag_name","affinity_score"]}}},"required":["status","results"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/mod/series/{id}/realtime":{"get":{"operationId":"get_mod_series_id_realtime","tags":["Data Moderation"],"summary":"🔒 (internal) Get a series from the realtime view (same as /v1/series/{id} but without cache or delay) (auth: pat, cache ttl: none)","description":"Authentication: requires a Personal Access Token (role `contributor`, `moderator`, `admin`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["default","admin","full"],"default":"default"},"required":false,"name":"schema","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"$ref":"#/components/schemas/V1_Series_Default"}},"required":["status","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/mod/series/{id}/refresh":{"post":{"operationId":"post_mod_series_id_refresh","tags":["Data Moderation"],"summary":"🔒 (internal) Schedule a refresh of all source data related to the series (auth: pat, cache ttl: none)","description":"Authentication: requires a Personal Access Token (role `contributor`, `moderator`, `admin`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647,"example":74695},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]}},"required":["status"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/mod/titles/conflicts":{"get":{"operationId":"get_mod_titles_conflicts","tags":["Data Moderation"],"summary":"🔒 (internal) Search all unresolved title conflicts (auth: pat, cache ttl: none)","description":"Global search with pagination and filtering by conflict type, language, or series\n\nAuthentication: requires a Personal Access Token (role `contributor`, `moderator`, `admin`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string","enum":["language_conflict","text_conflict","low_confidence","unknown_code","pending"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string"},"required":false,"name":"language","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"required":false,"name":"series_id","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"titles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"language":{"type":"string"},"traits":{"type":"array","items":{"type":"string"}},"note":{"type":["string","null"]},"is_primary":{"type":"boolean"},"is_excluded":{"type":"boolean"},"is_locked":{"type":"boolean"},"is_cjk":{"type":"boolean"},"is_mixed_script":{"type":"boolean"},"language_detection_status":{"type":"string"},"language_detection_confidence":{"type":["number","null"]},"language_detected":{"type":["string","null"]},"review_reasons":{"type":"array","items":{"type":"string"}},"resolved_reasons":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","title","language","traits","note","is_primary","is_excluded","is_locked","is_cjk","is_mixed_script","language_detection_status","language_detection_confidence","language_detected","review_reasons","resolved_reasons","created_at","updated_at"]}},"metadata":{"type":"object","additionalProperties":{"type":"object","properties":{}},"description":"Per-title metadata keyed by title ID"},"pagination":{"type":"object","properties":{"page":{"type":"number"},"per_page":{"type":"number"},"total":{"type":"number"}},"required":["page","per_page","total"]}},"required":["titles","metadata","pagination"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/mod/titles/search":{"get":{"operationId":"get_mod_titles_search","tags":["Data Moderation"],"summary":"🔒 (internal) Search titles across all series (auth: pat, cache ttl: none)","description":"Filter by language, detection status, boolean flags, traits, review reasons. Text search via `q` uses `LIKE` on normalized titles. Add `include_metadata=true` to include sources and conflict details.\n\nAuthentication: requires a Personal Access Token (role `contributor`, `moderator`, `admin`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":500,"description":"Text search (trigram similarity)"},"required":false,"description":"Text search (trigram similarity)","name":"q","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"required":false,"name":"series_id","in":"query"},{"schema":{"type":"string","description":"Filter by language code (e.g. ja-Latn, en)"},"required":false,"description":"Filter by language code (e.g. ja-Latn, en)","name":"language","in":"query"},{"schema":{"type":"string"},"required":false,"name":"language_detected","in":"query"},{"schema":{"type":"string","enum":["not_needed","pending","processing","detected","low_confidence","approved","rejected","unknown_code"]},"required":false,"name":"language_detection_status","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_primary","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_excluded","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_locked","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_cjk","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"is_mixed_script","in":"query"},{"schema":{"type":"string","description":"Filter by trait (e.g. official, native, romanized)"},"required":false,"description":"Filter by trait (e.g. official, native, romanized)","name":"trait","in":"query"},{"schema":{"type":"string","description":"Filter by review reason (e.g. language_conflict)"},"required":false,"description":"Filter by review reason (e.g. language_conflict)","name":"review_reason","in":"query"},{"schema":{"type":"string","enum":["updated_at","created_at","title","language"],"default":"updated_at"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"include_metadata","in":"query"},{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"titles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"language":{"type":"string"},"traits":{"type":"array","items":{"type":"string"}},"note":{"type":["string","null"]},"is_primary":{"type":"boolean"},"is_excluded":{"type":"boolean"},"is_locked":{"type":"boolean"},"is_cjk":{"type":"boolean"},"is_mixed_script":{"type":"boolean"},"language_detection_status":{"type":"string"},"language_detection_confidence":{"type":["number","null"]},"language_detected":{"type":["string","null"]},"review_reasons":{"type":"array","items":{"type":"string"}},"resolved_reasons":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","title","language","traits","note","is_primary","is_excluded","is_locked","is_cjk","is_mixed_script","language_detection_status","language_detection_confidence","language_detected","review_reasons","resolved_reasons","created_at","updated_at"]}},"metadata":{"type":"object","additionalProperties":{"type":"object","properties":{}},"description":"Per-title metadata keyed by title ID"},"pagination":{"type":"object","properties":{"page":{"type":"number"},"per_page":{"type":"number"},"total":{"type":"number"}},"required":["page","per_page","total"]}},"required":["titles","metadata","pagination"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/mod/dropbox":{"post":{"operationId":"post_mod_dropbox","tags":["Data Moderation"],"summary":"🔒 (internal) File upload dropbox for various use-cases. Files automatically deleted after 24 hours (auth: pat, cache ttl: none)","description":"Authentication: requires a Personal Access Token (role `contributor`, `moderator`, `admin`).\n\nCaching: not cached — responses are marked `no-store` for both the CDN and the browser.","x-cache-ttl":"NO_CACHE","x-cache-ttl-cdn-seconds":0,"x-cache-ttl-browser-seconds":0,"security":[{"x-api-key":[]}],"parameters":[{"schema":{"type":"string","example":"mb-xxxxxxxxxxx","description":"Personal Access Token (PAT)"},"required":false,"description":"Personal Access Token (PAT)","name":"x-api-key","in":"header"}],"requestBody":{"description":"Request body","required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[201]},"url":{"type":"string","format":"uri"},"type":{"type":"string"}},"required":["status","url","type"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_401"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_403"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/mod/statistics":{"get":{"operationId":"get_mod_statistics_v0","tags":["Data Moderation","v0"],"summary":"🌐 (internal) Merge queue and submission queue counts (auth: none, cache ttl: 10 minutes)","description":"Authentication: not required.\n\nCaching: up to 10 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"10_MIN","x-cache-ttl-cdn-seconds":600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"merge":{"type":"object","properties":{"pending":{"type":"integer","example":890}},"required":["pending"]},"submissions":{"type":"object","properties":{"pending":{"type":"integer","example":499},"by_age":{"type":"object","properties":{"d0_3":{"type":"integer","example":253},"d3_7":{"type":"integer","example":61},"d7_31":{"type":"integer","example":154},"over_31":{"type":"integer","example":31}},"required":["d0_3","d3_7","d7_31","over_31"],"description":"Pending submissions by whole days waited. Upper bounds are exclusive."}},"required":["pending","by_age"]}},"required":["merge","submissions"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/mod/leaderboard":{"get":{"operationId":"get_mod_leaderboard_v0","tags":["Data Moderation","v0"],"summary":"🌐 (internal) Duplicate-merge leaderboard, bucketed by period (auth: none, cache ttl: 10 minutes)","description":"Authentication: not required.\n\nCaching: up to 10 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"10_MIN","x-cache-ttl-cdn-seconds":600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"today":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"},"merged":{"type":"string","example":"164262"},"dismissed":{"type":"string","example":"164262"}},"required":["username","user_id","count","merged","dismissed"]}},"this_Week":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"},"merged":{"type":"string","example":"164262"},"dismissed":{"type":"string","example":"164262"}},"required":["username","user_id","count","merged","dismissed"]}},"this_month":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"},"merged":{"type":"string","example":"164262"},"dismissed":{"type":"string","example":"164262"}},"required":["username","user_id","count","merged","dismissed"]}},"this_year":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"},"merged":{"type":"string","example":"164262"},"dismissed":{"type":"string","example":"164262"}},"required":["username","user_id","count","merged","dismissed"]}},"all":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"},"merged":{"type":"string","example":"164262"},"dismissed":{"type":"string","example":"164262"}},"required":["username","user_id","count","merged","dismissed"]}}},"required":["today","this_Week","this_month","this_year","all"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/mod/leaderboard/edits":{"get":{"operationId":"get_mod_leaderboard_edits_v0","tags":["Data Moderation","v0"],"summary":"🌐 (internal) Series-edit leaderboard, bucketed by period (auth: none, cache ttl: 10 minutes)","description":"Authentication: not required.\n\nCaching: up to 10 minutes at the CDN edge, 1 minute in the browser.","x-cache-ttl":"10_MIN","x-cache-ttl-cdn-seconds":600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"today":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"}},"required":["username","user_id","count"]}},"this_Week":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"}},"required":["username","user_id","count"]}},"this_month":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"}},"required":["username","user_id","count"]}},"this_year":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"}},"required":["username","user_id","count"]}},"all":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","example":"Polaris"},"user_id":{"type":["string","null"]},"count":{"type":"string","example":"164262"}},"required":["username","user_id","count"]}}},"required":["today","this_Week","this_month","this_year","all"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/frontpage/community-pulse":{"get":{"operationId":"get_frontpage_community_pulse_v0","tags":["Series","v0"],"summary":"🌐 (internal) Site-wide activity counters for the frontpage (auth: none, cache ttl: 1 hour)","description":"Every counter is paired with its value for the preceding week (`*_prev_week`) so the frontpage can render a trend without a second call.\n\nAuthentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"active_series_count":{"type":"number"},"active_series_count_prev_week":{"type":"number"},"new_series_7d_count":{"type":"number"},"new_series_7d_count_prev_week":{"type":"number"},"registered_user_count":{"type":"number"},"registered_user_count_prev_week":{"type":"number"},"public_reader_count":{"type":"number"},"public_reader_count_prev_week":{"type":"number"},"public_entry_count":{"type":"number"},"public_entry_count_prev_week":{"type":"number"},"chapters_read_count":{"type":"number"},"chapters_read_count_prev_week":{"type":"number"},"volumes_read_count":{"type":"number"},"volumes_read_count_prev_week":{"type":"number"},"reviewed_duplicate_sets_7d_count":{"type":"number"},"reviewed_duplicate_sets_7d_count_prev_week":{"type":"number"},"edits_last_7_days":{"type":"number"},"edits_last_7_days_prev_week":{"type":"number"}},"required":["active_series_count","active_series_count_prev_week","new_series_7d_count","new_series_7d_count_prev_week","registered_user_count","registered_user_count_prev_week","public_reader_count","public_reader_count_prev_week","public_entry_count","public_entry_count_prev_week","chapters_read_count","chapters_read_count_prev_week","volumes_read_count","volumes_read_count_prev_week","reviewed_duplicate_sets_7d_count","reviewed_duplicate_sets_7d_count_prev_week","edits_last_7_days","edits_last_7_days_prev_week"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}},"/v0/data/bots":{"get":{"operationId":"get_data_bots_v0","tags":["Crawlers","v0"],"summary":"🌐 (internal) Verified-bot traffic mirrored from Cloudflare (auth: none, cache ttl: 1 hour)","description":"Requests and bytes served to verified crawlers, broken down by category, host, content type and status. Cloudflare retains ~8 days of this; everything older is only here because it was mirrored.\n\nAuthentication: not required.\n\nCaching: up to 1 hour at the CDN edge, 1 minute in the browser.","x-cache-ttl":"1_HOUR","x-cache-ttl-cdn-seconds":3600,"x-cache-ttl-browser-seconds":60,"parameters":[{"schema":{"type":"string","format":"date","example":"2026-08-28","description":"Inclusive start date. Defaults to 7 days ago."},"required":false,"description":"Inclusive start date. Defaults to 7 days ago.","name":"from","in":"query"},{"schema":{"type":"string","format":"date","example":"2026-09-04","description":"Inclusive end date. Defaults to today."},"required":false,"description":"Inclusive end date. Defaults to today.","name":"to","in":"query"},{"schema":{"type":"string","example":"OpenAI","description":"Scope to one provider, by the name the overview returns. Lists that provider s crawlers."},"required":false,"description":"Scope to one provider, by the name the overview returns. Lists that provider s crawlers.","name":"provider","in":"query"},{"schema":{"type":"string","example":"GPTBot","description":"Scope to one crawler inside a provider. Requires `provider`."},"required":false,"description":"Scope to one crawler inside a provider. Requires `provider`.","name":"crawler","in":"query"},{"schema":{"type":"string","example":"cdn.mangabaka.dev","description":"Scope to one hostname bots reached."},"required":false,"description":"Scope to one hostname bots reached.","name":"host","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","enum":[200]},"data":{"type":"object","properties":{"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"totals":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"groups":{"type":"integer","example":46,"description":"Distinct values of whatever `grouped_by` names, before the card cap."},"hosts":{"type":"integer","example":4}},"required":["requests","response_bytes","groups","hosts"]},"comparison":{"type":["object","null"],"properties":{"current":{"type":"integer"},"previous":{"type":"integer"},"partial":{"type":"boolean","description":"The previous window starts before the mirror does, so the change reads larger than it was."}},"required":["current","previous","partial"],"description":"Period-on-period requests, or null when the range holds no complete day."},"earliest_day":{"type":["string","null"],"example":"2026-08-28","description":"First day the mirror holds. A range starting earlier is short of data, not of traffic."},"all_requests":{"type":"integer","example":6031900,"description":"Requests in the same range with no host or crawler filter, for the share tiles."},"categories":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"key":{"type":"string","example":"mangabaka.org","description":"The dimension value this row counts."}},"required":["requests","response_bytes","key"]}},"hosts":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"key":{"type":"string","example":"mangabaka.org","description":"The dimension value this row counts."}},"required":["requests","response_bytes","key"]}},"content_types":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"key":{"type":"string","example":"mangabaka.org","description":"The dimension value this row counts."}},"required":["requests","response_bytes","key"]}},"statuses":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"status":{"type":"integer","example":200,"description":"HTTP status Cloudflare answered with."}},"required":["requests","response_bytes","status"]}},"grouped_by":{"type":"string","enum":["provider","crawler"],"description":"What `groups` lists: providers at the top level, that provider s crawlers inside one."},"groups":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"name":{"type":"string","example":"OpenAI","description":"Provider, or crawler inside a provider."},"category":{"type":"string","example":"AI Crawler","description":"Cloudflare's own verified-bot category."},"daily":{"type":"array","items":{"type":"integer"},"description":"Requests per day, one entry per day in `daily`. Empty for the quiet tail."},"comparison":{"type":["object","null"],"properties":{"current":{"type":"integer"},"previous":{"type":"integer"},"partial":{"type":"boolean","description":"The previous window starts before the mirror does, so the change reads larger than it was."}},"required":["current","previous","partial"],"description":"Period-on-period requests, or null when the range holds no complete day."}},"required":["requests","response_bytes","name","category","daily","comparison"]}},"daily":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","example":541025},"response_bytes":{"type":"integer","example":13620000000},"day":{"type":"string","example":"2026-09-03"}},"required":["requests","response_bytes","day"]}}},"required":["range","totals","comparison","earliest_day","all_requests","categories","hosts","content_types","statuses","grouped_by","groups","daily"]}},"required":["status","data"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_400"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_404"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_429"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_500"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_502"}}}},"503":{"description":"Service Temporarily Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_503"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1_Error_504"}}}}}}}},"webhooks":{}}
