For server owners
Everything you need to get your server noticed: listing, promotion, vote rewards and our banners.
How to add a server
- 1Place our bannerA banner or a link to L2Signal on your website is required for free listing. The code is at the bottom of this page.
- 2Add your serverFill in the form: chronicle, rates, opening date, links and the page with our banner.
- 3Wait for reviewA moderator reviews the request, usually within a day. Save your edit link: use it to change the date and description; your API key is there too.
- 4Ask players to votePut the “Vote” button on your website and give in-game rewards — your server climbs the top.
Promotion
For free, your server sits in its opening-date column. To get it seen by more players there are three badges — Exclusive for 7, 15 or 30 days, Premium and VIP for 15 or 30 days:
- Exclusive A large animated card at the very top of the home page with an opening countdown.
- Premium A golden card in the premium row, above regular servers in its column.
- VIP The server is lifted to the top of its column and highlighted.
Vote reward
A player votes for your server on L2Signal and may enter a character name. Your game server asks our API whether there was a vote and gives the reward itself. Players can vote every 12 hours from one IP.
Your server name and API key are on your edit page (you got the link after adding the server). Keep the key secret; you can reissue it there.
Request
GET https://l2signal.ru/api/vote?server=YOUR_SERVER&key=YOUR_KEY&nick=Nick&ip=1.2.3.4nick— character name,ip— player IP. At least one is required; if you pass both, both must match.hours— optional, how many hours back to look for a vote (default 12, max 48).- Prefer checking by IP or by nick + IP: a player can type any nick.
Response
{"voted":true,"at":1794675600000,"nick":"Grace"}
{"voted":false}at — vote time in milliseconds (UTC). Store it so you don't reward the same vote twice.
Example: PHP
$url = "https://l2signal.ru/api/vote?server=" . urlencode($server) . "&key=" . urlencode($key)
. "&nick=" . urlencode($nick) . "&ip=" . urlencode($ip);
$res = json_decode(@file_get_contents($url), true);
if (!empty($res["voted"]) && $res["at"] > $lastRewardAt) {
// give the reward to $nick and store $res["at"]
}Example: Java (L2J)
HttpClient http = HttpClient.newHttpClient();
String url = "https://l2signal.ru/api/vote?server=" + server + "&key=" + key
+ "&nick=" + URLEncoder.encode(player.getName(), StandardCharsets.UTF_8)
+ "&ip=" + player.getClient().getIp();
String body = http.send(HttpRequest.newBuilder(URI.create(url)).build(), BodyHandlers.ofString()).body();
if (body.contains("\"voted\":true")) {
// give the reward and store the vote time
}Errors: 403 bad_key — wrong key or the server is not published, 400 — nick/IP missing or invalid, 429 — too many requests (over 600 per minute).
Questions left? Write to us via the form on the advertising page.




