# CFA Institute — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access the complete CFA Program curriculum across all three levels, including topics, learning modules, and Learning Outcome Statements directly from official CFA Institute materials. Search and retrieve structured exam content to study efficiently, compare learning objectives, or build study tools.

**Category:** Education | **Website:** [www.cfainstitute.org/](https://www.cfainstitute.org/) | **Docs:** [parse.bot/marketplace/3320ad97-e1b8-4abf-8148-0d9ac24f4392/cfainstitute-org-api](https://parse.bot/marketplace/3320ad97-e1b8-4abf-8148-0d9ac24f4392/cfainstitute-org-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/cfa-institute/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get curriculum

Get the full CFA curriculum for a specific level, including all topics, modules within each topic, and every Learning Outcome Statement (LOS). Each LOS starts with an action verb (explain, describe, calculate, etc.). Level III includes three pathways: Portfolio Management, Private Markets, and Private Wealth.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level` | string | Yes | CFA exam level: I, II, or III |
| `year` | string | No | Curriculum year (2025 or 2026) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cfa-institute/get-curriculum \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"level":"<string>","year":"<string>"}'
```

### Get topics overview

Get a high-level overview of all topics with exam weight percentages for a specific CFA level. Returns topic names, session numbers, and weight ranges without module/LOS details. Lighter-weight than get_curriculum since it scrapes HTML rather than downloading PDFs.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level` | string | Yes | CFA exam level: I, II, or III |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cfa-institute/get-topics-overview \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"level":"<string>"}'
```

### Search los

Search Learning Outcome Statements (LOS) by keyword across one or all CFA levels. Returns matching LOS with their topic, module, level, pathway, and action verb. Performs case-insensitive substring matching against the full LOS text.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level` | string | No | Filter by CFA level: I, II, or III. If omitted, searches all levels. |
| `query` | string | Yes | Search keyword to match against LOS text (case-insensitive substring match) |
| `year` | string | No | Curriculum year (2025 or 2026) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cfa-institute/search-los \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"level":"<string>","query":"<string>","year":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.