# GET /sandbox/products — Sandbox products

A fixed test catalog.

The sandbox mirrors the shape of live responses but never touches the balance, orders or statistics. Any valid `X-Entity-Key` works.

Each product deterministically produces one outcome — like test card numbers in payment systems.

Authorization: header `X-Entity-Key`.

**Responses**

- `200 OK` — Sandbox catalog

```json
{
  "status": "success",
  "sandbox": true,
  "products": [
    {
      "id": "sandbox-success",
      "title": "[Sandbox] Always succeeds",
      "price": 100,
      "currency": "RUB",
      "region": "all",
      "platform": "all",
      "isAvailable": true,
      "images": {
        "42x42": null,
        "156x156": null,
        "512x512": null
      }
    },
    {
      "id": "sandbox-insufficient-balance",
      "title": "[Sandbox] Always fails: insufficient balance",
      "price": 100,
      "currency": "RUB",
      "region": "all",
      "platform": "all",
      "isAvailable": true,
      "images": {
        "42x42": null,
        "156x156": null,
        "512x512": null
      }
    },
    {
      "id": "sandbox-unavailable",
      "title": "[Sandbox] Always unavailable",
      "price": 100,
      "currency": "RUB",
      "region": "all",
      "platform": "all",
      "isAvailable": false,
      "images": {
        "42x42": null,
        "156x156": null,
        "512x512": null
      }
    }
  ]
}
```

- `401 Unauthorized` — No key

```json
{
  "status": "error",
  "message": "Missing X-Entity-Key header"
}
```

- `403 Forbidden` — Invalid key

```json
{
  "status": "error",
  "message": "Invalid entity key"
}
```

- `429 Too Many Requests` — Rate limited

```json
{
  "status": "error",
  "message": "Too many requests, try again later"
}
```

Web version: https://docs.merchant.dbdlobby.com/en/reference/sandbox-products
