← Back
Monbooru API
Version 1.1.0 · base URL https://booru.grinev.dev/api/v1
API is disabled - generate a token in Settings → Authentication to enable it. All endpoints currently return 503 api_disabled.
Every endpoint except /docs and /openapi.json requires Authorization: Bearer <token>. Create a named token in Settings → Authentication; while none exists every authenticated endpoint returns 503 api_disabled. Tokens are scoped (read/write/delete); a request whose token lacks the scope gets 403 insufficient_scope.
Endpoints take an optional ?gallery=<name> (or X-Monbooru-Gallery header) to target a specific gallery; omit both for the active one.
Raw spec: openapi.json
Endpoints
GET/
API info
Responses
| Status | Description | Schema |
200 | API metadata | APIInfo |
503 | API disabled (no token configured) | Error |
GET/categories
List tag categories
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Categories | |
POST/categories
Create a category
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: name
| Field | Type | Description |
color | string | #rgb or #rrggbb; defaults to #888888 when blank. |
name | string | Lowercase letters, digits, underscore, or hyphen. Search-filter keywords are reserved. |
Responses
| Status | Description | Schema |
201 | Created category | Category |
400 | Invalid or reserved name, or invalid colour | Error |
409 | A category with this name already exists | Error |
PATCH/categories/{id}
Rename and/or recolor a category
Parameters
| Name | In | Required | Description |
id | path | yes | Category ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
| Field | Type | Description |
color | string | #rgb or #rrggbb. Allowed on built-in categories. |
name | string | New name. Built-in categories refuse a rename. |
Responses
| Status | Description | Schema |
200 | Updated category | Category |
400 | No fields, invalid colour, reserved/invalid name, or a built-in rename | Error |
404 | Category not found | Error |
409 | A category with the new name already exists | Error |
DELETE/categories/{id}
Delete a category
Parameters
| Name | In | Required | Description |
id | path | yes | Category ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
| Field | Type | Description |
action | string | 'move' (default; reparent the category's tags) or 'delete_all' (drop the tags too). |
target_id | integer | Move target category id; defaults to general when omitted. |
Responses
| Status | Description | Schema |
204 | Deleted | |
400 | Built-in category, or an unknown action | Error |
404 | Category not found | Error |
GET/galleries
List configured galleries
Responses
| Status | Description | Schema |
200 | Galleries with counts and the active flag | |
POST/images
Add an image
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: path
| Field | Type | Description |
autotag | boolean | Kick off an auto-tag job on the new image |
collection | string | Optional collection label (images.series). Written on the new row; on a duplicate-SHA push added as a membership that never displaces the existing home. |
collection_order | integer | Optional 1-based position within the collection. Requires a non-empty collection in the same request. |
commentary | string | Optional artist commentary for the pushed source (<=10000 chars). |
folder | string | Destination subfolder for relative paths |
md5 | string | Optional md5 the source claims for the file (<=64 chars). Recorded on the origin row as an audit trail; never a dedup key. |
notes | array | Optional positional note boxes ({x, y, w, h, body}) for the pushed source. |
original | string | Optional upstream artist source the post declared (<=2048 chars, newline-joined when several). Recorded on the same origin as 'source'. |
parent_url | string | Optional canonical URL of the post this post declares as its parent. Must start with http:// or https://. Recorded on the same origin as 'source'; when the parent's post lands in the gallery too, the pair is linked as a derivative relation. |
path | string | Path to a file already on disk. Absolute paths are used verbatim; relative paths are resolved under gallery/<folder> when folder is set, otherwise under the gallery root. WARNING: absolute paths give a token holder read access to anything the monbooru process can stat. |
source | string | Optional site label for the image's origin (site name, scraper...). Recorded as a source; on a duplicate-SHA push its tags and provenance merge into the existing image instead of being discarded. |
tagger_name | string | Optional auto-tagger name |
tags | array | |
url | string | Optional canonical web URL the image came from. Must start with http:// or https://. Recorded on the same origin as 'source'. |
via | string | Optional caller-supplied identifier. Stored as images.origin and attached to each initial tag. Blank defaults images.origin to 'ingest' for JSON path-reference mode. |
Content-Type: multipart/form-data
Required: file
| Field | Type | Description |
autotag | string | Set to "true" to kick off an auto-tag job on the new image |
collection | string | Optional collection label (images.series). Written on the new row; on a duplicate-SHA push added as a membership that never displaces the existing home. |
collection_order | string | Optional 1-based position within the collection. Requires a non-empty collection in the same request. |
commentary | string | Optional artist commentary for the pushed source (<=10000 chars). |
file | string | Image or video file |
folder | string | Destination subfolder under the gallery root; missing directories are created. Leave blank for the gallery root. |
md5 | string | Optional md5 the source claims for the file (<=64 chars). Recorded on the origin row as an audit trail; never a dedup key. |
notes | string | Optional JSON-encoded array of positional note boxes ({x, y, w, h, body}) for the pushed source. |
original | string | Optional upstream artist source the post declared (<=2048 chars, newline-joined when several). Recorded on the same origin as 'source'. |
parent_url | string | Optional canonical URL of the post this post declares as its parent. Must start with http:// or https://. Recorded on the same origin as 'source'; when the parent's post lands in the gallery too, the pair is linked as a derivative relation. |
source | string | Optional site label for the image's origin (site name, scraper...). Recorded as a source; on a duplicate-SHA push its tags and provenance merge into the existing image instead of being discarded. |
tagger_name | string | Optional auto-tagger name; when set with autotag, restricts the job to that tagger |
tags | string | JSON-encoded array of tag names |
url | string | Optional canonical web URL the image came from. Must start with http:// or https://. Recorded on the same origin as 'source'. |
via | string | Optional caller-supplied identifier (app name, URL...). Stored as images.origin and attached to each initial tag via image_tags.tagger_name. Blank defaults images.origin to 'upload' for multipart mode. |
Responses
| Status | Description | Schema |
200 | Duplicate SHA-256: existing image returned with the pushed tags and provenance merged; alias_added is true only when a JSON path-reference recorded a new alias | DuplicateImageResponse |
201 | Image created | CreateImageResponse |
400 | Invalid request or unsupported file type | Error |
413 | File exceeds max size | Error |
500 | Ingest failure | Error |
GET/images/search
Search images
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
q | query | no | Search query (tag list, filters, wildcards) |
sort | query | no | Sort field: newest, filesize, order, random |
order | query | no | Sort order: asc, desc |
seed | query | no | Random-sort seed for stable pagination when sort=random |
page | query | no | Page number (1-based) |
limit | query | no | Results per page (max 200) |
Responses
GET/images/{id}
Get image metadata
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Image metadata | Image |
404 | Not found | Error |
PATCH/images/{id}
Edit image fields
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
| Field | Type | Description |
collection | string | Collection label (images.series). Empty clears. |
collection_order | integer | 1-based position within the collection. Requires a non-empty collection (incoming or already stored). |
is_favorited | boolean | |
is_inbox | boolean | true = sits in the inbox (needs triage); false = curated. |
source | string | Operator-edited provenance label (<=200 chars). Empty clears. |
url | string | Canonical web URL (<=2048 chars, http:// or https://). Empty clears. |
Responses
| Status | Description | Schema |
200 | Updated image | Image |
400 | Invalid request (bad url, order without a collection, or no editable fields supplied) | Error |
404 | Not found | Error |
409 | Relabel collides with another origin the image already carries | Error |
DELETE/images/{id}
Delete image from library
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
delete_empty_folder | query | no | Remove containing folder if empty after deletion |
Responses
| Status | Description | Schema |
200 | Deleted (folder also removed) | |
204 | Deleted | |
404 | Not found | Error |
POST/images/{id}/enrich
Apply fetched metadata to an existing image
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
| Field | Type | Description |
commentary | string | |
notes | array | Positional note boxes ({x, y, w, h, body}); a non-empty array replaces the set this origin contributed. |
original | string | Upstream artist source the post declared (<=2048 chars, newline-joined when several). A non-empty value overwrites the stored one. |
parent_url | string | Canonical URL of the post this post declares as its parent. Recorded on the origin row; when both sides are in the gallery the pair is linked as a derivative relation. Empty keeps the stored value. |
similarity | number | Similarity-service score (0-100) when the post was found by image similarity rather than an exact hash. Recorded on the origin row; a matched origin's refetches skip the md5 verify. 0 or absent keeps the stored score. |
source | string | Site label of the origin being refetched |
source_md5 | string | md5 the source claims (<=64 chars). Compared against the stored file when verify is set; recorded on the origin row. |
tags | array | |
url | string | |
verify | boolean | When true and source_md5 is non-empty, the stored file is hashed and compared first; a mismatch applies nothing and returns 409 - unless the origin is similarity-matched, whose file differs by design. |
Responses
| Status | Description | Schema |
200 | Metadata applied | EnrichResponse |
404 | Not found | Error |
409 | Hash mismatch: the source no longer serves this file; nothing was changed. Not raised for a similarity-matched origin | Error |
500 | A merge write failed (recorded as an error fetch status) | Error |
POST/images/{id}/fetch-status
Report a source-fetch outcome
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: state
| Field | Type | Description |
message | string | Operator-facing detail shown on the image's fetch pill |
state | string | Outcome state, e.g. "error" |
Responses
| Status | Description | Schema |
200 | Recorded | |
400 | Missing state | Error |
GET/images/{id}/file
Download original image/video bytes
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Original file bytes | |
404 | Not found | Error |
GET/images/{id}/page/{n}
Download a manga page (cbz rows)
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
n | path | yes | 1-based page number |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Page bytes (lazily extracted from the archive) | |
400 | Invalid page number | Error |
404 | Not a manga row, or page out of range | Error |
GET/images/{id}/page/{n}/thumb
Download a manga page thumbnail (cbz rows)
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
n | path | yes | 1-based page number |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Page thumbnail (JPEG) | |
400 | Invalid page number | Error |
404 | Not a manga row, or page out of range | Error |
GET/images/{id}/relations
Get declared relations for an image
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
List image tags
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Image tag list | TagArray |
404 | Not found | Error |
POST/images/{id}/tags
Add tags to image
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: tags
| Field | Type | Description |
tags | array | Tag names to add |
via | string | Optional caller-supplied identifier attached to each added tag (app name, URL...); stored in image_tags.tagger_name so the detail page can surface which third party contributed them |
Responses
| Status | Description | Schema |
200 | Bare TagArray on success; wrapped in {tags, tag_warnings} when any tag failed validation. | |
Remove tags from image
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: tags
| Field | Type | Description |
tags | array | Tag names to remove |
Responses
| Status | Description | Schema |
200 | Updated tag list | TagArray |
GET/images/{id}/thumbnail
Download the static thumbnail
Parameters
| Name | In | Required | Description |
id | path | yes | Image ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | JPEG thumbnail | |
404 | Image or thumbnail not found | Error |
POST/relations
Declare a relation
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: type a b
| Field | Type | Description |
a | integer | Left image id. For directed types (version, derivative), `a` is the parent / source (older revision, derived-from). |
b | integer | Right image id. For directed types, the child / derivative. |
direction | string | Optional `ba` swaps left/right; default `ab` treats `a` as the parent/source side. |
type | string | One of: duplicate, alternate, version, derivative, not_related |
Responses
| Status | Description | Schema |
201 | Relation created | |
400 | Invalid request (self-relation, unknown type, missing ids) | Error |
409 | Pair carries a conflicting relation already; remove it first. | Error |
DELETE/relations
Remove a declared relation
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: type
| Field | Type | Description |
a | integer | Required for version / derivative / not_related; either order is accepted. |
b | integer | Pair partner for a. |
group_id | integer | Required for dissolve_dup / dissolve_alt / promote_original. |
image_id | integer | Required for duplicate / alternate (the member to unlink); the new original for promote_original. |
root_id | integer | Required for dissolve_version / dissolve_derivative; any chain or tree member id (the walker locates the root). |
type | string | One of: duplicate, alternate, version, derivative, not_related, dissolve_dup, dissolve_alt, dissolve_version, dissolve_derivative, promote_original |
Responses
| Status | Description | Schema |
204 | Removed (idempotent) | |
400 | Invalid request | Error |
List tags
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
q | query | no | Prefix filter |
category | query | no | Filter by category name |
sort | query | no | Sort field (usage, alpha) |
page | query | no | Page number |
limit | query | no | Results per page (default 100, max 500) |
show_zero | query | no | Hide zero-usage non-alias tags ('0' to opt out). Default surfaces them so the API total matches the /tags page total. |
origin | query | no | Filter by stored creation origin ('user', a booru site, 'ptr', an auto-tagger name, ...). The legacy 'alias' value narrows to alias rows. Empty (default) returns every tag. |
type | query | no | Structural filter: 'tag' (non-alias rows), 'alias' (alias rows). Empty (default) returns both. |
Responses
POST/tags
Create a tag (get-or-create)
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: name
| Field | Type | Description |
category | string | Category name; defaults to general. |
name | string | |
Responses
| Status | Description | Schema |
201 | The tag (created, or the existing row when the name already exists in the category) | TagRow |
400 | Missing name, unknown category, or invalid tag name | Error |
POST/tags/aliases
Create an alias
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: name canonical_id
| Field | Type | Description |
canonical_id | integer | The tag this alias resolves to. |
category | string | Category for the alias; defaults to general. |
name | string | Alias name. |
Responses
| Status | Description | Schema |
201 | The alias row | TagRow |
400 | Missing fields or an invalid alias target | Error |
404 | Canonical tag not found | Error |
409 | The name already names a tag with image_tags rows; merge it instead | Error |
POST/tags/merge
Merge one tag into another
Parameters
| Name | In | Required | Description |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: alias_id canonical_id
| Field | Type | Description |
alias_id | integer | Tag to retire; becomes an alias of canonical_id and its image_tags move onto it. |
canonical_id | integer | Surviving tag. |
Responses
| Status | Description | Schema |
200 | The canonical tag | TagRow |
400 | Self-merge, missing ids, or a merge into an alias | Error |
Rename a tag and/or move it to another category
Parameters
| Name | In | Required | Description |
id | path | yes | Tag ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
| Field | Type | Description |
category | string | Move to this category by name. |
name | string | New name. |
Responses
| Status | Description | Schema |
200 | Updated tag | TagRow |
400 | No fields supplied, or a rating-tag edit | Error |
404 | Tag not found | Error |
409 | A tag with the new name already exists in the target category | Error |
Delete a tag
Parameters
| Name | In | Required | Description |
id | path | yes | Tag ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
204 | Deleted (rating-category rows are usage-stripped; the catalog row stays) | |
404 | Tag not found | Error |
List a tag's implications
Parameters
| Name | In | Required | Description |
id | path | yes | Parent tag ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
200 | Direct implications | |
404 | Parent tag not found | Error |
POST/tags/{id}/implications
Declare an implication
Parameters
| Name | In | Required | Description |
id | path | yes | Parent tag ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Request body
Content-Type: application/json
Required: implied_id
| Field | Type | Description |
implied_id | integer | Existing tag id the parent implies. Both sides must be canonical (non-alias). |
Responses
| Status | Description | Schema |
200 | Edge already declared (no-op) | |
201 | Edge created | |
400 | Missing implied_id, self-implication, or an alias on either side | Error |
404 | Parent or implied tag not found | Error |
409 | Edge would close a cycle | Error |
Remove an implication
Parameters
| Name | In | Required | Description |
id | path | yes | Parent tag ID |
impliedID | path | yes | Implied tag ID |
gallery | query | no | Target gallery name; omit for the active gallery (also accepted as X-Monbooru-Gallery header) |
Responses
| Status | Description | Schema |
204 | Removed | |
404 | Edge not found | Error |
Schemas
APIInfo
| Field | Type | Description |
api | string | |
docs | string | |
openapi | string | |
Category
| Field | Type | Description |
color | string | |
id | integer | |
is_builtin | boolean | |
name | string | |
CreateImageResponse
| Field | Type | Description |
autotag | string · nullable | Human-readable status about the auto-tag job |
image | | |
tag_warnings | array · nullable | |
DuplicateImageResponse
| Field | Type | Description |
alias_added | boolean | True when the posted path was recorded as an alias of the existing image (JSON path-reference); false when a redundant multipart upload was discarded |
image | | |
merge | | |
tag_warnings | array · nullable | |
EnrichResponse
| Field | Type | Description |
merge | | |
tag_warnings | array · nullable | |
verified | boolean | False when verify was requested but the source reported no md5 |
Error
| Field | Type | Description |
code | string | |
error | string | |
Gallery
| Field | Type | Description |
active | boolean | True for the gallery used when no ?gallery= selector is given |
images | integer | Visible (non-missing) image count |
name | string | |
tags | integer | Non-alias tag count |
Image
| Field | Type | Description |
aliases | array | |
annotations | array | Positional note boxes pulled per source, in original-image pixel coordinates. Omitted when empty. |
auto_tagged_at | string · nullable | |
canonical_path | string | |
collection | string | Home collection label - mirrors the first entry of 'collections'. Empty string when unset. Filtered by the search keyword 'collection:' (exact match). Settable on create and via PATCH /images/{id}. |
collection_order | integer · nullable | 1-based position within the home collection. Null when unset. Settable on create and via PATCH /images/{id}. |
collections | array | Every collection the image belongs to. The scalar collection / collection_order fields mirror the home membership. Managed through the web UI; the API sets only the home via collection / collection_order. |
file_size | integer | |
file_type | string | |
height | integer · nullable | |
id | integer | |
ingested_at | string | |
is_favorited | boolean | |
is_inbox | boolean | true = needs triage (sits in the inbox); false = curated. New ingests default to true. |
is_missing | boolean | |
note | string | Operator's freeform note. Never written by a push, enrich, or import. |
origin | string | How the image got into the gallery: 'ingest' for watcher/sync, 'upload' for the web UI, or any caller-supplied string (app name, URL...) set via POST /images with 'via' |
original_source | string | Operator's image-level original source URL. Never written by a push, enrich, or import. |
page_count | integer · nullable | Number of pages for cbz / manga rows; null on every other file type. |
phash | string · nullable | 16-char hex perceptual hash; null until the phash backfill or ingest has populated it. |
sha256 | string | |
source | string | Site label of the primary (first) entry of 'sources'. Empty string when the image has no origin. Filtered by the search keyword 'source:' which matches any of the image's sources. Settable on create and via PATCH /images/{id}. |
source_type | string | Generation-tool source: 'a1111', 'comfyui', 'a1111,comfyui', or 'none'. Filtered by the search keyword 'ai:'. |
sources | array | Every origin the image came from. The scalar source / url fields mirror the primary (first) origin. Managed through the web UI; the API sets only the primary via source / url. |
tags | array | |
thumbnail_url | string | |
url | string | URL of the primary (first) entry of 'sources'. Empty string when the image has no origin. Must start with http:// or https://. Settable on create and via PATCH /images/{id}. |
width | integer · nullable | |
ImageRelations
| Field | Type | Description |
alternate_group | object · nullable | |
derivative_source | integer · nullable | id of the source image when this image is a derivative; null otherwise. |
derivatives | array | |
duplicate_group | object · nullable | |
version_child | integer · nullable | id of the newer revision; null when this image is the chain leaf. |
version_parent | integer · nullable | id of the older revision; null when this image is the chain root. |
Implication
| Field | Type | Description |
implied_category | string | |
implied_id | integer | |
implied_name | string | |
parent_id | integer | |
MergeSummary
| Field | Type | Description |
rating_filled | boolean | True when the push supplied a rating and the image had none; an existing rating is never displaced |
source_added | boolean | |
tags_added | integer | |
tags_removed | integer | Tags this source contributed earlier and no longer lists |
PaginatedImages
| Field | Type | Description |
limit | integer | |
page | integer | |
results | array | |
total | integer | |
| Field | Type | Description |
limit | integer | |
page | integer | |
results | array | |
total | integer | |
Tag
| Field | Type | Description |
category | string | |
confidence | number · nullable | |
is_auto | boolean | |
name | string | |
tagger_name | string · nullable | Provenance identifier: auto-tagger subfolder name when is_auto, caller-supplied 'via' (e.g. app name) when manual, null for UI-driven user adds |
TagArray
(no fields)
TagRow
| Field | Type | Description |
category | string | |
color | string | |
id | integer | |
is_alias | boolean | |
last_used_at | string | ISO 8601; most recent application to an image. Absent when never applied. |
name | string | |
origin | string | Creation provenance label: 'user', a booru site, 'ptr', an auto-tagger name, an import label. Empty on rows predating the column. |
usage_count | integer | |