> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.wynncraft.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.wynncraft.com/_mcp/server.

# Get class detail

GET https://api.wynncraft.com/v3/classes/{class_name}

This endpoint is cached for 1 hour in the SHARED cache source.   See [Caching](/welcome#caching).  This endpoint belongs to the SHARED rate-limit bucket. See [Throttling and Rate Limits](/welcome#throttling-and-rate-limits).

Reference: https://docs.wynncraft.com/modules/classes/get-class

## Request

### Path parameters

- `class_name` (enum, required)
  - Allowed values: `archer`, `warrior`, `assassin`, `mage`, `shaman`

## Response

### 200

Class detail.

- `id` (string, required)
- `name` (string, required)
- `lore` (string, required)
- `overallDifficulty` (integer, required)
- `overallMax` (integer, required)
- `archetypes` (map from string to ClassArchetype, required)

## Errors

### 400 Bad Request Error

Invalid class tree identifier.

- `error` (string, required)
- `detail` (string, required)
- `code` (integer, required)

### 500 Internal Server Error

Class metadata could not be loaded.

- `error` (string, required)
- `detail` (string, required)
- `code` (integer, required)

## Types

### ClassArchetype

- `name` (string, required)
- `difficulty` (integer, required)
- `max` (integer, required)
- `icon` (string, required)
- `damage` (integer, required)
- `defence` (integer, required)
- `range` (integer, required)
- `speed` (integer, required)

## Examples

**Response**

```json
{
  "id": "archer",
  "name": "Archer (Hunter)",
  "lore": "Precision is the key to victory. The archer sits comfortably at range to decimate their enemies with powerful projectiles. Evading and dodging enemies attacks is crucial to the playstyle of this class. Archers dish out huge amounts of damage, but aren’t so adept at defending themselves.",
  "overallDifficulty": 1,
  "overallMax": 3,
  "archetypes": {
    "boltslinger": {
      "name": "&e&lBoltslinger",
      "difficulty": 1,
      "max": 3,
      "icon": "abilityTree.boltslinger",
      "damage": 3,
      "defence": 1,
      "range": 2,
      "speed": 3
    },
    "sniper": {
      "name": "&d&lSharpshooter",
      "difficulty": 2,
      "max": 3,
      "icon": "abilityTree.sharpshooter",
      "damage": 3,
      "defence": 1,
      "range": 3,
      "speed": 2
    },
    "trapper": {
      "name": "&2&lTrapper",
      "difficulty": 2,
      "max": 3,
      "icon": "abilityTree.trapper",
      "damage": 2,
      "defence": 2,
      "range": 2,
      "speed": 2
    }
  }
}
```

**SDK Code**

```python Archer class detail
import requests

url = "https://api.wynncraft.com/v3/classes/archer"

response = requests.get(url)

print(response.json())
```

```javascript Archer class detail
const url = 'https://api.wynncraft.com/v3/classes/archer';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Archer class detail
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.wynncraft.com/v3/classes/archer"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Archer class detail
require 'uri'
require 'net/http'

url = URI("https://api.wynncraft.com/v3/classes/archer")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java Archer class detail
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.wynncraft.com/v3/classes/archer")
  .asString();
```

```php Archer class detail
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.wynncraft.com/v3/classes/archer');

echo $response->getBody();
```

```csharp Archer class detail
using RestSharp;

var client = new RestClient("https://api.wynncraft.com/v3/classes/archer");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift Archer class detail
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.wynncraft.com/v3/classes/archer")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```