viewa/docs
API Reference

List products

GET
/products

The published products in your catalog, ordered by the instance's configured priority then name. A child instance reads its parent's catalog, narrowed to the subset configured for it; products outside that subset are absent, exactly as if they did not exist. Products that publish styles are never listed — see the Product schema for how to model each look as its own product. Send Accept: text/toon to receive the same envelope encoded as TOON (see Catalog concepts); JSON is the default and errors are always problem+json.

Authorization

AuthorizationBearer <token>

Publishable key (browser-safe), sent as Authorization: Bearer pk_…. This is the lower API-key tier and is sufficient for browser-safe routes that require the pk tier. Requests using a publishable key are additionally validated against the key's domain allowlist via the Origin header. Used for upload, areas, renders, polling, catalog reads, and history (history additionally requires a visitor token).

In: header

Query Parameters

page?integer

1-based page number.

Range1 <= value
Default1
limit?integer

Items per page.

Range1 <= value <= 100
Default20
category?string

Restrict to a product category by slug. Matches the category itself and any of its descendants. An unrecognized slug is a filter that matches nothing — a 200 with an empty page, not a 404.

Response Body

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/products?category=roller-blinds"
{  "data": [    {      "id": "prod_3xK9aQ0ZbW7mNc2LpRvT",      "name": "Elite Roller Blind",      "description": "string",      "image": {        "url": "https://api.viewa.com/api/media/file/roller-charcoal-512.jpg",        "alt": "Charcoal roller blind"      },      "restrictions": {        "width": {          "min": 300,          "max": 3000        },        "height": {          "min": 300,          "max": 2700        },        "sceneOnly": true      },      "categories": [        {          "slug": "roller-blinds",          "name": "Roller Blinds"        }      ]    }  ],  "pagination": {    "page": 1,    "limit": 1,    "totalItems": 0,    "totalPages": 0  }}