# Roadmap — 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.

> Discover and access structured learning roadmaps, detailed guides, interview questions, and community projects to build your development skills across different technologies and career paths. Search through curated learning content, explore topic breakdowns, and find project ideas tailored to your learning goals.

**Category:** Education | **Website:** [roadmap.sh/](https://roadmap.sh/) | **Docs:** [parse.bot/marketplace/c50b3c67-3b4a-4007-942c-4272c339abf6/roadmap-sh-api](https://parse.bot/marketplace/c50b3c67-3b4a-4007-942c-4272c339abf6/roadmap-sh-api)

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

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/roadmap/`
**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 clean roadmap nodes

Get a clean, hierarchical tree of learning nodes for a specified roadmap. Infers semantic parent-child relationships using spatial coordinates (bounding boxes, inclusion, overlap) and edge/connector chain traversal rather than DOM hierarchy. Normalizes node types (title, topic, subtopic, paragraph, section, label, button, roadmap) and filters out pure layout nodes (horizontal/vertical connectors, legends, linksgroups). Section nodes apply containment rules: a topic overlapping a section border flattens the section; a single label inside becomes the header; multiple labels split children by vertical proximity. Sibling nodes within 30px sharing no overlap inherit the same parent. Button nodes with dark-blue backgrounds are reclassified as 'roadmap' type with a url property. Enriches topic/subtopic nodes with descriptions and learning resources. Heavy endpoint — fetches individual topic details; a 45-second time budget limits fetches on very large roadmaps.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug identifier of the roadmap (e.g., 'frontend', 'backend', 'sql', 'devops'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-clean-roadmap-nodes \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get drawio roadmap nodes

Get a Draw.io-compatible flat graph representation of a roadmap. Applies the same spatial/edge-driven node classification as get_clean_roadmap_nodes but outputs a flat array of Draw.io cells (nodes and edges) instead of nested children. Node cells carry semantic metadata (type tags, descriptions, resources). Edge cells express all parent-child relationships with source/target, tagged 'dotted' for non-primary connections. Heavy endpoint — fetches individual topic details; a 45-second time budget limits fetches on very large roadmaps.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug identifier of the roadmap (e.g., 'frontend', 'backend', 'sql', 'devops'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-drawio-roadmap-nodes \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get guide content

Get the full content of a guide including title, rich text content (TipTap JSON), author info, and related guides. The guide_slug is the id field from list_guides results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `guide_slug` | string | Yes | The slug/id of the guide (e.g., 'what-is-internet', 'exponent'). Use the id field from list_guides results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-guide-content \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"guide_slug":"<string>"}'
```

### Get project detail

Get detailed specifications and requirements for a project, including content (rich text), difficulty level, skills, topics, and associated roadmap IDs. The slug is the id field from list_projects results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug of the project (e.g., 'single-page-cv', 'basic-html-website'). Use the id field from list_projects results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-project-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get question content

Get the full content of an interview question set including title, rich text content (TipTap JSON), and author information. The slug is the id field from list_questions results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug of the question set (e.g., 'react', 'javascript', 'python'). Use the id field from list_questions results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-question-content \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get roadmap detail

Get detailed metadata for a specific roadmap, including its full node graph, edges, questions, and SEO information. The nodes and edges define the visual flowchart graph. Heavy response — dozens of nodes per roadmap.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug identifier of the roadmap (e.g., 'frontend', 'backend', 'react', 'sql', 'devops'). |

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

### Get roadmap relations

Get relational data for one or more roadmaps. For each slug, returns: referenced roadmaps (other roadmaps linked via button nodes in the graph), related roadmaps (other roadmaps sharing significant topic overlap, sorted by shared topic count descending), associated projects (projects whose roadmapIds include this slug), associated guides (guides linked from the roadmap's topic tree), and associated questions (question sets matching the roadmap's topics). Fetches up to 15 other roadmaps for topic comparison. Invalid slugs return an error message per-slug without failing the whole request. Heavy endpoint — makes multiple upstream requests per slug.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slugs` | array | Yes | JSON array of roadmap slug strings to fetch relations for (e.g. ["frontend", "backend"]). Each slug is processed independently. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-roadmap-relations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slugs":"<array>"}'
```

### Get roadmap topics

Get the full hierarchical topic tree mapping for a roadmap. Returns an array of topic nodes with their IDs, text labels (hierarchical path like 'Frontend > Internet > How does the internet work?'), guides, and subjects. Use the nodeId values in get_topic_detail.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | The slug of the roadmap (e.g., 'frontend', 'backend', 'react'). |

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

### Get topic detail

Get detailed content for a specific roadmap topic node, including its markdown description and learning resources (articles, videos, courses). The node_id comes from get_roadmap_topics results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `node_id` | string | Yes | The unique node ID from get_roadmap_topics results (e.g., 'VlNNwIEDWqQXtqkHWJYzC'). |
| `roadmap_slug` | string | Yes | The slug of the roadmap (e.g., 'frontend', 'backend'). |
| `topic_slug` | string | Yes | The slug of the topic (e.g., 'internet', 'html', 'css'). Corresponds to the last segment of the hierarchical text path from get_roadmap_topics, lowercased and hyphenated. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/get-topic-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"node_id":"<string>","roadmap_slug":"<string>","topic_slug":"<string>"}'
```

### List guides

List all available guides. Returns an array of guide summaries with id, title, description, authorId, and updatedAt. The full catalog is returned in a single response.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/list-guides \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List projects

List all available project ideas. Returns an array of project summaries with id, title, description, and updatedAt. The full catalog is returned in a single response.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/list-projects \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List questions

List all available interview question sets. Returns an array of question set summaries with id, title, and updatedAt. The full catalog is returned in a single response.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/list-questions \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List roadmaps

List all available roadmaps. Returns an array of roadmap summaries including id, title, description, group, metadata tags, and last updated date. The full catalog is returned in a single response with no pagination.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/roadmap/list-roadmaps \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Search roadmaps

Search across all roadmaps, guides, questions, and projects by keyword. Matches against titles and descriptions. Returns all matching items in a single response — client-side filtering over the full page catalog.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | The search keyword (e.g., 'frontend', 'python', 'docker'). |

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

## Next steps

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