Skip to main content
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
integer
Page number to retrieve. Defaults to 1.
pageSize
integer
Number of items per page. Defaults to the server-configured default. Capped at the server-configured maximum.
query
string
Free-text search query. Matches against file name, description, and alt text.
contentType
string
Filter by MIME content type. For example: image/png, image/jpeg.

Response

data
object

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

id
string (uuid)
required
The unique identifier of the asset.

Response

data
object
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

storageKey
string
required
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"