NekoHub accepts image uploads through two paths: the admin console UI and the REST API. Both support the same options for visibility, storage provider, and AI enrichment.Documentation Index
Fetch the complete documentation index at: https://docs.nekohub.fengying.xin/llms.txt
Use this file to discover all available pages before exploring further.
Upload via the admin console
Select your file
Choose the image file you want to upload. You can also fill in optional fields:
- Description — a human-readable note about the asset (max 1000 characters)
- Alt text — accessibility text for the image (max 1000 characters)
- Public — controls whether the asset is publicly accessible (default: on)
- Storage provider — select a specific storage profile, or leave blank to use the default
Upload via the API
Send amultipart/form-data POST request to /api/v1/assets.
Request fields
| Field | Required | Default | Description |
|---|---|---|---|
file | Yes | — | The image file to upload |
description | No | — | Human-readable description (max 1000 chars) |
altText | No | — | Accessibility alt text (max 1000 chars) |
isPublic | No | true | Whether the asset is publicly accessible |
storageProviderProfileId | No | default provider | UUID of a specific storage provider profile |
runEnrichment | No | true | Whether to run AI enrichment after upload |
Example
Response
A successful upload returns202 Accepted with the asset record:
File validation rules
NekoHub enforces the following rules on every upload:- File is required — the
filefield must be present and non-empty. - Maximum file size — set by
FRONTEND_VITE_MAX_UPLOAD_SIZE_BYTES(default:10485760bytes / 10 MB). Uploads exceeding this limit are rejected with error codeasset_file_too_large. - Content type must be declared — the request must include a recognized MIME type. Unsupported types are rejected with
asset_content_type_not_allowed. - Description and alt text — each field is limited to 1000 characters.
Public vs. private assets
Assets can be public or private, controlled by theisPublic field.
- Public assets (
isPublic: true) are accessible at theirpublicUrlwithout authentication and appear in the public gallery at/gallery. - Private assets (
isPublic: false) can only be accessed by authenticated users through the protected endpointGET /api/v1/assets/{id}/content.