Skip to main content
Skill builds are community-shareable ability loadouts. Each build stores the chosen hero, attribute, abilities, a title, description, and tags. Votes and favorites are tracked per Steam ID. All POST endpoints require the Auth-Key header. See Server API Overview for authentication details.

POST /createSkillBuild

Persists a new skill build to the database. Votes are initialised to zero and a Created timestamp is set automatically.

Request

POST /createSkillBuild
Auth-Key: <LodAuthKey>
Content-Type: application/x-www-form-urlencoded

data={...}
data
string
required
JSON-encoded skill build object.

Example request body

{
  "steamID": "76561197966504115",
  "heroName": "npc_dota_hero_pudge",
  "attribute": "strength",
  "abilities": ["pudge_meat_hook", "pudge_rot", "pudge_flesh_heap", "pudge_dismember"],
  "title": "Classic Pudge",
  "description": "Standard hook-and-rot build.",
  "tags": ["hook", "sustain"]
}

Response

success
boolean
true if the build was created successfully.
error
string
Error message string. Empty on success.
{ "success": true, "error": "" }

POST /removeSkillBuild

Deletes a skill build by ID. All UserFavorites rows referencing the build are deleted first.

Request

POST /removeSkillBuild
Auth-Key: <LodAuthKey>
Content-Type: application/x-www-form-urlencoded

data={...}
data
string
required
JSON-encoded removal request.

Example request body

{ "buildId": 42, "steamId": "76561197966504115" }

Response

Returns HTTP 200 with an empty body on success. Returns HTTP 401 if authentication fails.

GET /getSkillBuilds

Returns an ordered, paginated list of all skill builds. Each build includes aggregated up-vote and down-vote Steam ID lists.

Request

GET /getSkillBuilds?skip=0
skip
integer
required
Number of records to skip (0-based offset for pagination).

Response

Array of skill build objects ordered by creation date (oldest first).
id
integer
Database primary key.
abilities
string[]
Ability names in the build.
attribute
string
Primary attribute (strength, agility, intelligence).
description
string
Build description.
heroName
string
Internal hero name.
steamID
string
Author’s Steam ID.
tags
string[]
Tag strings.
title
string
Build title.
votes_Up
integer
Total upvote count.
votes_Down
integer
Total downvote count.
upVoteIds
string[]
Steam IDs of players who upvoted.
downVoteIds
string[]
Steam IDs of players who downvoted.
created
string
ISO 8601 creation timestamp.

Example response

[
  {
    "id": 1,
    "abilities": ["pudge_meat_hook", "pudge_rot", "pudge_flesh_heap", "pudge_dismember"],
    "attribute": "strength",
    "description": "Standard hook-and-rot build.",
    "heroName": "npc_dota_hero_pudge",
    "steamID": "76561197966504115",
    "tags": ["hook", "sustain"],
    "title": "Classic Pudge",
    "votes_Up": 5,
    "votes_Down": 1,
    "upVoteIds": ["76561198000000001", "76561198000000002"],
    "downVoteIds": ["76561198000000003"],
    "created": "2024-01-15T10:30:00"
  }
]

POST /setFavoriteSkillBuild

Adds or removes a skill build from a player’s favorites list.

Request

POST /setFavoriteSkillBuild
Auth-Key: <LodAuthKey>
Content-Type: application/x-www-form-urlencoded

data={...}
data
string
required
JSON-encoded favorite action.

Example request bodies

// Add to favorites
{ "fav": 1, "id": 42, "steamID": "76561197966504115" }

// Remove from favorites
{ "fav": 0, "id": 42, "steamID": "76561197966504115" }

Response

HTTP 200 with an empty body on success.

POST /voteSkillBuild

Casts an upvote or downvote on a skill build. Each Steam ID may only vote once per build — a second vote from the same player returns HTTP 400.

Request

POST /voteSkillBuild
Auth-Key: <LodAuthKey>
Content-Type: application/x-www-form-urlencoded

data={...}
data
string
required
JSON-encoded vote action.

Example request bodies

// Upvote
{ "id": 2, "steamID": "76561197966504115", "vote": 1 }

// Downvote
{ "id": 2, "steamID": "76561197966504115", "vote": 0 }

Response

StatusMeaning
200 OKVote recorded successfully.
400 Bad RequestPlayer has already voted on this build.
401 UnauthorizedMissing or invalid Auth-Key header.
404 Not FoundNo skill build with the specified id.

GET /getFavoriteSkillBuilds

Returns the list of skill build IDs that a player has favorited.

Request

GET /getFavoriteSkillBuilds?steamId=76561197966504115&playerId=76561197966504115
steamId
string
required
64-bit Steam ID of the player whose favorites are being retrieved.
playerId
string
Alias for steamId. Accepted but currently unused by the query logic.

Response

Array of integer build IDs.
[1, 5, 23, 44]

Build docs developers (and LLMs) love