Endpoint
GET /api/hub/catalogs/{catalogId}/preview
Returns the first 10 products from a published Hub catalog, plus aggregate summary statistics. This endpoint does not require authentication and does not require a clone or subscription — it’s designed for evaluating a catalog before committing.
Returns 404 for private or unpublished catalogs.
Path parameters
| Parameter | Type | Required | Description |
|---|
catalogId | string | Yes | The Hub catalog ID (from the browse endpoint) |
Response
{
"catalogId": "hub_cat_9x8k2m",
"name": "Spring 2026 Apparel",
"products": [
{
"id": "prod_preview_1",
"title": "Blue Linen Blazer",
"sku": "BLZ-BLUE-M",
"brand": "EuroStyle",
"categoryPath": "Apparel > Outerwear > Blazers",
"price": 89.99,
"currency": "USD",
"primaryImageUrl": "https://cdn.example.com/blz-blue-m.jpg",
"score": 85,
"availability": "in_stock"
}
],
"summary": {
"total": 512,
"avgScore": 78,
"topCategories": [
{ "name": "Apparel > Tops", "count": 145 },
{ "name": "Apparel > Outerwear", "count": 98 },
{ "name": "Apparel > Bottoms", "count": 87 }
],
"topBrands": [
{ "name": "EuroStyle", "count": 210 },
{ "name": "MediterraFashion", "count": 156 },
{ "name": "AlpinaWear", "count": 88 }
]
}
}
Product fields (preview)
| Field | Type | Description |
|---|
id | string | Stable product ID within this Hub catalog |
title | string | Product name |
sku | string | Stock-keeping unit |
brand | string | Brand name |
categoryPath | string | Full category path |
price | number | Selling price |
currency | string | ISO 4217 code |
primaryImageUrl | string | Main product image |
score | number | Optimization score (0–100) |
availability | string | "in_stock", "out_of_stock", or "preorder" |
Summary fields
| Field | Type | Description |
|---|
total | number | Total products in the catalog |
avgScore | number | Average optimization score |
topCategories | array | Top 5 categories by product count |
topBrands | array | Top 5 brands by product count |
Examples
# Preview a Hub catalog (no authentication required)
curl "https://app.alana.shopping/api/hub/catalogs/hub_cat_9x8k2m/preview"
Usage pattern
Preview is typically used before cloning or subscribing:
Error responses
| HTTP status | Code | Description |
|---|
| 404 | CATALOG_NOT_FOUND | Catalog does not exist, is private, or has been unpublished |
| 429 | RATE_LIMIT_EXCEEDED | 60 requests/minute for public endpoint |
Private catalogs always return 404 — the same response as non-existent catalogs. This prevents enumeration of private catalog IDs.