Mechaniki
Ekwipunek i Kuźnia
Walka
Postać
Rzemiosło i Sklepy
Eksploracja i Łupy
Chowańce
Ekonomia i Handel
Społeczność
Rywalizacja i Wydarzenia
Pierwsze kroki
Wydarzenia i Wyzwania
Dla twórców
Publiczne API dla twórców
Publiczne API pozwala zbudować własne narzędzie wokół Berserk Rush: stronę z rankingami i buildami najlepszych graczy, bota na Discorda, kalkulator ekwipunku albo panel do zarządzania gildią. API zwraca dane w formacie JSON, działa wyłącznie do odczytu i nie wymaga żadnego klucza - poza danymi gildii, które lider udostępnia swoim tokenem.
Szukasz gotowych scenariuszy? API w praktyce: strona z rankingiem, bot na Discorda, raport wpłat gildii i inne przykłady krok po kroku z działającym kodem.Szybki start
Adres bazowy API: https://berserkrush.pl/api/v1
Pierwsze zapytanie - top 10 postaci serwera S1 (otwórz w przeglądarce albo wywołaj z terminala):
curl "https://berserkrush.pl/api/v1/servers/s1/rankings/characters/level?limit=10&lang=en"
Indeks z listą wszystkich endpointów: https://berserkrush.pl/api/v1
Zasady działania API
Format odpowiedzi
Każda odpowiedź to JSON: dane są w polu data, informacje o stronie wyników w meta, a błąd w polu error ze stałym kodem i opisem.
Serwery
Postacie, gildie i rankingi są osobne dla każdego serwera, dlatego klucz serwera (np. s1) jest częścią adresu. Listę serwerów zwraca GET /api/v1/servers.
Limit zapytań
60 zapytań na minutę z jednego adresu IP. Po przekroczeniu API odpowiada kodem 429, a nagłówek Retry-After podaje, ile sekund trzeba odczekać.
Odświeżanie danych
Rankingi są przeliczane co 60 sekund. Zapisuj odpowiedzi po swojej stronie, zamiast pytać o to samo co chwilę.
Języki
Nazwy przedmiotów, potworów, map i tytułów są tłumaczone - dodaj ?lang=en (albo pl, de, es, fr). Pole name_pl zawsze zawiera polską nazwę i służy jako stały identyfikator.
Wywołania z przeglądarki
API obsługuje CORS, więc publiczne dane pobierzesz zwykłym fetch z kodu dowolnej strony. Wyjątek: endpointy z tokenem gildii wywołuj tylko z serwera.
Prywatność graczy
API pokazuje tylko to, co inni gracze widzą w grze. Build postaci (ekwipunek, statystyki, umiejętności) jest dostępny wyłącznie dla profili publicznych, a sekcje ukryte w Ustawieniach Gry są pomijane.
Wersje
Adresy /api/v1 zachowują zgodność: mogą dojść nowe pola, ale istniejące nie znikną ani nie zmienią znaczenia. Zmiany łamiące zgodność trafią do /api/v2.
Parametry wspólne
| lang | Język nazw przedmiotów, potworów, map i tytułów: pl, en, de, es, fr. Bez parametru decyduje nagłówek Accept-Language, a bez niego polski. |
| page | Numer strony listy (od 1) - dotyczy list z paginacją. |
| per_page | Liczba wyników na stronę: 1-100, domyślnie 25. |
Token gildii - dla liderów i twórców narzędzi
Skarbiec, wpłaty członków, dziennik i skład gildii są dostępne tylko z tokenem, który wydaje lider gildii. Token daje wgląd w to samo, co widzi każdy członek gildii, i nie pozwala niczego zmienić w grze.
- Lider wchodzi w Gildię i otwiera zakładkę Edycja Gildii.
- W sekcji API gildii klika Wygeneruj token.
- Kopiuje token od razu - gra pokazuje go tylko raz, a w bazie zapisuje wyłącznie jego skrót.
- Przekazuje token osobie, która buduje narzędzie, albo wkleja go do konfiguracji własnego bota.
Token wysyłaj w nagłówku każdego zapytania:
curl -H "Authorization: Bearer brk_s1_..." "https://berserkrush.pl/api/v1/servers/s1/guild/donations"
- Nigdy nie umieszczaj tokena w kodzie strony widocznym dla odwiedzających ani w publicznym repozytorium - endpointy gildii wywołuj ze swojego serwera.
- Token w adresie URL nie jest obsługiwany - adresy trafiają do logów i historii przeglądarki.
- Wygenerowanie nowego tokena unieważnia poprzedni. Token przestaje też działać, gdy przywództwo przejdzie na innego gracza - nowy lider generuje własny.
- Token jest przypisany do serwera (brk_s1_... działa tylko z adresami /servers/s1).
Endpointy
Serwery i informacje
/api/v1
Indeks API: wersja, limit zapytań, obsługiwane języki i lista wszystkich endpointów.
Przykład: https://berserkrush.pl/api/v1
Przykładowa odpowiedź
{
"data": {
"name": "Berserk Rush Public API",
"version": "v1",
"documentation_url": "https://berserkrush.pl/wikipedia/mechaniki/public-api",
"rate_limit": { "requests_per_minute": 60, "per": "ip" },
"languages": ["pl", "en", "de", "es", "fr"],
"servers_url": "https://berserkrush.pl/api/v1/servers",
"endpoints": [{ "method": "GET", "path": "/api/v1/servers", "auth": "none", "summary": "..." }]
}
}
/api/v1/servers
Lista serwerów gry. Klucz serwera (np. s1) jest częścią adresu wszystkich pozostałych zapytań.
Przykład: https://berserkrush.pl/api/v1/servers
Przykładowa odpowiedź
{
"data": [
{ "key": "s1", "name": "S1", "status": "open", "opened_at": "2026-09-18T16:30:00+02:00", "api_url": "https://berserkrush.pl/api/v1/servers/s1" }
]
}
/api/v1/servers/{server}
Status serwera i liczniki świata: postacie, gildie, gracze online i najwyższy poziom.
Przykład: https://berserkrush.pl/api/v1/servers/s1
Przykładowa odpowiedź
{
"data": {
"key": "s1", "name": "S1", "status": "open", "opened_at": "2026-09-18T16:30:00+02:00",
"stats": { "characters": 4210, "guilds": 87, "online_now": 312, "max_level": 99 },
"links": { "characters": "...", "rankings": "...", "guilds": "...", "items": "..." }
}
}
Postacie i buildy
/api/v1/servers/{server}/characters
Wyszukiwarka postaci po fragmencie nicku, od najwyższego poziomu.
| search | Fragment nicku (wielkość liter bez znaczenia). |
Przykład: https://berserkrush.pl/api/v1/servers/s1/characters?search=wojo&per_page=5
Przykładowa odpowiedź
{
"data": [
{
"id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)",
"title": { "name": "Pogromca Skazy", "prefix": "Pogromca" },
"avatar_url": "https://berserkrush.pl/img/avatars/knight.webp", "frame_url": null,
"guild": { "id": "01k5y1...", "name": "Nocne Jastrzębie" },
"weapon_type": "sword"
}
],
"meta": { "page": 1, "per_page": 5, "total": 1, "last_page": 1 }
}
/api/v1/servers/{server}/characters/{characterRef}
Profil postaci po nicku albo ID. Przy publicznym profilu zawiera pełny build: ekwipunek z ulepszeniami, zaklęciami i Kamieniami Dusz, chowańca, atrybuty, statystyki, umiejętności i maestrię broni.
| characterRef | Nick postaci (wielkość liter bez znaczenia) albo jej ID. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/characters/WojWielki
Przykładowa odpowiedź
{
"data": {
"id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)",
"title": null, "avatar_url": "...", "frame_url": null,
"guild": { "id": "01k5y1...", "name": "Nocne Jastrzębie", "role": "leader" },
"weapon_type": "sword",
"arena": { "elo": 1480, "league": "silver" },
"profile_public": true,
"created_at": "2026-09-18T16:41:12+02:00",
"combat_power": 48210,
"build": {
"equipment": [
{
"slot": "main_hand",
"item": { "id": "01j9...", "name": "Miecz Pogromcy", "type": "weapon", "rarity": "epic", "icon_url": "...", "sub_type": "sword", "level_requirement": 95 },
"rarity": "legendary", "upgrade_level": 9,
"base_stats": { "attack_min": 410, "attack_max": 520 },
"upgrade_stats": { "attack_min": 123, "attack_max": 156 },
"enchantments": { "crit_chance": 4, "strong_vs_bosses": 6 },
"upgrade_bonuses": { "armor_pen_pct": 3 },
"soul_stones": [{ "name": "Kamień Furii", "upgrade_level": 5, "stat": "crit_damage", "value": 12.5, "icon_url": "..." }],
"combat_power": 9120
}
],
"pet": { "name": "Burek", "tier": 5, "tier_name": "Epicki", "archetype": "attacker", "level": 40, "combat_power": 5200 },
"attributes": { "base": { "str": 180, "int": 10, "vit": 120, "agi": 90 }, "bonus": { "...": 0 }, "total": { "...": 0 } },
"stats": { "derived": { "max_hp": 18400, "max_mana": 900, "base_damage_min": 1200, "base_damage_max": 1450, "magic_damage_min": 0, "magic_damage_max": 0, "crit_chance": 31.5, "dodge_chance": 12.4, "damage_reduction": 640 }, "equipment": { "...": 0 } },
"skills": [{ "id": "01j8...", "name": "Mocny Cios", "level": 27, "tier": "perfect", "display_level": "P", "slot": 1, "required_weapon_type": "sword", "effect_type": "direct_dmg", "icon_url": "..." }],
"weapon_mastery": [{ "weapon_type": "sword", "tier": 8, "exp": 125000 }],
"hidden_sections": []
}
}
}
Rankingi
/api/v1/servers/{server}/rankings/characters/{type}
Ranking postaci. Typy: level (poziom i Mistrzostwo, jak Top Bohaterów na stronie głównej), arena (ELO, od 15 poziomu), fury (punkty eventu Pierwsza Furia).
| type | level, arena albo fury. |
| limit | Liczba miejsc: 1-100, domyślnie 50. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/rankings/characters/level?limit=10
Przykładowa odpowiedź
{
"data": [
{
"rank": 1, "id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)",
"title": null, "avatar_url": "...", "frame_url": null,
"guild": { "id": "01k5y1...", "name": "Nocne Jastrzębie" }, "weapon_type": "sword",
"score": 99
}
],
"meta": { "type": "level", "limit": 10, "cache_seconds": 60 }
}
/api/v1/servers/{server}/rankings/weekly/{category}
Ranking tygodniowy jednej z 10 kategorii, z nagrodą w gemach za miejsce. Tydzień trwa od poniedziałku do niedzieli.
| category | monsters_killed, dungeons_completed, tower_floors_cleared, survival_best_wave, world_boss_damage, levels_gained, map_bosses_killed, arena_wins, time_played_seconds, hydra_highest_wave. |
| week | current (domyślnie), previous albo poniedziałek w formacie YYYY-MM-DD. Gra przechowuje 4 ostatnie tygodnie. |
| limit | Liczba miejsc: 1-100, domyślnie 50. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/rankings/weekly/monsters_killed?limit=10
Przykładowa odpowiedź
{
"data": [
{
"rank": 1, "id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)",
"title": null, "avatar_url": "...", "frame_url": null,
"guild": null, "weapon_type": "axe",
"score": 18342, "score_label": "18,342", "reward_gems": 150
}
],
"meta": { "category": "monsters_killed", "category_label": "Pokonane Potwory", "week_start": "2026-09-21", "week_end": "2026-09-27", "resets_at": "2026-09-28T00:01:00+02:00", "limit": 10, "cache_seconds": 60 }
}
/api/v1/servers/{server}/rankings/guilds/{type}
Ranking gildii. Typy: level (poziom i EXP gildii), members (liczba członków), average_level (średni poziom członków), wars_won (wygrane Wojny Gildii).
| type | level, members, average_level albo wars_won. |
| limit | Liczba miejsc: 1-100, domyślnie 50. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/rankings/guilds/level?limit=10
Przykładowa odpowiedź
{
"data": [
{
"rank": 1, "id": "01k5y1...", "name": "Nocne Jastrzębie", "title": "Zakon Północy",
"level": 24, "xp": 812000, "xp_to_next_level": 2436000, "members": 21, "max_members": 23,
"average_level": 71.4, "min_level": 30, "recruitment": "invite_only", "wars_won": 5,
"territory": { "name": "Przełęcz Kruków", "slug": "przelecz-krukow" },
"leader": { "id": "01k5x3...", "name": "WojWielki" },
"created_at": "2026-09-18T17:02:44+02:00"
}
],
"meta": { "type": "level", "limit": 10, "cache_seconds": 60 }
}
Gildie
/api/v1/servers/{server}/guilds
Lista gildii z wyszukiwarką po nazwie, od najwyższego poziomu.
| search | Fragment nazwy gildii. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/guilds?search=noc
Przykładowa odpowiedź
{
"data": [
{
"id": "01k5y1...", "name": "Nocne Jastrzębie", "title": "Zakon Północy", "level": 24, "xp": 812000, "xp_to_next_level": 2436000,
"members": 21, "max_members": 23, "average_level": 71.4, "min_level": 30, "recruitment": "invite_only", "wars_won": 5,
"territory": null, "leader": { "id": "01k5x3...", "name": "WojWielki" }, "created_at": "2026-09-18T17:02:44+02:00"
}
],
"meta": { "page": 1, "per_page": 25, "total": 1, "last_page": 1 }
}
/api/v1/servers/{server}/guilds/{guildRef}
Profil gildii po nazwie albo ID: poziom, lider, teren, rekrutacja, opis i skład z rolami.
| guildRef | Nazwa gildii (wielkość liter bez znaczenia) albo jej ID. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/guilds/Nocne%20Jastrz%C4%99bie
Przykładowa odpowiedź
{
"data": {
"id": "01k5y1...", "name": "Nocne Jastrzębie", "title": "Zakon Północy", "level": 24, "xp": 812000, "xp_to_next_level": 2436000,
"members": 21, "max_members": 23, "average_level": 71.4, "min_level": 30, "recruitment": "invite_only", "wars_won": 5,
"territory": null, "leader": { "id": "01k5x3...", "name": "WojWielki" }, "created_at": "2026-09-18T17:02:44+02:00",
"description": "Regulamin i opis gildii...",
"roster": [
{ "id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)", "title": null, "avatar_url": "...", "frame_url": null, "role": "leader", "joined_at": "2026-09-18T17:02:44+02:00" }
]
}
}
Gildia z tokenem lidera
/api/v1/servers/{server}/guild
Wymaga tokena gildii
Gildia właściciela tokena: skarbiec (złoto, gemy, deski, cegły i ich limity), bonusy, drużyna wojenna i informacje o tokenie.
Przykład:
https://berserkrush.pl/api/v1/servers/s1/guild
Przykładowa odpowiedź
{
"data": {
"id": "01k5y1...", "name": "Nocne Jastrzębie", "title": "Zakon Północy", "description": "...",
"level": 24, "xp": 812000, "xp_to_next_level": 2436000, "members": 21, "max_members": 23, "min_level": 30, "recruitment": "invite_only",
"treasury": { "gold": 1520000, "gold_cap": 2403800, "gems": 140, "gems_cap": 316, "plank": 420, "plank_cap": 1000, "brick": 90, "brick_cap": 500 },
"bonuses": { "xp_level": 3, "gold_level": 2 },
"war_team": ["01k5x3...", "01k5x7..."],
"token": { "hint": "brk_...Xy9Z", "created_at": "2026-09-21T12:00:00+02:00", "last_used_at": "2026-09-21T12:05:00+02:00" }
}
}
/api/v1/servers/{server}/guild/members
Wymaga tokena gildii
Skład gildii z rolami, datą dołączenia, statusem online (jak na liście znajomych) i przynależnością do drużyny wojennej.
Przykład:
https://berserkrush.pl/api/v1/servers/s1/guild/members
Przykładowa odpowiedź
{
"data": [
{ "id": "01k5x3...", "name": "WojWielki", "level": 99, "champion_level": 3, "level_label": "99(3)", "title": null, "avatar_url": "...", "frame_url": null, "role": "leader", "joined_at": "2026-09-18T17:02:44+02:00", "is_online": true, "in_war_team": true }
]
}
/api/v1/servers/{server}/guild/donations
Wymaga tokena gildii
Historia wpłat do skarbca, od najnowszych. Automatyczne dotacje EXP to jeden wpis na gracza na dobę, który rośnie do północy - synchronizuj po polu id.
| currency | exp, gold, gems, plank albo brick. |
| character_id | Tylko wpłaty jednej postaci (ID). |
| since | Tylko wpisy zmienione po tej chwili (ISO 8601, np. 2026-09-21T12:00:00Z) - do pobierania samych nowości. |
Przykład:
https://berserkrush.pl/api/v1/servers/s1/guild/donations?currency=gold
Przykładowa odpowiedź
{
"data": [
{
"id": "01k61a...", "currency": "gold", "source": "manual", "amount": 50000, "is_daily_total": false,
"character": { "id": "01k5x3...", "name": "WojWielki", "level": 99 },
"created_at": "2026-09-21T11:58:03+02:00", "updated_at": "2026-09-21T11:58:03+02:00"
}
],
"meta": { "page": 1, "per_page": 25, "total": 1, "last_page": 1 }
}
/api/v1/servers/{server}/guild/donations/summary
Wymaga tokena gildii
Suma wpłat każdego członka w wybranym okresie - na liście są też członkowie bez żadnej wpłaty, a osobno byli członkowie, którzy wpłacali w tym czasie.
| days | Ostatnie N dni łącznie z dzisiaj: 1-366, domyślnie 7. |
| from | Początek okresu (YYYY-MM-DD) - zamiast days. |
| to | Koniec okresu (YYYY-MM-DD), domyślnie dzisiaj. |
| sort | exp (domyślnie), gold, gems, plank, brick, donations albo name. |
Przykład:
https://berserkrush.pl/api/v1/servers/s1/guild/donations/summary?days=30&sort=gold
Przykładowa odpowiedź
{
"data": {
"period": { "from": "2026-08-23", "to": "2026-09-21" },
"totals": { "exp": 5400000, "gold": 3200000, "gems": 90, "plank": 300, "brick": 40 },
"members": [
{ "character": { "id": "01k5x3...", "name": "WojWielki", "level": 99, "role": "leader" }, "exp": 1200000, "gold": 900000, "gems": 40, "plank": 0, "brick": 0, "donations": 31, "last_donation_at": "2026-09-21T11:58:03+02:00" }
],
"former_members": []
}
}
/api/v1/servers/{server}/guild/logs
Wymaga tokena gildii
Pełny dziennik gildii (ten sam co zakładka Logi Gildii): wpłaty, rozbudowy budynków i taranu, tereny, dołączenia i zmiany ustawień.
Przykład:
https://berserkrush.pl/api/v1/servers/s1/guild/logs
Przykładowa odpowiedź
{
"data": [
{
"id": "01k61b...", "action": "building_upgraded_wall", "label": "Rozbudowa: Mur Gildyjny", "amount": 4,
"character": null, "created_at": "2026-09-21T10:00:00+02:00", "updated_at": "2026-09-21T10:00:00+02:00"
}
],
"meta": { "page": 1, "per_page": 25, "total": 1, "last_page": 1 }
}
Wiedza o grze
/api/v1/servers/{server}/items
Baza przedmiotów (ta sama co w Wiki) z filtrami.
| search | Fragment polskiej nazwy przedmiotu. |
| type | Typ, np. weapon, armor, accessory, shield, material, soul_stone, consumable. |
| sub_type | Podtyp, np. rodzaj broni: sword, axe, bow, wand, bell, dagger. |
| slot | Slot ekwipunku: head, chest, main_hand, neck, ring, feet, shield. |
| rarity | common, uncommon, rare, epic, legendary albo mythic. |
| min_level | Minimalny wymagany poziom. |
| max_level | Maksymalny wymagany poziom. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/items?type=weapon&sub_type=bow&per_page=5
Przykładowa odpowiedź
{
"data": [
{
"id": "01j9...", "name": "Łuk Myśliwego", "name_pl": "Łuk Myśliwego", "type": "weapon", "sub_type": "bow", "slot": "main_hand",
"rarity": "common", "level_requirement": 5, "base_stats": { "attack_min": [12, 15], "attack_max": [18, 22], "agi": 3 },
"description": null, "is_tradeable": true, "icon_url": "https://berserkrush.pl/assets/items/luk-mysliwego.webp"
}
],
"meta": { "page": 1, "per_page": 5, "total": 14, "last_page": 3 }
}
/api/v1/servers/{server}/items/{itemId}
Szczegóły przedmiotu i lista potworów, które go upuszczają.
| itemId | ID przedmiotu z listy przedmiotów. |
Przykład:
https://berserkrush.pl/api/v1/servers/s1/items/01j9...
Przykładowa odpowiedź
{
"data": {
"id": "01j9...", "name": "Łuk Myśliwego", "name_pl": "Łuk Myśliwego", "type": "weapon", "sub_type": "bow", "slot": "main_hand",
"rarity": "common", "level_requirement": 5, "base_stats": { "...": 0 }, "description": null, "is_tradeable": true, "icon_url": "...",
"dropped_by": [{ "monster_id": 7, "monster": "Wilk", "level": 6, "rank": "regular", "map": { "id": 1, "name": "Mroczny Las" } }]
}
}
/api/v1/servers/{server}/monsters
Bestiariusz z filtrami.
| search | Fragment polskiej nazwy potwora. |
| map_id | ID mapy. |
| rank | regular, elite, boss albo worldboss. |
| type | Rasa: animal, undead, orc, demon albo mystical. |
| element | Żywioł: fire, ice, wind, earth, lightning albo dark. |
| min_level | Minimalny poziom potwora. |
| max_level | Maksymalny poziom potwora. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/monsters?rank=boss&per_page=5
Przykładowa odpowiedź
{
"data": [
{
"id": 7, "name": "Wilk", "name_pl": "Wilk", "level": 6, "rank": "regular", "type": "animal", "element": null,
"stats": { "hp": 120, "atk": 14, "def": 5, "agi": 8 },
"map": { "id": 1, "name": "Mroczny Las" }, "avatar_url": "https://berserkrush.pl/assets/monsters/avatars/wilk.webp"
}
],
"meta": { "page": 1, "per_page": 5, "total": 1, "last_page": 1 }
}
/api/v1/servers/{server}/monsters/{monsterId}
Szczegóły potwora: statystyki i lista możliwych łupów (bez szans - te zależą od rzutu na drop, bonusów bossów i eventów).
| monsterId | ID potwora. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/monsters/7
Przykładowa odpowiedź
{
"data": {
"id": 7, "name": "Wilk", "name_pl": "Wilk", "level": 6, "rank": "regular", "type": "animal", "element": null,
"stats": { "...": 0 }, "map": { "id": 1, "name": "Mroczny Las" }, "avatar_url": "...",
"drops": [{ "id": "01j9...", "name": "Wilcza Skóra", "type": "material", "rarity": "common", "icon_url": "...", "min_qty": 1, "max_qty": 2 }]
}
}
/api/v1/servers/{server}/maps
Atlas map z zakresami poziomów i tierami.
Przykład: https://berserkrush.pl/api/v1/servers/s1/maps
Przykładowa odpowiedź
{
"data": [
{ "id": 1, "name": "Mroczny Las", "name_pl": "Mroczny Las", "level_min": 1, "level_max": 10, "tier": 1, "is_event_map": false, "image_url": "...", "wiki_url": "https://berserkrush.pl/wikipedia/maps/1" }
]
}
/api/v1/servers/{server}/maps/{mapId}
Mapa z potworami (wraz z ich łupami), bossami i najcenniejszymi łupami.
| mapId | ID mapy. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/maps/1
Przykładowa odpowiedź
{
"data": {
"id": 1, "name": "Mroczny Las", "name_pl": "Mroczny Las", "level_min": 1, "level_max": 10, "tier": 1, "is_event_map": false, "image_url": "...", "wiki_url": "...",
"monsters": [{ "id": 7, "name": "Wilk", "...": "...", "drops": [] }],
"bosses": [],
"notable_drops": [{ "id": "01j9...", "name": "Kieł Alfy", "type": "material", "rarity": "rare", "icon_url": "..." }]
}
}
/api/v1/servers/{server}/skills
Katalog umiejętności bojowych z wymaganiami i skalowaniem.
| weapon_type | Tylko umiejętności danej broni: sword, axe, bow, wand, bell, dagger albo all. |
Przykład: https://berserkrush.pl/api/v1/servers/s1/skills?weapon_type=sword
Przykładowa odpowiedź
{
"data": [
{
"id": "01j8...", "name": "Mocny Cios", "name_pl": "Mocny Cios", "description": "...", "type": "active", "effect_type": "direct_dmg",
"required_weapon_type": "sword", "required_level": 5, "required_mastery_tier": null, "is_magic": false, "is_aoe": false, "hit_count": 1,
"base_cooldown": 3, "base_duration": 0, "base_value": 1.2, "scaling_value": 0.05, "base_mana_cost": 10, "scaling_mana_cost": 1,
"unlock_cost": 1, "icon_url": "..."
}
]
}
Kody błędów
Błąd to obiekt error z polami code i message. Opieraj logikę na polu code - message jest tylko opisem dla programisty (po angielsku).
{
"error": {
"code": "character_not_found",
"message": "Character \"Nobody\" does not exist on this server."
}
}
| code | HTTP | Znaczenie |
|---|---|---|
| invalid_parameter | 422 | Niepoprawna wartość parametru - odpowiedź podaje dozwolone wartości. |
| server_not_found | 404 | Nieznany klucz serwera w adresie. |
| character_not_found | 404 | Brak postaci o takim nicku lub ID na tym serwerze. |
| guild_not_found | 404 | Brak gildii o takiej nazwie lub ID na tym serwerze. |
| item_not_found | 404 | Nie istnieje przedmiot o takim ID. |
| monster_not_found | 404 | Nie istnieje potwór o takim ID. |
| map_not_found | 404 | Nie istnieje mapa o takim ID. |
| not_found | 404 | Nieznany adres endpointu. |
| token_missing | 401 | Endpoint gildii wymaga nagłówka Authorization: Bearer z tokenem. |
| token_invalid | 401 | Token jest błędny albo został unieważniony (nowy token, zmiana lidera). |
| token_wrong_server | 401 | Token należy do innego serwera niż ten w adresie. |
| rate_limited | 429 | Przekroczony limit zapytań - poczekaj tyle sekund, ile podaje nagłówek Retry-After. |
| method_not_allowed | 405 | API działa tylko do odczytu - używaj metody GET. |
| maintenance | 503 | Trwa przerwa techniczna gry. |
| server_error | 500 | Nieoczekiwany błąd po stronie gry. |
Przykłady kodu
JavaScript (fetch)
// Top 10 players by level - works directly in the browser (CORS is enabled).
const response = await fetch('https://berserkrush.pl/api/v1/servers/s1/rankings/characters/level?limit=10&lang=en');
const { data } = await response.json();
for (const hero of data) {
console.log(`#${hero.rank} ${hero.name} lvl ${hero.level_label} (${hero.weapon_type})`);
}
Python (token gildii)
# Guild donations of the last 30 days - run it on YOUR server, never in public front-end code.
import os, requests
token = os.environ["BERSERK_GUILD_TOKEN"] # brk_s1_...
url = "https://berserkrush.pl/api/v1/servers/s1/guild/donations/summary"
summary = requests.get(url, params={"days": 30, "sort": "gold"},
headers={"Authorization": f"Bearer {token}"}).json()["data"]
for row in summary["members"]:
print(row["character"]["name"], row["gold"], row["exp"], row["donations"])
PHP (token gildii)
// New donations since the last sync - store the newest updated_at and pass it as "since".
$since = '2026-09-21T00:00:00Z';
$context = stream_context_create(['http' => [
'header' => 'Authorization: Bearer ' . getenv('BERSERK_GUILD_TOKEN'),
]]);
$json = file_get_contents('https://berserkrush.pl/api/v1/servers/s1/guild/donations?since=' . urlencode($since), false, $context);
foreach (json_decode($json, true)['data'] as $donation) {
echo $donation['character']['name'] . ': ' . $donation['amount'] . ' ' . $donation['currency'] . PHP_EOL;
}
Dłuższe, kompletne przykłady (bot na Discorda, raport skarbnika, synchronizacja wpłat, analiza mety) znajdziesz w artykule API w praktyce: przykłady użycia.
Zasady uczciwego korzystania
- Podawaj źródło danych, np. "Dane: Berserk Rush", i nie podszywaj się pod oficjalną stronę gry.
- Nie obchodź limitu zapytań - nadużycia mogą skończyć się ograniczeniem dostępu do API.
- Pomysły na nowe endpointy i zgłoszenia błędów wysyłaj na naszym Discordzie.