Upload via the admin console
1
Open the Assets page
Navigate to
/assets in the admin console.2
Click Upload
Click the Upload button in the top-right corner of the page.
3
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
4
Submit
Click Upload. NekoHub stores the file and, if AI enrichment is enabled, begins processing in the background. The asset appears in the list with status
ready when complete.Upload via the API
Send amultipart/form-data POST request to /api/v1/assets.
Request fields
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.