Skip to main content

Overview

The Hub API provides programmatic access to the Marketplace Hub — the B2B content exchange where workspaces publish and discover product catalogs. The API supports both consumer operations (browse, preview, clone, subscribe) and publisher operations (analytics, unpublish).

Base URL

All Hub API endpoints use the following base:
https://app.alana.shopping/api/hub/

Endpoint groups

Browse Catalogs

GET /hub/catalogs — search and filter the public Hub feed

Preview

GET /hub/catalogs/{id}/preview — first 10 products + stats, no clone required

Clone & Subscribe

POST /hub/catalogs/{id}/clone and /subscribe — acquire catalog access

Sync & Conflicts

Subscription sync management and conflict resolution

Publisher Analytics

GET /hub/catalogs/{id}/analytics — views, clones, subscribers, revenue

Authentication

Public endpoints (no auth required)

The following endpoints are publicly accessible without authentication:
EndpointDescription
GET /api/hub/catalogsBrowse the public Hub feed
GET /api/hub/catalogs/{catalogId}/previewPreview a published catalog

Authenticated endpoints

All other endpoints require a Bearer token:
Authorization: Bearer sk_live_your_api_key_here
Write operations (clone, subscribe, analytics) require the API key to belong to a workspace with an active plan.

Rate limits

TierPublic endpointsAuthenticated endpoints
Unauthenticated60 requests/minute
Free60 requests/minute60 requests/minute
Pro60 requests/minute300 requests/minute
Business60 requests/minute600 requests/minute
EnterpriseCustomCustom
Rate limit headers are included in every response:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 294
X-RateLimit-Reset: 1742300400
When the limit is exceeded, a 429 response is returned with a Retry-After header.

HubCatalog object

The core object returned by Hub browse and preview endpoints:
{
  "id": "hub_cat_9x8k2m",
  "name": "Spring 2026 Apparel",
  "description": "500+ SKUs of curated spring apparel from top European brands.",
  "publisher": {
    "workspaceId": "ws_abc",
    "displayName": "EuroFashion Wholesale",
    "verified": true
  },
  "productCount": 512,
  "price": {
    "model": "free"
  },
  "category": "apparel",
  "tags": ["spring", "2026", "european"],
  "score": 78,
  "subscribers": 34,
  "publishedAt": "2026-02-01T09:00:00Z",
  "lastUpdatedAt": "2026-03-10T14:30:00Z",
  "version": 5
}

Error responses

All Hub endpoints return standard error shapes:
{
  "error": {
    "code": "CATALOG_NOT_FOUND",
    "message": "Catalog hub_cat_xyz does not exist or has been unpublished",
    "details": null
  }
}
Common error codes:
CodeHTTP statusDescription
CATALOG_NOT_FOUND404Hub catalog ID not found or unpublished
CATALOG_PRIVATE404Catalog exists but is private (returned as 404 to avoid enumeration)
ALREADY_SUBSCRIBED409Workspace already has an active subscription to this catalog
PAYMENT_REQUIRED402Paid catalog — complete Stripe Checkout before cloning/subscribing
INSUFFICIENT_PERMISSIONS403Operation not permitted for this API key
RATE_LIMIT_EXCEEDED429Too many requests — see Retry-After header
Last modified on March 18, 2026