# GET /api/v1/products

> The purchasable product catalogue

- Group: products
- Tier: R
- Required scope: read:orders
- Docs: https://api.inleed.com/reference/products/list-products

## Description

Returns the `categories[]`, their `types[]` and each type's `plans[]` with prices per period. Filter to one category via the path (`/products/hosting`) or `?category=`. For a single TLD's registration pricing use `/products/domains/{tld}`.

## Query parameters

- `category` — string. Optional: one category, e.g. hosting, vps, vpn, storage.
- `currency` — enum. Price currency. Omit for SEK. One of SEK, EUR.

## Request

```bash
curl -X GET "https://mcp.inleed.com/api/v1/products?category=example.se&currency=SEK" \
  -H "Authorization: Bearer inl_live_…"
```

## Errors

- **401** No token was presented, or the token is revoked, expired or unknown. — codes: unauthorized, token_expired, token_revoked
- **403** The token lacks a required scope, or this account does not own the resource. — codes: insufficient_scope
- **422** Validation error — codes: validation_failed
- **429** The rate limit for this token is exhausted. See `Retry-After`. — codes: rate_limited
- **500** Something went wrong on our side. The failure is logged against `requestId`. — codes: internal_error

## Related

- GET /api/v1/products/{category} — https://api.inleed.com/reference/products/list-products-2
- GET /api/v1/products/domains/{tld} — https://api.inleed.com/reference/products/get-tld-product

