HOK API: dados de Honor of Kings para os seus programas Leia os heróis, itens, arcanos, feitiços, a tier list e os drafts de torneio de Honor of Kings Global, e os seus próprios scrims, a partir de um programa ou de um assistente de IA. Só leitura, grátis, com uma chave.
Obter uma chave
Autenticação
Cada endereço pede uma chave de API, enviada como token bearer. Uma chave só lê e vê o que o seu dono vê: os dados do jogo para todos, os seus scrims, tier lists e equipes para você.
A sua primeira chamada Copiarcurl -H "Authorization: Bearer hok_YOUR_KEY" http://127.0.0.1:3000/api/v1/heroes
O cabeçalho X-API-Key também funciona. Uma chave no endereço é ignorada: endereços acabam em registros.
Limites e erros
Cada chave pode fazer 120 pedidos por minuto. Os erros são JSON com um código estável:
Status code Significado 400 invalid_bodyA situação enviada ao único POST não é válida: o erro diz o que está errado. 401 unauthorizedSem chave, ou uma chave inválida, expirada ou revogada. 403 insufficient_scopeA chave não tem o escopo que este endereço exige. 404 not_foundEndereço desconhecido, ou algo que o dono da chave não pode ver. 405 method_not_allowedA API é somente leitura: use GET. 429 rate_limitedPedidos demais: aguarde os segundos de Retry-After.
Usar com uma IA
A API também é um servidor MCP, em http://127.0.0.1:3000/api/v1/mcp: um assistente recebe uma ferramenta por endereço que a sua chave pode ler.
Crie uma chave por assistente, só com o que ele precisa (os dados públicos do jogo bastam para perguntar sobre heróis, itens e drafts). Se uma vazar, revogue-a sem mexer nas outras.
Claude Code Execute isto num terminal:
Terminal Copiarclaude mcp add --transport http hok-api http://127.0.0.1:3000/api/v1/mcp --header "Authorization: Bearer hok_YOUR_KEY"Claude Desktop Adicione isto ao claude_desktop_config.json (Settings, Developer, Edit config) e reinicie o Claude. Requer Node.js.
claude_desktop_config.json Copiar{
"mcpServers": {
"hok-api": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:3000/api/v1/mcp",
"--header",
"Authorization:${HOK_API_KEY}"
],
"env": {
"HOK_API_KEY": "Bearer hok_YOUR_KEY"
}
}
}
}Cursor Adicione isto ao .cursor/mcp.json, no seu projeto ou na sua pasta pessoal:
.cursor/mcp.json Copiar{
"mcpServers": {
"hok-api": {
"url": "http://127.0.0.1:3000/api/v1/mcp",
"headers": {
"Authorization": "Bearer hok_YOUR_KEY"
}
}
}
}ChatGPT Num GPT personalizado: Configure, Create new action, Import from URL com este endereço. Depois Authentication: API key, tipo Bearer, e cole a sua chave.
OpenAPI Copiarhttp://127.0.0.1:3000/api/v1/openapi.json
Substitua hok_YOUR_KEY pela sua chave. O assistente vê então uma ferramenta por endereço que a sua chave pode ler, e só lê.
Endereços
A descrição completa, para importar numa ferramenta: /api/v1/openapi.json (OpenAPI 3.1)
Dados do jogo game
GET /api/v1/heroesDados do jogo
The heroes of the Global roster (name, classes, lanes, picture).
Ferramenta para uma IA: list_heroes
Exemplo de resposta {
"heroes": [
{
"id": "h105",
"name": "Arli",
"displayName": "Arli",
"image": "https://camp.honorofkings.com/h105.png",
"roles": [
"Marksman"
],
"lanes": [
"Farm Lane"
],
"laneSources": {
"Farm Lane": "camp"
},
"sourceIds": [
"105"
],
"availableGlobal": true,
"isFlowborn": false,
"sourceUpdated": "20260925"
}
],
"lastUpdated": "2026-10-31T08:00:00.000Z",
"sourceUpdated": "20260925",
"usingCache": true,
"language": "en",
"namesLanguage": "en"
}
GET /api/v1/heroes/{id}Dados do jogo
One hero: its sheet (skills, art), its recommended builds, its combos, its official ratings and the competitive figures.
Ferramenta para uma IA: get_hero
Parâmetro Onde Descrição id obrigatório endereço The id of the thing. sinceconsulta Count the tournament games from this day on, YYYY-MM-DD.
Exemplo de resposta {
"hero": {
"id": "h105",
"name": "Arli",
"roles": [
"Marksman"
],
"lanes": [
"Farm Lane"
]
},
"competitive": [],
"tournament": {
"since": null,
"totalGames": 48,
"picks": 21,
"bans": 9,
"wins": 12,
"losses": 9,
"winRate": 0.571,
"pickRate": 0.438,
"banRate": 0.188,
"byRule": {},
"range": {
"first": "2026-08-01",
"last": "2026-10-30"
}
},
"builds": [],
"profile": null,
"ratings": {
"Farm Lane": "A"
},
"ratingSources": {
"Farm Lane": "tournaments"
},
"combos": [],
"details": null,
"detailsFetchedAt": null,
"detailsLanguage": "en",
"language": "en"
}
GET /api/v1/tier-listDados do jogo
The public tier list of each lane: tournament results first, the editors' ratings for the heroes played too little.
Ferramenta para uma IA: get_tier_list
Exemplo de resposta {
"period": {
"from": "2026-08-01",
"to": "2026-10-31"
},
"minGames": 10,
"totalGames": 120,
"lanes": [
{
"lane": "Farm Lane",
"slug": "farm",
"tiers": [
{
"label": "SS",
"heroes": [
{
"heroId": "h105",
"source": "tournaments",
"games": 48,
"winRate": 0.571,
"pickRate": 0.438,
"score": 0.62
}
]
}
],
"unranked": [
"h199"
]
}
],
"updatedAt": "2026-10-31T08:00:00.000Z"
}
GET /api/v1/catalogDados do jogo
The items, the arcana, the battle spells, the stats and the tags of the game, in one answer.
Ferramenta para uma IA: get_catalog
Exemplo de resposta {
"stats": [
{
"id": 1,
"name": "Physical Attack"
}
],
"tags": [
{
"id": 3,
"name": "Burst"
}
],
"tagGroups": {
"red": "Damage"
},
"items": [],
"arcana": [],
"spells": [
{
"id": 1,
"name": "Flash",
"imageId": null,
"description": "Blink a short distance.",
"cooldownSeconds": 120,
"unlockLevel": null
}
],
"heroTags": {}
}
GET /api/v1/catalog/{family}Dados do jogo
One family of the catalogue: items, arcana, spells, stats or tags.
Ferramenta para uma IA: list_catalog_family
Parâmetro Onde Descrição family obrigatório endereço items, arcana, spells, stats or tags.
Exemplo de resposta {
"spells": [
{
"id": 1,
"name": "Flash",
"imageId": null,
"description": "Blink a short distance.",
"cooldownSeconds": 120,
"unlockLevel": null
}
]
}
GET /api/v1/catalog/{family}/{id}Dados do jogo
One item, arcana, spell, stat or tag, by its number: everything its page shows (stats and tags by their number).
Ferramenta para uma IA: get_catalog_entry
Parâmetro Onde Descrição family obrigatório endereço items, arcana, spells, stats or tags. id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": 1,
"name": "Flash",
"imageId": null,
"description": "Blink a short distance.",
"cooldownSeconds": 120,
"unlockLevel": null
}
Cena competitiva competitive
GET /api/v1/tournamentsCena competitiva
The tournament series entered by the staff.
Ferramenta para uma IA: list_tournaments
Parâmetro Onde Descrição qconsulta Words to look for. pageconsulta The page of the list, from 1.
Exemplo de resposta {
"items": [
{
"id": "8d1f6a52-3c1e-4b7e-9a51-1f2c3d4e5f60",
"name": "KPL West Finals",
"teamA": "Alpha",
"teamB": "Bravo",
"bestOf": 5,
"status": "complete"
}
],
"total": 1,
"page": 1,
"pageSize": 25
}
GET /api/v1/tournaments/{id}Cena competitiva
One tournament series with all its games: bans, picks, lanes, winner, duration.
Ferramenta para uma IA: get_tournament
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": "8d1f6a52-3c1e-4b7e-9a51-1f2c3d4e5f60",
"teamA": {
"name": "Alpha"
},
"teamB": {
"name": "Bravo"
},
"bestOf": 5,
"gameMode": "global-ban-pick",
"status": "complete",
"games": [
{
"number": 1,
"bans": {
"blue": [
"h105"
],
"red": [
"h199"
]
},
"picks": {
"blue": [
"h101"
],
"red": [
"h120"
]
},
"winner": "blue",
"durationSeconds": 1104
}
]
}
GET /api/v1/popular/draftsCena competitiva
The drafts that win and are played most in the tournament games.
Ferramenta para uma IA: popular_drafts
Parâmetro Onde Descrição fromconsulta The first day of the period, YYYY-MM-DD (the period spans 3 months at least). toconsulta The last day of the period, YYYY-MM-DD. ruleconsulta Only the games of one draft rule (empty: every rule). minGamesconsulta The fewest games a draft or a hero needs to be ranked, 1 to 50.
Exemplo de resposta {
"period": {
"from": "2026-08-01",
"to": "2026-10-31",
"first": "2026-08-03",
"last": "2026-10-30",
"minMonths": 3
},
"rule": "",
"rules": [
"classic"
],
"minGames": 1,
"totalGames": 120,
"sides": {
"blue": {
"different": 80,
"groups": 12,
"eligible": 9,
"byWinRate": [],
"byPlays": []
},
"red": {
"different": 77,
"groups": 11,
"eligible": 8,
"byWinRate": [],
"byPlays": []
}
},
"duos": {
"all": [],
"mostPlayed": [],
"byLanes": {}
}
}
GET /api/v1/popular/heroesCena competitiva
The heroes that win and are played most in the tournament games, by lane.
Ferramenta para uma IA: popular_heroes
Parâmetro Onde Descrição fromconsulta The first day of the period, YYYY-MM-DD (the period spans 3 months at least). toconsulta The last day of the period, YYYY-MM-DD. ruleconsulta Only the games of one draft rule (empty: every rule). minGamesconsulta The fewest games a draft or a hero needs to be ranked, 1 to 50.
Exemplo de resposta {
"period": {
"from": "2026-08-01",
"to": "2026-10-31",
"first": "2026-08-03",
"last": "2026-10-30",
"minMonths": 3
},
"rule": "",
"rules": [
"classic"
],
"minGames": 1,
"totalGames": 120,
"lanes": [
{
"lane": "Farm Lane",
"picks": 120,
"all": {
"different": 14,
"eligible": 9,
"byWinRate": [],
"byPlays": [],
"byPresence": []
}
}
],
"placed": 1180,
"unplaced": 20,
"games": 120
}
Seus scrims scrims
GET /api/v1/seriesSeus scrims
Your series, and the ones a team of yours shared.
Ferramenta para uma IA: list_series
Parâmetro Onde Descrição pageconsulta The page of the list, from 1. pageSizeconsulta How many entries a page holds. viewconsulta summary (lighter) or full. sortconsulta updated, oldest or created. statusconsulta active, complete or draw. modeconsulta The game mode: global-ban-pick, free-for-all or classic. draftModeconsulta The draft mode of the series. qconsulta Words to look for. fromconsulta The first day, YYYY-MM-DD. toconsulta The last day, YYYY-MM-DD.
Exemplo de resposta {
"items": [
{
"id": "16f3cb87-fb93-4a70-91e0-01f01f863f11",
"teamA": "Alpha",
"teamB": "Bravo",
"bestOf": 3,
"winsRequired": 2,
"gameMode": "free-for-all",
"draftMode": "solo",
"status": "active",
"score": {
"teamA": 1,
"teamB": 0
},
"gamesCount": 1,
"role": "owner",
"createdAt": "2026-10-31T20:15:23.262Z",
"updatedAt": "2026-10-31T20:45:00.000Z"
}
],
"total": 1,
"page": 1,
"pageSize": 20
}
GET /api/v1/series/{id}Seus scrims
One series with every game of it.
Ferramenta para uma IA: get_series
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": "16f3cb87-fb93-4a70-91e0-01f01f863f11",
"createdAt": "2026-10-31T20:15:23.262Z",
"updatedAt": "2026-10-31T20:45:00.000Z",
"teamA": {
"name": "Alpha"
},
"teamB": {
"name": "Bravo"
},
"bestOf": 3,
"winsRequired": 2,
"gameMode": "free-for-all",
"draftMode": "solo",
"status": "active",
"games": [],
"currentGame": null,
"version": 4,
"serverTime": 1793477723366,
"viewer": {
"role": "owner",
"side": null,
"canDrive": true
}
}
GET /api/v1/stats/overviewSeus scrims
The statistics of your scrims (figures under the minimum sample are withheld).
Ferramenta para uma IA: scrim_stats_overview
Parâmetro Onde Descrição statusconsulta active, complete or draw. modeconsulta The game mode: global-ban-pick, free-for-all or classic. draftModeconsulta The draft mode of the series. qconsulta Words to look for. fromconsulta The first day, YYYY-MM-DD. toconsulta The last day, YYYY-MM-DD. minGamesconsulta The fewest games a figure needs to be shown.
Exemplo de resposta {
"label": "Your scrims",
"minGames": 30,
"seriesCount": 14,
"gamesCount": 37,
"totalDurationSeconds": 42180,
"averageDurationSeconds": 1140,
"shortestSeconds": 702,
"longestSeconds": 1598,
"blueWins": 20,
"redWins": 17,
"blueWinRate": 0.541,
"byMode": {
"global-ban-pick": 30,
"free-for-all": 7,
"classic": 0
}
}
GET /api/v1/stats/heroesSeus scrims
The per-hero statistics of your scrims.
Ferramenta para uma IA: scrim_stats_heroes
Parâmetro Onde Descrição statusconsulta active, complete or draw. modeconsulta The game mode: global-ban-pick, free-for-all or classic. draftModeconsulta The draft mode of the series. qconsulta Words to look for. fromconsulta The first day, YYYY-MM-DD. toconsulta The last day, YYYY-MM-DD. minGamesconsulta The fewest games a figure needs to be shown. pageconsulta The page of the list, from 1. pageSizeconsulta How many entries a page holds. orderconsulta How the heroes are sorted (presence by default). heroconsulta Only the heroes whose name holds these letters.
Exemplo de resposta {
"label": "Your scrims",
"minGames": 30,
"totalGames": 37,
"sort": "presence",
"rows": [
{
"heroId": "h105",
"picks": 12,
"bans": 9,
"wins": 7,
"presence": 0.568
}
],
"total": 1,
"page": 1,
"pageSize": 10
}
GET /api/v1/heroes/{id}/scrimsSeus scrims
What your scrims say of one hero: picks, bans, synergies, matchups.
Ferramenta para uma IA: hero_scrim_stats
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"label": "Your scrims",
"minGames": 30,
"seriesCount": 9,
"totalGames": 37,
"picked": 12,
"wins": 7,
"losses": 5,
"banned": 9,
"winRate": null,
"pickRate": null,
"banRate": null,
"insufficient": true,
"lanes": [],
"synergies": [],
"matchups": []
}
Suas tier lists tier-lists
GET /api/v1/tier-listsSuas tier lists
Your tier lists, and the ones shared with you.
Ferramenta para uma IA: list_my_tier_lists
Parâmetro Onde Descrição pageconsulta The page of the list, from 1. pageSizeconsulta How many entries a page holds. laneconsulta Only the lists of one lane. qconsulta Words to look for.
Exemplo de resposta {
"items": [
{
"id": "44d20ad7-4f74-4207-80f2-6e0b352ba662",
"name": "Farm lane, season 4",
"lane": "Farm Lane",
"updatedAt": "2026-10-31T20:15:23.224Z"
}
],
"total": 1,
"page": 1,
"pageSize": 50
}
GET /api/v1/tier-lists/{id}Suas tier lists
One tier list with its placements.
Ferramenta para uma IA: get_my_tier_list
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": "44d20ad7-4f74-4207-80f2-6e0b352ba662",
"createdAt": "2026-10-31T20:15:23.224Z",
"updatedAt": "2026-10-31T20:15:23.224Z",
"name": "Farm lane, season 4",
"lane": "Farm Lane",
"tiers": [
{
"id": "t1",
"label": "S",
"heroes": [
"h105"
]
}
],
"unranked": [
"h199"
],
"version": 0,
"viewer": {
"role": "owner",
"canEdit": true,
"canDelete": true,
"canShare": true
}
}
As suas equipas teams
GET /api/v1/me/teamsAs suas equipas
The teams you belong to, with your role in each.
Ferramenta para uma IA: my_teams
Exemplo de resposta {
"items": [
{
"id": "07db7f13-4df0-4d4e-b6c9-453d26c41fe5",
"name": "Learn Squad",
"tag": "LERN",
"region": "EU",
"level": "amateur",
"memberCount": 5,
"myRole": "owner"
}
]
}
GET /api/v1/teamsAs suas equipas
The teams of the community.
Ferramenta para uma IA: list_teams
Parâmetro Onde Descrição qconsulta Words to look for. pageconsulta The page of the list, from 1. pageSizeconsulta How many entries a page holds. levelconsulta Only the teams of one level. regionconsulta Only the teams of one region.
Exemplo de resposta {
"items": [
{
"id": "07db7f13-4df0-4d4e-b6c9-453d26c41fe5",
"name": "Learn Squad",
"tag": "LERN",
"region": "EU",
"level": "amateur",
"memberCount": 5
}
],
"total": 1,
"page": 1,
"pageSize": 18
}
GET /api/v1/teams/{id}As suas equipas
One team: its members and its settings that you may see.
Ferramenta para uma IA: get_team
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": "07db7f13-4df0-4d4e-b6c9-453d26c41fe5",
"name": "Learn Squad",
"tag": "LERN",
"description": "",
"region": "EU",
"timezone": "UTC+1",
"languages": [
"en"
],
"level": "amateur",
"maxMembers": 10,
"createdAt": 1793477723239,
"members": [
{
"name": "Kai",
"tag": "YHX7EA",
"role": "owner",
"lane": "Jungle"
}
],
"myRole": "owner"
}
GET /api/v1/teams/{id}/eventsAs suas equipas
The agenda of one of your teams.
Ferramenta para uma IA: team_events
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"items": [
{
"id": "2b9c0e3a-6f0d-4a8e-b1c2-3d4e5f6a7b8c",
"title": "Scrim vs Bravo",
"startsAt": 1793563200000
}
],
"canSchedule": true
}
GET /api/v1/teams/{id}/seriesAs suas equipas
The series that this team shared with its members.
Ferramenta para uma IA: team_series
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"items": [],
"total": 0,
"page": 1,
"pageSize": 20
}
GET /api/v1/me/agendaAs suas equipas
Your agenda: the events of all your teams.
Ferramenta para uma IA: my_agenda
Parâmetro Onde Descrição fromconsulta The start of the window, in milliseconds since 1970. toconsulta The end of the window, in milliseconds since 1970.
Exemplo de resposta {
"items": [
{
"id": "2b9c0e3a-6f0d-4a8e-b1c2-3d4e5f6a7b8c",
"title": "Scrim vs Bravo",
"startsAt": 1793563200000
}
]
}
Seu treino training
GET /api/v1/training/focusSeu treino
The heroes you work on.
Ferramenta para uma IA: training_focus
Exemplo de resposta {
"heroIds": [
"h105",
"h120"
]
}
GET /api/v1/training/notesSeu treino
Your training notebook.
Ferramenta para uma IA: training_notes
Exemplo de resposta {
"notes": []
}
GET /api/v1/training/combosSeu treino
The combos you have acquired.
Ferramenta para uma IA: training_combos
Exemplo de resposta {
"progress": {}
}
GET /api/v1/training/combos/reviewSeu treino
The combos that are due for a check.
Ferramenta para uma IA: training_combos_due
Exemplo de resposta {
"now": 1793477503716,
"due": [],
"dueTotal": 0,
"toLearn": [],
"toLearnTotal": 0,
"skills": {}
}
GET /api/v1/training/mapsSeu treino
The maps of the situations.
Ferramenta para uma IA: training_maps
Exemplo de resposta {
"maps": []
}
GET /api/v1/training/scenariosSeu treino
The situations prepared by the staff.
Ferramenta para uma IA: list_training_scenarios
Exemplo de resposta {
"scenarios": []
}
GET /api/v1/training/scenarios/{id}Seu treino
One situation.
Ferramenta para uma IA: get_training_scenario
Parâmetro Onde Descrição id obrigatório endereço The id of the thing.
Exemplo de resposta {
"id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
"title": "Defend the second tower",
"mapId": "main"
}
GET /api/v1/training/reflexSeu treino
Your reflex training results.
Ferramenta para uma IA: training_reflex
Exemplo de resposta {
"exercises": {
"reaction": {
"runs": 12,
"best": 231,
"last": []
}
},
"doneToday": [],
"today": {
"runs": 3,
"minutes": 4
},
"week": {
"runs": 12,
"minutes": 18
},
"streak": 2,
"teams": []
}
GET /api/v1/spaceSeu treino
Your personal space (the builds and notes you keep).
Ferramenta para uma IA: my_space
Exemplo de resposta {
"tierLists": [],
"builds": [],
"training": {
"focus": [],
"notes": [],
"combos": [],
"reflex": {
"streak": 0,
"best": {}
}
},
"links": [],
"limits": {
"builds": 300,
"buildsPerHero": 30,
"links": 20,
"days": [
7
]
}
}
Sua conta account
Who the key belongs to (tag and name, never the email), its scopes and its expiry.
Ferramenta para uma IA: whoami
Exemplo de resposta {
"account": {
"tag": "YHX7EA",
"name": "Kai"
},
"key": {
"id": "25bf6418-4cbf-448a-baed-30349809947e",
"name": "Stats bot",
"scopes": [
"game",
"competitive"
],
"expiresAt": 1801253503341
}
}