Strona Główna

Wiki » Publiczne API 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.

  1. Lider wchodzi w Gildię i otwiera zakładkę Edycja Gildii.
  2. W sekcji API gildii klika Wygeneruj token.
  3. Kopiuje token od razu - gra pokazuje go tylko raz, a w bazie zapisuje wyłącznie jego skrót.
  4. 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

GET /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": "..." }]
  }
}
GET /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" }
  ]
}
GET /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

GET /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 }
}
GET /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

GET /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 }
}
GET /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 }
}
GET /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

GET /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 }
}
GET /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

GET /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" }
  }
}
GET /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 }
  ]
}
GET /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 }
}
GET /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": []
  }
}
GET /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

GET /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 }
}
GET /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" } }]
  }
}
GET /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 }
}
GET /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 }]
  }
}
GET /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" }
  ]
}
GET /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": "..." }]
  }
}
GET /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.

Twoja Prywatność w Grze

Używamy plików cookie i narzędzi analitycznych (Google Analytics), aby analizować ruch, poprawiać działanie gry oraz zapewniać bezpieczną rozgrywkę.

Więcej informacji znajdziesz w naszej Polityce Prywatności .

Gra otwarta w przeglądarce

Wbudowana przeglądarka aplikacji ma ograniczoną pamięć i może powodować częstsze zacięcia oraz większe zużycie RAM. Dla płynnej rozgrywki otwórz grę w swojej normalnej przeglądarce.