Skip to main content
An asset is the core unit in NekoHub. When you upload an image, NekoHub stores the file using your configured storage provider and creates an asset record that tracks everything about that image — its metadata, visibility, processing status, and any AI-generated enrichments.
All business data in NekoHub is shared across users. Assets are not owned by individual accounts — every authenticated user with the right permissions can view and manage all assets in the deployment.

Asset fields

The following fields are available on every asset:

Asset statuses

When an upload completes successfully, the asset moves to ready immediately. A ready asset means you can share its URL, run skills against it, and it will appear in the public gallery if isPublic is set to true.

Public vs private assets

Every asset has an isPublic flag that controls who can access it:
  • Public assets (isPublic: true) — appear in the public gallery at /gallery and are accessible to anyone without logging in. Their content is served via a direct public URL.
  • Private assets (isPublic: false) — are not listed in the gallery and cannot be accessed without authentication. Authenticated admin users can view private asset content through the protected /api/v1/assets/{id}/content endpoint.
You can toggle an asset’s visibility at any time from the admin console or via the API.

Asset derivatives

A derivative is a processed version of the original image produced by running an Asset Skill. For example, a skill might generate a resized thumbnail or a converted format variant. Each derivative has its own contentType, size, width, height, and publicUrl. Derivatives are listed on the asset detail view and are accessible alongside the original image.

Asset structured results

A structured result is AI-generated metadata attached to an asset after a skill run. For example, an image captioning skill produces a structured result containing the generated caption as a JSON payload. Structured results are returned in the structuredResults array on the asset detail response. Each result includes a kind that identifies what type of enrichment it represents, and a payloadJson containing the actual data.