# Get review settings

Source: https://workroad.app/docs/api/get-review-settings

`GET https://workroad.app/api/v1/settings/review`

Daily new-card and review limits, FSRS desired retention, the daily goal, leech handling and per-subject overrides.

- MCP tool: `getReviewSettings` on `https://workroad.app/api/mcp`
- Required scopes: settings:view
- Test mode: `GET https://workroad.app/api/test/v1/settings/review` checks the request and returns the example response without changing anything.

## Response

`200` OK

- `data`: object, required
  - `newPerDay`: integer, required. New cards introduced a day.
  - `reviewsPerDay`: integer or null, required. Reviews a day. Null: no limit.
  - `retention`: number, required. FSRS desired retention, the chance of recalling a card when it comes due, from 0.7 to 0.99.
  - `goalKind`: one of `"cards"`, `"minutes"`, required. Whether the daily goal counts cards reviewed or minutes studied.
  - `goalTarget`: integer, required. The daily goal, in `goalKind` units.
  - `leechThreshold`: integer, required. Lapses after which a card is marked a leech.
  - `suspendLeeches`: boolean, required. Leeches are suspended automatically.
  - `subjectOverrides`: array of objects, required. Limits and retention that differ for one subject.
    - `subjectId`: string (uuid), required
    - `newPerDay`: integer or null, required. New cards a day for this subject, within the global limit. Null: no limit.
    - `reviewsPerDay`: integer or null, required. Reviews a day for this subject. Null: no limit.
    - `retention`: number or null, required. Desired retention for this subject. Null: the global value.
  - `optimizedAt`: string (date-time) or null, required. When the FSRS optimizer last fitted this user's weights, or null.

### Example

```json
{
  "data": {
    "newPerDay": 20,
    "reviewsPerDay": null,
    "retention": 0.9,
    "goalKind": "cards",
    "goalTarget": 30,
    "leechThreshold": 8,
    "suspendLeeches": true,
    "subjectOverrides": [
      {
        "subjectId": "5f0c1d2e-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
        "newPerDay": 10,
        "reviewsPerDay": null,
        "retention": 0.95
      }
    ],
    "optimizedAt": null
  }
}
```

## Errors

Every error has the body `{ "error": { "code", "message", "details" } }`.

- `400`: Invalid request body or query
- `401`: Missing, invalid, disabled or expired API key
- `403`: The API key lacks the required scope
- `404`: No endpoint exists at this path.
- `405`: Method not allowed. Use a method from the Allow header.
- `429`: Rate limit exceeded. Wait for Retry-After before retrying. The rate-limit headers are absent when the key's own limiter rejected the request before the per-endpoint bucket check ran.
- `500`: Internal server error
