# Prepare built-in vocabulary cards

Prepare flashcards from an enabled licensed built-in IELTS vocabulary set.

- Capability ID: `vocabulary.builtin.prepare_cards`
- Operation: `ielts_vocabulary_builtin_prepare_cards`
- Category: 词汇
- Endpoint: `POST /api/v1/agent/capabilities/ielts_vocabulary_builtin_prepare_cards`
- Authentication: Bearer Token（通过 /api/v1/agent-bindings 绑定账号）
- Required scopes: vocabulary:read
- Side effect: read
- Human documentation: https://ieltsbuddy.igopx.cn/developers/api/ielts_vocabulary_builtin_prepare_cards

## Request parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `excludeRecentlyReviewedDays` | number | 否 | Avoid words reviewed in the last N days when possible. |
| `groupId` | string | 否 | Optional built-in wordbook group id. |
| `includeMastered` | boolean | 否 | Whether mastered words may be selected. |
| `learningState` | string | 否 | Optional learning-state filter. |
| `limit` | number | 否 | Number of local flashcards to prepare. |
| `mode` | string | 否 | Card selection strategy. |
| `query` | string | 否 | Optional phrase, meaning, or usage search filter. |
| `setId` | string | 否 | Built-in wordbook id. |

## Request example

```bash
curl -X POST \
  'https://work.ieltsbuddy.igopx.cn/api/v1/agent/capabilities/ielts_vocabulary_builtin_prepare_cards' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $IELTS_BUDDY_TOKEN' \
  --data '{"excludeRecentlyReviewedDays":3,"groupId":"","includeMastered":false,"learningState":"","limit":8,"mode":"mixed","query":"","setId":"core"}'
```

## Request schema

```json
{
  "type": "object",
  "properties": {
    "excludeRecentlyReviewedDays": {
      "default": 3,
      "description": "Avoid words reviewed in the last N days when possible.",
      "type": "integer",
      "minimum": 0,
      "maximum": 90
    },
    "groupId": {
      "default": "",
      "description": "Optional built-in wordbook group id.",
      "type": "string"
    },
    "includeMastered": {
      "default": false,
      "description": "Whether mastered words may be selected.",
      "type": "boolean"
    },
    "learningState": {
      "default": "",
      "description": "Optional learning-state filter.",
      "type": "string",
      "enum": [
        "",
        "new",
        "learning",
        "review",
        "relearning",
        "mastered"
      ]
    },
    "limit": {
      "default": 8,
      "description": "Number of local flashcards to prepare.",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "mode": {
      "default": "mixed",
      "description": "Card selection strategy.",
      "type": "string",
      "enum": [
        "mixed",
        "due",
        "new",
        "weak",
        "random"
      ]
    },
    "query": {
      "default": "",
      "description": "Optional phrase, meaning, or usage search filter.",
      "type": "string"
    },
    "setId": {
      "default": "core",
      "description": "Built-in wordbook id.",
      "type": "string",
      "enum": [
        "core",
        "listening",
        "reading"
      ]
    }
  },
  "required": [
    "excludeRecentlyReviewedDays",
    "groupId",
    "includeMastered",
    "learningState",
    "limit",
    "mode",
    "query",
    "setId"
  ],
  "additionalProperties": false
}
```

## Response envelope

```json
{
  "code": 0,
  "data": {},
  "message": "ok"
}
```

## Errors

| HTTP | Code | Meaning |
| --- | --- | --- |
| 400 | `40001` | 请求参数不符合接口契约 |
| 401 | `40101` | 缺少或使用了无效的访问令牌 |
| 403 | `40301` | 访问令牌不包含接口所需权限 |
| 404 | `40401` | 接口或目标资源不存在 |
