# List Playground problem sets

```http
GET /api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage1/playground/problem-sets
```

**Scope**: `playground.read`.

Returns the non-empty equational problem sets currently available for Stage 1 practice Runs.

Each summary describes the same ordered problem snapshot returned by [Get a Playground problem set](./get-playground-problem-set.md): `count` is the exact number of valid items in that detail response. Fetch the selected set before [creating a Run](./create-playground-run.md); do not assume an ID or index copied from an example will remain available.

## Query parameters

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :---: | :--- | :--- |
| `cursor` | string | No | — | Opaque cursor from the previous `nextCursor`. |
| `limit` | integer | No | `25` | Page size from `1` through `100`. |

Problem sets use the service-defined display order, with problem-set ID as the stable tie-breaker. Follow the shared [cursor traversal rules](../../../pagination.md).

## Response fields

| Field | Type | Description |
| :--- | :--- | :--- |
| `items` | [ProblemSetSummary](#problem-set-summary-fields)[] | Current problem-set summaries. |
| `nextCursor` | string \| null | Cursor for the next page, or `null` after the final page. |

### Problem-set summary fields

| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | string | Problem-set ID to send as `problems[].problemSet` in a Run request. |
| `title` | string | Human-readable title; falls back to `id` when no title is configured. |
| `count` | integer | Number of valid problems in the current ordered set. |

## Example request

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage1/playground/problem-sets?limit=25" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

## Example response

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": "pset_hard3",
        "title": "Hard problem set 3",
        "count": 40
      }
    ],
    "nextCursor": null
  }
}
```

## Errors

See [Errors](../../../errors.md). An invalid `cursor` or `limit` returns `400 MALFORMED_BODY`. An unavailable competition returns `404 NOT_FOUND`.
