**Breaking**: GET /api/v2/galleries/{id}/comments is now paginated. Response shape changed from a flat array to {result, num_pages, per_page, total}. Accepts ?page=N&per_page=N (default and max per_page=50). Rate limit relaxed from 6/15s to 30/60s to accommodate page-by-page reads
**Breaking**: GET /api/v2/galleries/{id}?include=comments now returns only the first 50 comments (newest first) rather than every comment. The gallery payload gains a top-level comment_count so clients can size their own pagination. Fetch additional pages via the standalone /comments endpoint
2026-05-13
Added discussion threads on taxonomy suggestions. Anyone can read; logged-in users can post
2026-05-12
Added community taxonomy proposals. Authenticated users can propose changes to the global tag taxonomy (create, rename, merge, describe), vote on others' proposals, and withdraw their own. Resolved entries are a public ledger with the staff resolution note attached
2026-05-09
Added community gallery-tag-suggestion endpoints. Authenticated users can propose adding or removing a tag on a gallery, vote on others' proposals, and withdraw their own
POST /api/v2/galleries/{gallery_id}/suggestions: propose {tag_id, action: "add" | "remove"}
GET /api/v2/galleries/{gallery_id}/suggestions?tier=: list pending suggestions for a gallery
POST /api/v2/galleries/{gallery_id}/suggestions/{suggestion_id}/vote: {vote: -1 | 0 | 1}, 0 clears
DELETE /api/v2/galleries/{gallery_id}/suggestions/{suggestion_id}: withdraw your own pending suggestion
GET /api/v2/galleries/{id}?include=suggestions adds the suggestions payload alongside the existing comments, related, and favorite includes
2026-05-04
Split rate limits by auth state. Authenticated callers keep the previous limits; anonymous callers are stricter and may get stricter still. Authenticate with an API key (Authorization: Key ) to stay on the previous tier
2026-05-01
Added POST /api/v2/galleries/{id}/download for authenticated users to obtain a short-lived signed URL for a gallery archive. Supports ?format=zip (default; pages + meta.json), ?format=cbz (adds a ComicInfo.xml for comic readers), and ?format=torrent (a .torrent file)
Throttled to a few MB/s per stream and 5 issuances per 5 min per user. Once we have a feel for how the infrastructure handles this new load we'll audit the limits and potentially adjust. Reach out if you're hitting them on a legitimate use case
Torrent downloads (?format=torrent) are retained primarily for archival and long-term preservation. Served .torrent files now include a set of public trackers to help clients find peers more reliably. This format may be retired in a future update if the direct-download flow proves a sufficient substitute, or if the operational cost of maintaining it outweighs its benefit
Apps that assemble gallery archives via per-page CDN fetches should migrate to this endpoint. It's the supported, easier-to-integrate path going forward. Personal users and preservationalists are welcome; we'd much rather raise rate limits for legitimate use than push consumers back to per-page fetching, so reach out if you cannot preserve effectively under the current limits. Please use the endpoint properly; send a descriptive User-Agent and authenticate with an API key so traffic stays observable. We do not support systematic bulk scraping or full-site mirroring
2026-04-27
Added an experimental userscript helper at https://nhentai.net/userscript/v1.js for reading page data without DOM scraping. Best-effort, no stability commitments. See the file header for usage and caveats
2026-04-26
Added a cdn section to the API docs covering CDN usage and rate limit / ban behavior
The CDN now temporarily bans clients that sustain rates well beyond normal browsing or repeatedly request invalid URL patterns. Bans are short and self-expiring; treat 429 as a backoff signal and don't construct CDN paths by guessing
2026-04-04
Auth and user management endpoints marked as first-party only in API docs
Tightened rate limits across most endpoints to better match frontend usage patterns. If you're hitting limits on API key routes, reach out — we're open to increasing them
Removed GET /api/v2/galleries/{id}/pages and GET /api/v2/galleries/{id}/pages/{page_number} (unused, page data is included in gallery detail)
2026-04-03
Added GET /api/v2/tags/ids?ids=1,2,3 — batch tag lookup by ID (max 100)
Renamed POST /api/v2/tags/autocomplete to POST /api/v2/tags/search (old path deprecated)
Fixed tag_ids missing from gallery list responses on GET /api/v2/galleries/tagged?sort=popular (only returned the searched tag instead of all tags)
Fixed blacklist filtering on popular all-time tagged galleries
API clients are now encouraged to set a descriptive User-Agent header: AppName/version (contact or project URL)
2026-04-02
Added changelog page at /api/v2/changelog
Added blacklisted field to all gallery list responses (true/false for authenticated users with a blacklist)
GET /api/v2/user now returns about and favorite_tags fields
GET /api/v2/user now accessible with API key authentication (email hidden)
Tag autocomplete is now case-insensitive
2026-04-01
Fixed pretty title parsing for bilingual titles (e.g. "Japanese | English")
Standardized rate limits for user read endpoints to 30/min (GET /api/v2/user, /api/v2/user/keys, /api/v2/blacklist, /api/v2/blacklist/ids, /api/v2/auth/sessions)
2026-03-31
Auth inputs now trim whitespace (login, register)
Added num_pages to all gallery listing responses
Added alphabet pagination to tag listings (GET /api/v2/tags/{type}?sort=name)
Removed search results page cap
Added theme field to user responses and profile update
2026-03-30
Rate limit headers now included in 429 responses
429'd requests no longer count against your rate limit window
Login and comment rate limits adjusted
Fixed blacklist filtering on related and popular galleries