# CFA Institute — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://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. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-cfainstitute-org-api-3320ad97/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## 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.paywithlocus.com/api/wrapped/parse-cfainstitute-org-api-3320ad97/get_curriculum \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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.paywithlocus.com/api/wrapped/parse-cfainstitute-org-api-3320ad97/get_topics_overview \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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.paywithlocus.com/api/wrapped/parse-cfainstitute-org-api-3320ad97/search_los \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level":"<string>","query":"<string>","year":"<string>"}'
```
