Gear Goblins
All Gear Goblins endpoints are under /v1/games/gear-goblins.
Characters
GET /v1/games/gear-goblins/characters
List the caller's characters.
- Auth: Authenticated
Response — 200 OK
{
"characters": [
{
"id": 1184,
"name": "Gorbo",
"race_id": "id.race.goblin",
"class_id": "id.class.warrior",
"level": 7,
"zone": "id.zone.iron-mine",
"guild": null,
"gear_score": 142,
"created_at": "2026-04-01T00:00:00+00:00",
"updated_at": "2026-04-18T12:00:00+00:00"
}
]
}
POST /v1/games/gear-goblins/characters
Create a new character.
- Auth: Authenticated
- Rate limit: 10 / 60s
Request
{
"name": "Gorbo",
"raceId": "id.race.goblin",
"classId": "id.class.warrior"
}
| Field | Constraints |
|---|---|
name | 3–24 letters only (^\p{L}+$), globally unique. |
raceId | required. |
classId | required. Must be valid for the chosen race. |
Response — 201 Created
{
"character": { "…": "as on GET" }
}
Errors
| Code | Meaning |
|---|---|
400 | Invalid race, class not available for this race, or character limit reached. |
409 | Character name already taken. |
GET /v1/games/gear-goblins/characters/{id}
Get a single character owned by the caller.
- Auth: Authenticated
Response — 200 OK
{
"character": { "…": "as on list" }
}
Errors
| Code | Meaning |
|---|---|
404 | Character not found. |
PATCH /v1/games/gear-goblins/characters/{id}
Update a character. Currently only name is mutable.
- Auth: Authenticated
Request
{ "name": "Zorbo" }
Response — 200 OK
{
"character": { "…": "updated" }
}
Errors
| Code | Meaning |
|---|---|
400 | No fields to update. |
404 | Character not found. |
409 | Name already taken. |
DELETE /v1/games/gear-goblins/characters/{id}
Hard-delete a character. Removes all associated equipment, loadouts, progression, currencies, and zone progress. Irreversible.
- Auth: Authenticated
Response — 200 OK, empty body.
Errors
| Code | Meaning |
|---|---|
404 | Character not found. |
POST /v1/games/gear-goblins/characters/check
Check whether a character name is available. Used for live feedback in the character creation form.
- Auth: Public
- Rate limit: 30 / 60s
Request
{ "name": "Gorbo" }
name is 3–24 letters (^\p{L}+$).
Response — 200 OK
{
"name": { "available": false }
}
State
GET /v1/games/gear-goblins/characters/{id}/state
Full game state for a single character in one call: character record plus equipment, spellbook, active loadout, progression, zone progress, and currency.
- Auth: Authenticated
Response — 200 OK
{
"character": {
"id": 1184,
"name": "Gorbo",
"race_id": "id.race.goblin",
"class_id": "id.class.warrior",
"level": 7,
"zone": "id.zone.iron-mine",
"guild": null,
"gear_score": 142
},
"equipment": [
{
"slot_id": "id.slot.main-hand",
"item": {
"id": 482,
"archetype_id": "id.archetype.rusty-sword",
"rarity_id": "id.rarity.uncommon",
"quality_id": "id.quality.fine",
"ilvl": 8,
"modifiers": [],
"sockets": [],
"enchant_id": null,
"quantity": 1
}
}
],
"spellbook": [
{
"spell_id": "id.spell.strike",
"source": "class",
"source_id": null,
"rank": 1
}
],
"loadout": {
"id": 14,
"name": "Melee",
"icon": null,
"slots": [
{
"zone": "primary",
"position": 0,
"spell_id": "id.spell.strike",
"cast_count": 42,
"gates": []
}
]
},
"progression": {
"xp": 4200,
"rested_xp": 0,
"zone_id": "id.zone.iron-mine",
"node_id": "id.node.entrance",
"wave": 3,
"encounter_seed": "abc123",
"is_idle": true,
"idle_since": "2026-04-18T11:00:00+00:00"
},
"zone_progress": [
{
"zone_id": "id.zone.iron-mine",
"node_id": "id.node.entrance",
"status": "cleared",
"completions": 12,
"best_time": 187
}
],
"currency": {
"id.currency.gold": 2840,
"id.currency.scrap": 118
}
}
Errors
| Code | Meaning |
|---|---|
404 | Character not found. |
News
GET /v1/games/gear-goblins/news
List Gear Goblins news items. Currently a static list of announcements.
- Auth: Public
Response — 200 OK
{
"news": [
{
"id": 3,
"date": "2026-04-10",
"title": "Patch 0.4 — Guilds",
"excerpt": "Guilds arrive with shared vaults and raid bosses…",
"url": "https://geargoblins.com/news/patch-0-4"
}
]
}