VimeWorld.ru Public API logo

Введение

Добро пожаловать в публичный API VimeWorld.ru

Чтобы воспользоваться API, нужно делать запросы по одному из адресов:

В конец адреса нужно добавить имя метода с данными (если есть). Список методов размещен ниже. При вызове методов могут возникать ошибки, с ними можно ознакомиться в разделе Ошибки.

Удобство разработки

Чтобы было удобнее смотреть ответ сервера, можете установить расширение для Chrome - JSON Formatter. Оно будет форматировать JSON в человекочитаемый вид, так что можно будет прямо из браузера тестировать методы и сразу смотреть на результат.

Авторизация

Для получения токена разработчика, необходимо зайти на сервер MiniGames и написать команду /api dev. Вам будет выдана ссылка на страницу, где будет написан ваш токен и информация о нем. Чтобы выполнять запросы с токеном, необходимо добавить его в параметры запроса, например:

https://api.vimeworld.ru/online?token=MY_TOKEN

Либо добавить в запрос заголовок Access-Token:

Access-Token: MY_TOKEN

Лимит на количество запросов

При использовании API без токена разработчика, вы можете делать не более 60 запросов в минуту с одного IP. С использованием токена разработчика, лимит запросов в минуту увеличивается до 300. Если вам все равно этого мало, можете написать на почту me@xtrafrancyz.net и договориться о персональном лимите.

Вы можете посмотреть в заголовки(headers) любого запроса, чтобы узнать текущий статус ограничения:

X-RateLimit-Limit: 60 // количество возможных запросов в минуту
X-RateLimit-Remaining: 59 // количество оставшихся запросов
X-RateLimit-Reset-After: 16 // количество секунд, через которое лимит будет сброшен
$curl = curl_init("https://api.vimeworld.ru/online");
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 4);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
  'Access-Token: MY_TOKEN'
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

print $response;

Ошибки

Основные

Код Описание
-3 Неизвестная ошибка в работе API, при её возникновении нужно сообщить куда-нибудь.
-2 Внутренняя ошибка сервера. О ней тоже нужно куда-нибудь сообщить.
-1 По адресу, который вы указали, не нашлось ни одного метода.
1 Указан неправильный токен. Вы можете получить его командой /api dev на сервере MiniGames.
2 Исчерпано количество запросов в минуту. Подробнее о лимите запросов можете почитать тут.
3 Один из заданных параметров не передан или указан неправильно. Чтобы решить ошибку, почитайте описание метода и его параметров.
4 Метод отключен или не работает по каким-то причинам.

Дополнительные

Ошибки с кодом 10+ указывают на то что запрошенный “ресурс” не существует, например: игрок, гильдия, матч.

{
  "error": {
    "error_code": 0,
    "error_msg": "Error message",
    "comment": "Optional comment"
  }
}

Ранги игроков

Ранг Название Префикс Цвет
PLAYER Игрок    
VIP VIP [V] #00be00
PREMIUM Premium [P] #00dada
HOLY Holy [H] #ffba2d
IMMORTAL Immortal [I] #e800d5
BUILDER Билдер [Билдер] #009c00
SRBUILDER Проверенный билдер [Пр. билдер] #009c00
MAPLEAD Главный билдер [Гл. билдер] #009c00
YOUTUBE YouTube [YouTube] #fe3f3f
DEV Разработчик [Dev] #00bebe
ORGANIZER Организатор [Организатор] #00bebe
MODER Модератор [Модер] #1b00ff
WARDEN Проверенный модератор [Модер] #1b00ff
CHIEF Главный модератор [Гл. модер] #1b00ff
ADMIN Главный админ [Гл. админ] #00bebe

/user/name/:names

Получает игрока по нику

Параметры
names
Ники игроков через запятую. Они могут содержать только латинские буквы, цифры и знак подчеркивания _.

Возвращает информацию об игроке или нескольких игроках по их нику. Если игрок не найден, то он не будет показываться в ответе.

Максимальное количество ников, которые можно указать в одном запросе - 50. Если их будет больше, то сервер вернет ошибку 3 (Invalid parameters).

[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3023813,
    "lastSeen": 1611848249,
    "guild": {
      "id": 401,
      "name": "Кек дела - хорошо",
      "tag": null,
      "color": "&f",
      "level": 1,
      "levelPercentage": 0.38236,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/401.png"
    }
  }
]
[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3023813,
    "lastSeen": 1557004489,
    "lastSeen": 1611848249,
    "guild": {
      "id": 401,
      "name": "Кек дела - хорошо",
      "tag": null,
      "color": "&f",
      "level": 1,
      "levelPercentage": 0.38236,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/401.png"
    }
  },
  {
    "id": 91638,
    "username": "nikita",
    "level": 1,
    "levelPercentage": 0,
    "rank": "PLAYER",
    "playedSeconds": 0,
    "lastSeen": -1,
    "guild": null
  }
]
[]

/user/:ids

Получает игрока по id

Параметры
ids
id игроков через запятую. Можно указывать как один, так и несколько.

Возвращает информацию об игроке или нескольких игроках по их id. Если игрок с заданым id не найден, то он не будет показан в ответе.

Максимальное количество айдишников, которые можно указать в одном запросе - 50. Если их будет больше, то сервер вернет ошибку 3 (Invalid parameters).

[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3023813,
    "lastSeen": 1611848249,
    "guild": {
      "id": 401,
      "name": "Кек дела - хорошо",
      "tag": null,
      "color": "&f",
      "level": 1,
      "levelPercentage": 0.38236,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/401.png"
    }
  }
]
[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3023813,
    "lastSeen": 1611848249,
    "guild": {
      "id": 401,
      "name": "Кек дела - хорошо",
      "tag": null,
      "color": "&f",
      "level": 1,
      "levelPercentage": 0.38236,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/401.png"
    }
  },
  {
    "id": 91638,
    "username": "nikita",
    "level": 1,
    "levelPercentage": 0,
    "rank": "PLAYER",
    "playedSeconds": 0,
    "lastSeen": 1595803008,
    "guild": null
  }
]
[]

/user/:id/friends

Получает друзей игрока

Параметры
id
id игрока.

Возвращает список друзей игрока.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).

{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "friends": [
    {
      "id": 105889,
      "username": "rsboe",
      "level": 8,
      "levelPercentage": 0.856,
      "rank": "BUILDER",
      "playedSeconds": 5508358,
      "lastSeen": 1611872822,
      "guild": {
        "id": 3741,
        "name": "Build",
        "tag": "Build",
        "color": "&2",
        "level": 33,
        "levelPercentage": 0.588781,
        "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/3741.png"
      }
    },
    {
      "id": 94245,
      "username": "Okssi",
      "level": 10,
      "levelPercentage": 0.168,
      "rank": "CHIEF",
      "playedSeconds": 2596550,
      "lastSeen": 1611997655,
      "guild": null
    },
    {
      "id": 113654,
      "username": "SmaIK",
      "level": 3,
      "levelPercentage": 0.278,
      "rank": "HOLY",
      "playedSeconds": 1300227,
      "lastSeen": 1608173172,
      "guild": null
    }
  ]
}

/user/:id/session

Получает статус онлайн игрока

Параметры
id
id игрока.

Возвращает статус игрока онлайн, человекопонятное сообщение и название игры, где он находится.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).

{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "online": {
    "value": true,
    "message": "Находится в Лобби",
    "game": "LOBBY"
  }
}
{
  "user": {
    "id": 64638,
    "username": "Kynth",
    "level": 56,
    "levelPercentage": 0.76395,
    "rank": "MODER",
    "playedSeconds": 6735290,
    "lastSeen": 1612021654,
    "guild": null
  },
  "online": {
    "value": true,
    "message": "Онлайн"
  }
}
{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "online": {
    "value": false,
    "message": "Игрок оффлайн"
  }
}

/user/:id/stats

Получает статистику игрока

Параметры
id
id игрока.
Дополнительные параметры
games
Выводит только статистику указанных игр. Если вам не нужна полная статистика игрока, пожалуйста, указывайте только нужные вам игры. Игры указываются через запятую, по их id из misc/games.

Возвращает статистику всех игр, в которые играл запрашиваемый игрок. Список игр и их возможные значения статистики можно узнать с помощью метода misc/games.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).

Ответ
stats > global
Статистика по игре за все время.
stats > season
Статистика по игре за определенный сезон.
{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "stats": {
    "BW": {
      "global": {
        "kills": 76,
        "deaths": 118,
        "games": 17,
        "wins": 2,
        "bedBreaked": 5
      },
      "season": {
        "monthly": {
          "kills": 0,
          "deaths": 0,
          "games": 0,
          "wins": 0,
          "bedBreaked": 0
        }
      }
    },
    "MW": {
      "global": {
        "games": 27,
        "wins": 18,
        "mobsKilled": 1530,
        "mobsSended": 3800,
        "maxIncome": 571494
      },
      "season": {
        "monthly": {
          "games": 0,
          "wins": 0,
          "mobsKilled": 0,
          "mobsSended": 0
        }
      }
    },
    ...
  }
}
{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "stats": {
    "BW": {
      "global": {
        "kills": 76,
        "deaths": 118,
        "games": 17,
        "wins": 2,
        "bedBreaked": 5
      },
      "season": {
        "monthly": {
          "kills": 0,
          "deaths": 0,
          "games": 0,
          "wins": 0,
          "bedBreaked": 0
        }
      }
    }
  }
}

/user/:id/achievements

Получает достижения игрока

Параметры
id
id игрока.

Возвращает список всех достижений игрока. Список всех возможных достижений можно узнать с помощью метода misc/achievements.

Метод может вернуть id достижений, которых нет в списке всех достижений. Это секретные достижения, их id находится в промежутке от 9000 до 9100.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).

Ответ
id
id достижения из списка всех достижений.
time
Метка времени Unix Timestamp, когда игрок получил достижение.
{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null
  },
  "achievements": [
    {
      "id": 1,
      "time": 1454112020
    },
    {
      "id": 2,
      "time": 1454112020
    },
    {
      "id": 3,
      "time": 1454118435
    },
    {
      "id": 4,
      "time": 1454164310
    },
    {
      "id": 8,
      "time": 1454117329
    }
  ]
}

/user/:id/leaderboards

Получает место игрока в топах

Параметры
id
id игрока.

Возвращает список таблиц рекордов, куда попал данный игрок, и место в них. Список всех возможных топов можно узнать с помощью метода leaderboard/list.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).

Ответ
leaderboards -> place
Позиция игрока в топе.
{
  "user": {
    "id": 943030,
    "username": "murzuk",
    "level": 122,
    "levelPercentage": 0.83744,
    "rank": "YOUTUBE",
    "playedSeconds": 21058620,
    "lastSeen": 1557574378,
    "guild": {
      "id": 287,
      "name": "Desire to Live",
      "tag": "Кошак",
      "color": "&7",
      "level": 54,
      "levelPercentage": 0.9503689655172414,
      "avatar_url": null
    }
  },
  "leaderboards": [
    {
      "type": "user",
      "sort": "level",
      "place": 1
    }, {
      "type": "user",
      "sort": "online",
      "place": 19
    }, {
      "type": "ann",
      "sort": "kills",
      "place": 413
    }
  ]
}
{
  "user": {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 38,
    "levelPercentage": 0.4574,
    "rank": "ADMIN",
    "playedSeconds": 6265584,
    "lastSeen": 1557479038,
    "guild": null
  },
  "leaderboards": []
}

/user/:id/matches

Получает последние матчи игрока

Параметры
id
id игрока.

Возвращает список последних матчей игрока. Чуть более подробное описание можете посмотреть в методе match/latest.

Подробную информацию о конкретном матче можно получить с помощью метода match/:id.

Дополнительные параметры
count
Количество матчей, которые вернет сервер. По умолчанию - 20, максимально - 50.
offset
Количество пропущенных от начала матчей. По умолчанию - 0, максимально - 2000.
after
Будут выведены матчи, которые произошли до матча с этим ID.
before
Будут выведены матчи, которые произошли после матча с этим ID.

Если игрок с заданным id не найден, то вернется ошибка 10 (Invalid user id).
Параметры offset, after и before нельзя комбинировать в одном запросе, должен быть указан только один из них.

Ответ
matches > state
Результат игры. 0 - поражение, 1 - победа, 2 - ничья.
matches > win
Результат игры, который остался для совместимости со старыми клиентами.
{
  "user": {
    "id": 4167839,
    "username": "FLASH_Free_STAYk",
    "level": 3,
    "levelPercentage": 0.73158,
    "rank": "PLAYER",
    "playedSeconds": 16435,
    "lastSeen": 1559036750,
    "guild": null
  },
  "request": {
    "count": 20,
    "offset": 0,
    "size": 1
  },
  "matches": [
    {
      "id": "53421537142767616",
      "game": "DUELS",
      "map": {
        "id": "Nevermor",
        "name": "Невермор",
        "teams": 2,
        "playersInTeam": 1
      },
      "date": 1559037486,
      "duration": 70,
      "players": 2,
      "win": true,
      "state": 1
    },
    ...
  }

/user/session/:ids

Массовое получение статуса (до 50)

Параметры
ids
id игроков через запятую. Можно указывать как один, так и несколько.

Возвращает статус игроков онлайн, человекопонятное сообщение и название игры, где каждый из них находится.

Максимальное количество айдишников, которые можно указать в одном запросе - 50. Если их будет больше, то сервер вернет ошибку 3 (Invalid parameters).

[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null,
    "online": {
      "value": true,
      "message": "Находится в Лобби",
      "game": "LOBBY"
    }
  }
]
[
  {
    "id": 134568,
    "username": "xtrafrancyz",
    "level": 5,
    "levelPercentage": 0.894,
    "rank": "ADMIN",
    "playedSeconds": 3106732,
    "lastSeen": 1611848249,
    "guild": null,
    "online": {
      "value": true,
      "message": "Находится в Лобби",
      "game": "LOBBY"
    }
  },
  {
    "id": 94245,
    "username": "Okssi",
    "level": 37,
    "levelPercentage": 0.44946,
    "rank": "CHIEF",
    "playedSeconds": 4335897,
    "lastSeen": 1611997655,
    "online": {
      "value": false,
      "message": "Игрок оффлайн"
    }
  }
]

/user/session

Очень массовое получение статуса (до 1000)

Возвращает статус игроков онлайн, человекопонятное сообщение и название игры, где каждый из них находится.

В теле POST запроса должен быть JSON массив с айдишниками игроков. Например, для получения статуса игроков 134568 и 94245, тело запроса должно быть следующим:

[134568,94245]

Максимальное количество айдишников, которые можно указать в одном запросе - 1000. Если их будет больше, то сервер вернет ошибку 3 (Invalid parameters).

В отличие от остальных методов, цена каждого запроса не 1, а зависит от количества запрашиваемых игроков. Стоимость расчитывается по формуле cost = (size-1)/50 + 1. Например, для 50 игроков стоимость будет 1, а для 100 уже 2.

/guild/search

Ищет гильдии по названию или тегу

Возвращает список гильдий, название или тег которых содержит заданный запрос. Максимальное количество гильдий в ответе 10. При сортировке гильдий в ответе учитывается полное совпадение по тегу/названию, уровень и еще пару хитрых штук.

Параметры
query
запрос для поиска (минимум 2 символа)

Индекс гильдий обновляется раз в 10 минут.

[
  {
    "id": 1,
    "name": "Fantastic Five",
    "tag": "F5",
    "color": "&6",
    "level": 30,
    "levelPercentage": 0.66278,
    "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/1.jpg"
  },
  {
    "id": 2495,
    "name": "-F5-",
    "tag": null,
    "color": "&f",
    "level": 2,
    "levelPercentage": 0.62691,
    "avatar_url": null
  }
]

/guild/get

Получает информацию о гильдии

Искать гильдию можно по её id, названию или тегу. Для этого нужно указать один из следующих параметров.

Параметры
id *
Получение по id гильдии.
name *
Получение по названию гильдии.
tag *
Получение по тегу гильдии.
unsafe
По умолчанию, все ссылки на картинки в web_info проксируются через https://images.weserv.nl/, чтобы защитить пользователей от логгеров и обойти блокировки различных сайтов (например, картинки из ВКонтакте не будут грузиться у пользователей из Украины). Чтобы отключить проксирование и получить исходные ссылки, можно добавить этот параметр в запрос.

Если гильдия не найдена, то вернется ошибка 12 (Guild not found).

Информация обновляется раз в 10 минут.

Сомнительные поля в ответе
totalCoins
Сумма вложенных в гильдию коинов за все время её существования.
created
Метка времени Unix Timestamp, когда гильдия была создана.
members > guildCoins
Количество коинов, которые вложил игрок в гильдию.
members > guildExp
Количество опыта, которое ушло в гильдию от этого игрока.
{
  "id": 1,
  "name": "Fantastic Five",
  "tag": "-F5-",
  "color": "&6",
  "level": 61,
  "levelPercentage": 0.841909,
  "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/1.jpg",
  "totalExp": 21247241,
  "totalCoins": 93844796,
  "created": 1508631234,
  "web_info": null,
  "perks": {
    "MEMBERS": {
      "name": "Количество членов гильдии",
      "level": 16
    },
    ...
  }
  "members": [
    {
      "user": {
        "id": 176361,
        "username": "eLs",
        "level": 55,
        "levelPercentage": 0.72247,
        "rank": "WARDEN",
        "playedSeconds": 8172366,
        "lastSeen": 1611768354
      },
      "status": "LEADER",
      "joined": 1508631234,
      "guildCoins": 55000,
      "guildExp": 1123
    },
    ...
  ]
}
{
  "id": 1,
  "name": "Fantastic Five",
  "tag": null,
  "color": "&f",
  "created": 1508631234,
  "totalCoins": 55000,
  "level": 1,
  "levelPercentage": 0.81264,
  "members": [
    {
      "user": {
        "id": 176361,
        "username": "eLs",
        "level": 55,
        "levelPercentage": 0.72247,
        "rank": "WARDEN",
        "playedSeconds": 8172366
      },
      "status": "LEADER",
      "joined": 1508631234,
      "guildCoins": 55000,
      "guildExp": 1123
    },
    ...
  ]
}

/leaderboard/list

Список таблиц рекордов

Возвращает список всех доступных таблиц рекордов.

Ответ
type
Тип таблицы рекордов, он используется для получения конкретной таблицы рекордов в методе leaderboard/get.
description
Краткое описание таблицы рекордов.
max_size
Максимальное количество записей, которые вернет сервер.
sort
Список доступных вариантов таблицы рекордов.
[
  {
    "type": "bb",
    "description": "Топ игроков на BuildBattle",
    "max_size": 1000,
    "sort": [
      "wins"
    ]
  },
  {
    "type": "bp_monthly",
    "description": "Топ игроков на BlockParty (в этом месяце)",
    "max_size": 1000,
    "sort": [
      "wins"
    ]
  },
  {
    "type": "user",
    "description": "Общий топ игроков",
    "max_size": 1000,
    "sort": [
      "level",
      "online"
    ]
  },
  ...
]

/leaderboard/get/:type[/:sort]

Возвращает таблицу рекордов

Параметры
type
Тип таблицы рекордов. Список таблиц возвращает метод leaderboard/list.
sort
Вариант таблицы рекордов (необязательно).
Дополнительные параметры
size
Количество записей, которые вернет сервер. По умолчанию - 100, максимально - 1000.
offset
Количество пропущенных от начала записей. По умолчанию - 0.

Информация обновляется раз в час.

{
  "leaderboard": {
    "type": "level",
    "sort": null,
    "offset": 0,
    "size": 100,
    "max_size": 1000
  },
  "records": [
    {
      "id": 165070,
      "username": "_SmILeGames_",
      "level": 73,
      "levelPercentage": 0.25811,
      "rank": "IMMORTAL",
      "playedSeconds": 9501091,
      "lastSeen": 1580449829,
      "guild": {
        "id": 455,
        "name": "IcE",
        "tag": "-IcE-",
        "color": "&b",
        "level": 82,
        "levelPercentage": 0.556216,
        "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/455.jpg"
      }
    },
    {
      "id": 246843,
      "username": "_KorovkaGOD_",
      "level": 72,
      "levelPercentage": 0.33993,
      "rank": "IMMORTAL",
      "playedSeconds": 9199587,
      "lastSeen": -1,
      "guild": null
    },
    ...
  ]
}
{
  "leaderboard": {
    "type": "sw",
    "sort": "wins",
    "offset": 0,
    "size": 100,
    "max_size": 1000
  },
  "records": [
    {
      "user": {
        "id": 186517,
        "username": "M1halych",
        "level": 40,
        "levelPercentage": 0.71594,
        "rank": "HOLY",
        "playedSeconds": 7897811,
        "lastSeen": 1612038489,
        "guild": {
          "id": 107,
          "name": "Revenge",
          "tag": null,
          "color": "&f",
          "level": 99,
          "levelPercentage": 0.623283,
          "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/107.png"
        }
      },
      "wins": 10186,
      "games": 19068,
      "kills": 51951,
      "deaths": 5004
    },
    {
      "user": {
        "id": 211701,
        "username": "EvilMaster",
        "level": 64,
        "levelPercentage": 0.26511,
        "rank": "WARDEN",
        "playedSeconds": 9308811,
        "lastSeen": 1611804503,
        "guild": {
          "id": 1,
          "name": "Fantastic Five",
          "tag": "-F5-",
          "color": "&6",
          "level": 55,
          "levelPercentage": 0.851215,
          "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/1.jpg?t=1601541785"
        }
      },
      "wins": 9758,
      "games": 15889,
      "kills": 44634,
      "deaths": 2924
    },
    ...
  ]
}
{
  "leaderboard": {
    "type": "sw",
    "sort": "kills",
    "offset": 990,
    "size": 10,
    "max_size": 1000
  },
  "records": [
    {
      "user": {
        "id": 186517,
        "username": "M1halych",
        "level": 8,
        "levelPercentage": 0.342,
        "rank": "PLAYER",
        "playedSeconds": 15491784,
        "lastSeen": 1612038489,
        "guild": null
      },
      "wins": 6045,
      "games": 10302,
      "kills": 30099,
      "deaths": 379
    },
    {
      "user": {
        "id": 211701,
        "username": "EvilMaster",
        "level": 14,
        "levelPercentage": 0.042,
        "rank": "WARDEN",
        "playedSeconds": 14259150,
        "lastSeen": 1611804503,
        "guild": null
      },
      "wins": 5853,
      "games": 9365,
      "kills": 29179,
      "deaths": 305
    },
    ...
  ]
}

/online

Количество игроков онлайн

Возвращает количество игроков онлайн. В сумме и по каждой игре отдельно.

Список всех полных названий игр можно посмотреть с помощью метода misc/games.

Информация обновляется раз в 10 сек.

Ответ
total
Общий онлайн на MiniGames.
separated
Онлайн отдельно по каждой мини игре.
{
  "total": 14444,
  "separated": {
    "ann": 430,
    "bb": 764,
    "gg": 365,
    "lobby": 3465,
    "sw": 3756,
    "bw": 3658,
    "mw": 543,
    "kpvp": 212,
    "dr": 178,
    "bp": 294,
    "hg": 779
  }
}

/online/streams

Список стримов, которые в данный момент идут на сервере

Возвращает список активных стримов на сервере. Этот список идентичен тому, что показывается на сервере MiniGames в меню по команде /streams.

Информация обновляется раз в 10 сек.

Ответ
title
Заголовок стрима. Может содержать символы юникода.
owner
Ник ютубера, который добавил (ведет) стрим.
viewers
Количество зрителей стрима.
duration
Длительность стрима в секундах (время с начала стрима).
platform
Платформа, на которой идет стрим. Поддерживается YouTube, ВКонтакте, Twitch, GoodGame.
[
  {
    "title": "Стрим на VimeWorld.ru",
    "owner": "Okssi",
    "viewers": 95,
    "url": "https://youtu.be/dQw4w9WgXcQ",
    "duration": 6435,
    "platform": "YouTube",
    "user": {
      "id": 94245,
      "username": "Okssi",
      "level": 32,
      "levelPercentage": 0.894,
      "rank": "CHIEF",
      "playedSeconds": 5366612,
      "lastSeen": 1557003946,
      "guild": null
    }
  },
  {
    "title": "Играю с подписчиками на VimeWorld",
    "owner": "xtrafrancyz",
    "viewers": 500,
    "url": "https://youtu.be/dQw4w9WgXcQ",
    "duration": 4686,
    "platform": "YouTube",
    "user": {
      "id": 134568,
      "username": "xtrafrancyz",
      "level": 5,
      "levelPercentage": 0.894,
      "rank": "ADMIN",
      "playedSeconds": 3106732,
      "lastSeen": -1,
      "guild": null
    }
  }
]

/online/staff

Список модераторов онлайн

Возвращает список модераторов, которые в данный момент находятся на сервере.

Информация обновляется раз в 10 сек.

[
  {
    "id": 64165,
    "username": "kuclopoguk",
    "level": 37,
    "levelPercentage": 0.37101,
    "rank": "MODER",
    "playedSeconds": 5950354,
    "lastSeen": 1611737241,
    "guild": {
      "id": 927,
      "name": "TheRebellAlliance",
      "tag": "-TRA-",
      "color": "&b",
      "level": 71,
      "levelPercentage": 0.376709,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/927.png"
    },
    "online": {
      "value": true,
      "message": "Онлайн"
    }
  },
  {
    "id": 1249617,
    "username": "LoganFrench",
    "level": 37,
    "levelPercentage": 0.17737,
    "rank": "WARDEN",
    "playedSeconds": 2705011,
    "lastSeen": 1610475375,
    "guild": {
      "id": 104,
      "name": "VimeTop",
      "tag": "VTop",
      "color": "&a",
      "level": 24,
      "levelPercentage": 0.015529,
      "avatar_url": "https://mc.vimeworld.ru/launcher/guilds/104.jpg"
    },
    "online": {
      "value": true,
      "message": "Онлайн"
    }
  }
]

/match/:id

Полная информация о матче

В зависимости от игры, в ответе могут содержаться совершенно разные значения, так как в каждой игре считается разная статистика и используются разные дополнительные “характеристики”. Так, на Дуэлях присутствуют поля ranked и kit, а на BedWars у каждого игрока есть количество сломанных им кроватей - brokenBeds.

Есть и общие для всех игр поля: version, game, server, start, end, mapName (может быть null), mapId (может быть null).

Объект в поле winner может изменяться в зависимости от вида игры, а может быть null в случае ничьи:

winner: {
  "team": "teamId" // в случае командной игры
  "player": 123 // в случае игры без команд и одним победителем
  "players": [123, 456] // в случае игры без команд и с несколькими победителями
}

Список игроков players всегда содержит в себе всех играющих и каждый из игроков обязательно имеет свой id, остальные поля могут меняться в зависимости от игры.

Список команд teams присутствует только в командных играх и обязательно имеет id и members (id игроков в команде).

Список событий events содержит в себе список некоторых внутриигровых событий. Каждое событие обязательно имеет type и time (время в секундах относительно начала игры). Типы событий в разных играх могут отличаться, плюс к тому одно и то же событие в разных играх может содержать разные поля, но это больше исключение, чем правило.

Если матча с заданным id не существует, то метод вернет ошибку 13 - Match not found.

{
  "version": 1,
  "game": "DUELS",
  "server": "DUELS_6",
  "start": 1559601297,
  "mapName": "Невермор",
  "mapId": "Nevermor",
  "kit": "UHC",
  "ranked": false,
  "winner": {
    "player": 4395550
  },
  "end": 1559601425,
  "players": [
    {
      "id": 2850885,
      "kills": 0,
      "winStreak": 0,
      "dead": true
    },
    {
      "id": 4395550,
      "kills": 1,
      "winStreak": 1,
      "dead": false
    }
  ],
  "events": [
    {
      "type": "kill",
      "time": 128,
      "killer": 4395550,
      "target": 2850885
    }
  ]
}

/match/latest

Список последних матчей на сервере

Дополнительные параметры
count
Количество последних матчей, которые вернет сервер. По умолчанию - 20, максимально - 100.
Ответ
date
Время окончания матча.
map
Информация о карте, где проходил матч. Может быть null.

Список обновляется раз в 10 секунд.

[
  {
    "id": "53411386641874944",
    "game": "DUELS",
    "map": {
      "id": "EHkron",
      "name": "Экрон",
      "teams": 2,
      "playersInTeam": 1
    },
    "date": 1559035066,
    "duration": 14,
    "players": 4
  }, {
    "id": "53411386293747712",
    "game": "BW",
    "map": {
      "id": "Shosul_4x4",
      "name": "Шосул",
      "teams": 4,
      "playersInTeam": 4
    },
    "date": 1559035066,
    "duration": 871,
    "players": 16
  }
]

/match/list

Список матчей на сервере

Дополнительные параметры
before
Будут выведены все матчи, которые произошли до матча с этим ID.
after
Будут выведены все матчи, которые произошли после матча с этим ID.
count
Количество матчей, которые вернет сервер. По умолчанию - 20, максимально - 100.

При выполнении запроса, обязательно нужно указать или before, или after, иначе сервер вернет ошибку.

ID матча это не случайное число, а Snowflake ID (по мотивам Twitter и Discord, можете загуглить). Используя это знание, можно смотреть матчи, которые происходили в определенное время.

ID матча (64 бита) состоит из:

  • 42 бита - время в миллисекундах, начиная от 01.01.2019 (1546300800 unix timestamp).
  • 10 бит - внутренний ID генератора, не используется в данный момент.
  • 12 бит - счетчик, сбрасывающийся каждую миллисекунду.

Таким образом, если нужно узнать самый первый матч 29.05.2019, то запрос будет следующим:

var vime_epoch = 1546300800; // 01.01.2019 в unix timestamp
var timestamp  = 1559088000; // 29.05.2019 в unix timestamp
var id  = ((timestamp - vime_epoch) * 1000) << 22 // 1000 - делаем миллисекунды из секунд
        = 53633404108800000;
var url = "https://api.vimeworld.ru/match/list?count=1&after=" + id;
[
  {
    "id": "55786827805622272",
    "game": "DUELS",
    "map": {
      "id": "Rizaro",
      "name": "Ризаро",
      "teams": 2,
      "playersInTeam": 1
    },
    "date": 1559601416,
    "duration": 46,
    "players": 4
  },
  {
    "id": "55786827608489984",
    "game": "DUELS",
    "map": {
      "id": "KHarbi",
      "name": "Харби",
      "teams": 2,
      "playersInTeam": 1
    },
    "date": 1559601416,
    "duration": 105,
    "players": 2
  }
]

/locale/:name

Человекочитаемые названия игр, статистики, рангов

Параметры
name
Короткое имя языка, в данный момент доступен только ru.

Возвращает названия всевозможных вещей, которые могут понадобиться при отображении информации.

Дополнительные параметры
parts
Возвращает только указанные части локализации. Указываются через запятую, например games,ranks.
{
  "games": {
    "ann": {
      "name": "Annihilation"
    },
    ...
  },
  "game_stats": {
    "ann": {
      "kills": "Убийств",
      "bowkills": "Убийств из лука",
      "wood": "Срублено дерева",
      "ores": "Руды выкопано",
      "nexus": "Урона по базе",
      "digged": "Земли выкопано"
    },
    ...
  },
  "ranks": {
    "player": {
      "name": "Игрок",
      "prefix": ""
    },
    ...
  }
}
{
  "game_stats": {
    "ann": {
      "kills": "Убийств",
      "bowkills": "Убийств из лука",
      "wood": "Срублено дерева",
      "ores": "Руды выкопано",
      "nexus": "Урона по базе",
      "digged": "Земли выкопано"
    },
    ...
  }
}

/misc/games

Список игр, по которым ведется статистика

Возвращает список всех игр, которые поддерживаются API.

Ответ
global_stats
Все возможные значения статистики по этой игре за все время.
season_stats
Возможные значения статистики по игре за определенный сезон.
  • monthly - за текущий месяц.
  • manual - сбрасывается вручную.
[
  {
    "id": "ANN",
    "name": "Annihilation",
    "global_stats": [
      "kills",
      "bowkills",
      "wood",
      "ores",
      "nexus",
      "digged"
    ],
    "season_stats": {
      "monthly": [
        "kills",
        "bowkills",
        "wood",
        "ores",
        "nexus",
        "digged"
      ]
    }
  },
  {
    "id": "BB",
    "name": "BuildBattle",
    "global_stats": [
      "games",
      "wins"
    ],
    "season_stats": {
      "monthly": [
        "games",
        "wins"
      ]
    }
  },
  ...
]

/misc/maps

Список карт, сгруппированный по играм

Возвращает список всех карт на VimeWorld.ru. Здесь могут быть игры, которых нет в ответе misc/games, например SWT. Технически это одна игра, но список карт для SW и SWT разный.

Ответ
teams
Количество команд на этой карте.
playersInTeam
Количество игроков в каждой команде.
{
  "ANN": {
    "Atlas": {
      "name": "Атлас",
      "teams": 4,
      "playersInTeam": 25
    },
    "Castles": {
      "name": "Замки",
      "teams": 4,
      "playersInTeam": 25
    }
  },
  "BW": {
    "Actuon_4x2": {
      "name": "Актуон",
      "teams": 2,
      "playersInTeam": 4
    },
    "Alezia_2x4": {
      "name": "Алезия",
      "teams": 4,
      "playersInTeam": 2
    },
    ...
  },
  ...
]

/misc/achievements

Список всех возможных достижений

Возвращает список всех возможных достижений с их описанием, кроме секретных.

Все достижения разделены на группы (Глобальные, Лобби, SkyWars и т.д.), в каждой из которых может быть сколько угодно достижений.

Ответ
reward
Награда за выполнение достижения в коинах.
{  
  "Глобальные": [
    {  
      "id": 1,
      "title": "Экономист",
      "reward": 3000,
      "description": [  
        "Иметь в кармане 20.000 коинов"
      ]
    },
    {  
      "id": 2,
      "title": "Богатенький буратино",
      "reward": 10000,
      "description": [  
        "Иметь в кармане 100.000 коинов"
      ]
    },
    ...
  ],
  "SkyWars": [  
    {  
      "id": 201,
      "title": "Паркурист",
      "reward": 1500,
      "description": [  
        "Пройти паркур в лобби SkyWars"
      ]
    },
    {  
      "id": 202,
      "title": "Коварство I",
      "reward": 10000,
      "description": [  
        "Скинуть 100 игроков в бездну"
      ]
    },
    ...
  ],
  ...
}

/misc/token/:token

Возвращает информацию о токене

Существует 3 вида токенов:

Тип Описание Владелец Лимит
DEV Данный токен используется для выполнения запросов к апи с увеличеным лимитом запросов. Можно получить по команде /api dev на сервере MiniGames. Нет Да
AUTH Используется для авторизации игрока на вашем сайте или в любом другом месте. Токен действует в течение часа до первого использования. Можно получить по команде /api auth на сервере MiniGames. Да Нет
LEGACY Имеет свойства и DEV и AUTH, его можно было получить до 04.04.2018. Да Да

В зависимости от типа токена, в ответе могут содержаться или отсутствовать некоторые поля, например, поле owner будет доступно только для AUTH и LEGACY токенов.

{
  "token": "xxx",
  "valid": true,
  "type": "LEGACY",
  "limit": 300,
  "owner": {
    "id": 2113516,
    "username": "ItzRubick",
    "level": 31,
    "levelPercentage": 0.58894,
    "rank": "PLAYER",
    "playedSeconds": 3345895,
    "guild": {
      "id": 5161,
      "name": "Neon",
      "tag": null,
      "color": "&f",
      "level": 6,
      "levelPercentage": 0.97677
    }
  }
}
{
  "token": "notExists",
  "valid": false
}