# Overthewire — 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 structured data from the OverTheWire wargames platform, including the full list of wargames, per-level goals and instructions, SSH connection details, community rules, and the recommended progression order. Supports lookups by wargame name or level number across all available challenges.

**Category:** Developer Tools | **Website:** [overthewire.org/](https://overthewire.org/) | **Docs:** [parse.bot/marketplace/f298c1a2-a4ae-401f-a4dd-b6bf99ed52fb/overthewire-org-api](https://parse.bot/marketplace/f298c1a2-a4ae-401f-a4dd-b6bf99ed52fb/overthewire-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-overthewire-org-api-f298c1a2/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_all_levels_for_wargame

Get detailed information for all levels of a specific wargame. Fetches each level page individually so may be slow for wargames with many levels. Returns the level count alongside the full level array.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `wargame_name` | string | Yes | The short name of the wargame (e.g. 'bandit', 'leviathan') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_all_levels_for_wargame \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wargame_name":"<string>"}'
```

### get_level_info

Get information about a specific level within a wargame, including the goal text and instructions extracted from the level page. The goal text contains the full content of the level page including commands needed and helpful reading material.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level_number` | integer | Yes | The level number (zero-indexed, e.g. 0 for the first level) |
| `wargame_name` | string | Yes | The short name of the wargame (e.g. 'bandit', 'natas', 'leviathan') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_level_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level_number":"<integer>","wargame_name":"<string>"}'
```

### get_natas_level_info

Get information for a specific Natas (web-based) level, including credentials and URL. Convenience endpoint equivalent to get_level_info with wargame_name='natas'. Natas levels are web-based challenges accessed via HTTP rather than SSH.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level_number` | integer | Yes | The level number (zero-indexed, e.g. 0 for the first level) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_natas_level_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level_number":"<integer>"}'
```

### get_released_wargame_info

Get information about a released/offline wargame, including its full description and instructions extracted from the wargame page. Released wargames are no longer actively hosted but their materials may be available for download.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `wargame_name` | string | Yes | The short name of the released wargame (e.g. 'abraxas', 'hes2010', 'monxla', 'kishi') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_released_wargame_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wargame_name":"<string>"}'
```

### get_rules

Get the community rules for the OverTheWire platform as plain text. Includes general conduct rules, educator guidelines, and legal information.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_rules \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_ssh_connection_info

Get SSH connection details for a shell-based wargame, including hostname, port, and initial username. The username is typically the wargame name followed by 0 (e.g. bandit0). Returns null host for wargames without active SSH servers.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `wargame_name` | string | Yes | The short name of the wargame (e.g. 'bandit', 'leviathan', 'narnia') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_ssh_connection_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wargame_name":"<string>"}'
```

### get_wargame_info

Get detailed information about a specific wargame, including SSH host, port, display title, and list of levels with URLs. The levels array contains one entry per level with title and direct URL. Host and port may be null for released/offline wargames without active servers.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `wargame_name` | string | Yes | The short name of the wargame as listed in the catalog (e.g. 'bandit', 'natas', 'leviathan', 'krypton', 'narnia', 'behemoth', 'utumno', 'maze', 'vortex', 'manpage', 'drifter', 'formulaone') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_wargame_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wargame_name":"<string>"}'
```

### get_wargame_suggested_order

Get the suggested play order for the wargames as a list describing the recommended progression path from beginner to advanced, starting with Bandit for Unix basics and progressing through web security, cryptography, and binary exploitation tracks.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_wargame_suggested_order \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_wargames_list

Get a categorized list of all available wargames grouped by status (Online, Offline, Released). Each entry includes the wargame display name, short name, and URL. Returns the full catalog in a single response.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-overthewire-org-api-f298c1a2/get_wargames_list \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```
