Public asset endpoints let anyone browse and view assets that have been marked as public. No authentication is required.
List public assets
GET /api/v1/public/assets
Returns a paginated list of assets where isPublic is true and status is ready. Results are sorted by creation date, newest first.
Query parameters
Page number to retrieve. Defaults to 1.
Number of items per page. Defaults to the server-configured default. Capped at the server-configured maximum.
Free-text search query. Matches against file name, description, and alt text.
Filter by MIME content type. For example: image/png, image/jpeg.
Response
Array of public asset list items. Asset type. Currently always image.
The original filename at upload time.
MIME type (e.g. image/png).
Image width in pixels, if available.
Image height in pixels, if available.
Direct URL to access the asset content.
Timestamp when the asset was created.
Timestamp when the asset was last updated.
Number of items per page.
Total number of matching assets.
Example
curl "http://localhost:5121/api/v1/public/assets?page=1&pageSize=20&contentType=image/png"
{
"data" : {
"items" : [
{
"id" : "01956f8d-88e4-7c6a-a8f1-5f235293db7a" ,
"type" : "image" ,
"originalFileName" : "kitten.png" ,
"contentType" : "image/png" ,
"size" : 183204 ,
"width" : 800 ,
"height" : 600 ,
"publicUrl" : "http://localhost:5121/content/2026/03/10/kitten.png" ,
"description" : "A fluffy orange kitten" ,
"altText" : "Orange cat looking at camera" ,
"createdAtUtc" : "2026-03-10T12:00:00Z" ,
"updatedAtUtc" : "2026-03-10T12:00:00Z"
}
],
"page" : 1 ,
"pageSize" : 20 ,
"total" : 1
}
}
Get a public asset
GET /api/v1/public/assets/{id}
Returns the full detail of a single public asset, including its derivatives.
Path parameters
The unique identifier of the asset.
Response
Asset type. Currently always image.
The original filename at upload time.
File extension (e.g. .png).
Image width in pixels, if available.
Image height in pixels, if available.
Direct URL to access the asset content.
Timestamp when the asset was created.
Timestamp when the asset was last updated.
Derived versions of the asset (e.g. thumbnails). Show derivative properties
Type of derivative (e.g. thumbnail).
MIME type of the derivative.
File extension of the derivative.
Direct URL to access this derivative.
When the derivative was created.
Returns 404 Not Found with error code asset_not_found if the asset does not exist or is not public.
Example
curl "http://localhost:5121/api/v1/public/assets/01956f8d-88e4-7c6a-a8f1-5f235293db7a"
Serve asset content
GET /content/{storageKey}
Serves the raw binary content of a public asset directly. This URL is what publicUrl points to. You can embed it in <img> tags or download it directly.
This endpoint only serves assets with isPublic: true. Private asset content requires authentication and must be accessed via GET /api/v1/assets//content .
Path parameters
The storage key of the asset. This value comes from the publicUrl field in asset responses.
Example
curl -O "http://localhost:5121/content/2026/03/10/kitten.png"