overthewire.org APIoverthewire.org ↗
Access OverTheWire wargame listings, level goals, SSH connection details, community rules, and suggested progression order via a structured REST API.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/1cdf4da6-8aaf-471c-b2d5-f9fb1d571fe7/get_wargames_list' \ -H 'X-API-Key: $PARSE_API_KEY'
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.
No input parameters required.
{
"type": "object",
"fields": {
"Online": "array of wargame objects with name, short_name, and url",
"Offline": "array of wargame objects with name, short_name, and url",
"Released": "array of wargame objects with name, short_name, and url"
},
"sample": {
"data": {
"Online": [
{
"url": "https://overthewire.org/wargames/bandit",
"name": "Bandit",
"short_name": "bandit"
}
],
"Offline": [
{
"url": "https://overthewire.org/wargames/semtex",
"name": "Semtex",
"short_name": "semtex"
}
],
"Released": [
{
"url": "https://overthewire.org/wargames/abraxas",
"name": "Abraxas",
"short_name": "abraxas"
}
]
},
"status": "success"
}
}About the overthewire.org API
The OverTheWire API exposes 9 endpoints covering every wargame available on overthewire.org, from the full categorized wargame list to per-level goal text and SSH connection parameters. get_level_info returns the goal description for any specific level by wargame name and level number, while get_ssh_connection_info gives you the hostname, port, and initial username needed to connect without visiting the site manually.
Wargame Listings and Metadata
get_wargames_list returns all wargames grouped into three arrays — Online, Offline, and Released — each entry containing name, short_name, and url. To go deeper on any single game, get_wargame_info accepts a wargame_name string (e.g. 'bandit' or 'natas') and returns the SSH host, port, display title, and a full levels array with each level's title and URL.
Level Details
get_level_info accepts wargame_name and a zero-indexed level_number and returns the goal text scraped from that level's page along with its url. For Natas specifically — a web-exploitation track — get_natas_level_info is a focused shortcut that returns the same shape but always sets wargame to 'natas', with the goal field including credentials and the in-game URL for that level. To pull every level for a wargame at once, get_all_levels_for_wargame returns a levels array with level, goal, and url for each entry, plus a top-level count. Note that this endpoint fetches each level page individually, so response time scales with the number of levels in the chosen wargame.
Connection Info, Rules, and Progression
get_ssh_connection_info returns hostname, port, and user (typically the wargame name followed by 0) for any shell-based wargame. get_rules returns the full community rules text as a single rules string. get_wargame_suggested_order returns an order array of strings describing the recommended sequence for working through the wargames — useful for building onboarding flows or curricula. get_released_wargame_info covers wargames listed under the Released category, returning a description field with the full text from that wargame's page.
- Build a CLI tool that pulls SSH connection info from
get_ssh_connection_infoand opens a session automatically. - Generate a study guide by fetching all level goals for a wargame using
get_all_levels_for_wargame. - Display the suggested wargame progression from
get_wargame_suggested_orderin a learning-path dashboard. - Sync the current wargame catalog with
get_wargames_listto detect when new challenges go online or offline. - Populate a CTF reference app with Natas credentials and URLs using
get_natas_level_infofor each level. - Embed community rules from
get_rulesinto onboarding flows for security training platforms. - Compare level counts across wargames by aggregating the
countfield fromget_all_levels_for_wargamecalls.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OverTheWire have an official developer API?+
What does `get_wargame_info` return compared to `get_ssh_connection_info`?+
get_wargame_info returns the full wargame metadata including title, SSH host, port, and the complete levels array with each level's title and URL. get_ssh_connection_info is a narrower endpoint that returns only hostname, port, and the initial user string — the three values needed to form an SSH command. Both accept wargame_name as input.Are player solutions, forum threads, or spoilers available through this API?+
Is level goal text always plain text, or can it contain code or commands?+
goal field is returned as a string extracted from the level page. Some levels include shell commands, file paths, or credential strings inline with the instructional text. The field is not further structured, so any parsing of commands or credentials is left to the caller.Does the API cover offline or released wargames the same way as online ones?+
get_wargames_list returns all three categories — Online, Offline, and Released — with name and URL for each. However, get_released_wargame_info only returns a description field for released wargames; it does not return a levels array or SSH connection details the way get_wargame_info does for online wargames. You can fork the API on Parse and revise to extend level parsing to released wargame pages if that structure exists.