> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joinmarkt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Storefront

> Full public storefront payload for a subdomain.

Full public storefront payload for a subdomain — catalog bootstrap for Vite themes and storefront refresh.

Click **Try it** to call the live API from this page.

<ParamField path="subdomain" type="string" required>
  Vendor storefront subdomain (e.g. `acme`).
</ParamField>

## Response `200`

```json theme={null}
{
  "store": {
    "id": "…",
    "name": "Acme",
    "subdomain": "acme",
    "currency": "USD",
    "hasActiveCoupons": false
  },
  "stats": {
    "averageRating": 4.8,
    "feedbackCount": 12,
    "productsSold": 400,
    "totalCustomers": 210
  },
  "products": [],
  "groups": [],
  "feedback": [],
  "categories": []
}
```

### Product object

| Field      | Type   | Notes                         |
| ---------- | ------ | ----------------------------- |
| `id`       | string | Product CUID                  |
| `slug`     | string | URL slug                      |
| `name`     | string |                               |
| `price`    | number |                               |
| `stock`    | number | `-1` = unlimited              |
| `variants` | array? | `{ id, label, price, stock }` |

## Errors

`404` when subdomain missing or store banned:

```json theme={null}
{ "error": "Store not found" }
```

## Caching

Server revalidate **60s**. Response `Cache-Control: private, no-cache, no-store, must-revalidate`.
