Сервер игры Apeiron
Для игр, опубликованных в Apeiron. Игра узнаёт, кто играет, от лаунчера Apeiron, ваш сервер подтверждает это у нас, а потом выдаёт игроку предметы, которые живут в его инвентаре Apeiron: их можно хранить, дарить, менять с друзьями и продавать на площадке.
Базовый адрес https://apeiron.aperturesyndicate.com/api/v1/game-server/<product><product> — id вашей игры pb_… из Dev Studio.
Как части связаны
- Игра подключается к лаунчеру Apeiron на ПК игрока и просит билет сессии. Билет живёт 10 минут и годится только для вашей игры.
- Ваш сервер отправляет билет нам вместе с игровым ключом и получает настоящий аккаунт. Изменённый клиент подделать его не может.
- Ваш сервер выдаёт этому аккаунту предметы по ключу — награду за задание, дроп, админское
/give.
Apeiron SDK делает шаги 1–3 за вас: Apeiron.cs для Unity и Godot .NET, apeiron-server.ts для Node, Bun и Deno. Из любого другого языка — HTTP-эндпоинты ниже.
var apeiron = await ApeironClient.ConnectAsync("pb_your_game");
string ticket = await apeiron.GetAuthTicketAsync();
await myServer.SendAsync("login", ticket);import { ApeironServer } from './apeiron-server'
const apeiron = new ApeironServer({ productId: 'pb_your_game', gameKey: process.env.APEIRON_GAME_KEY! })
const player = await apeiron.verifyTicket(ticketFromClient)
await apeiron.grant({ userId: player.userId, defKey: 'golden_helmet', grantRef: `quest-42:${player.userId}` })Без запущенного лаунчера SDK сообщает, что пользователя нет. Таких игроков пускайте своим входом — или через Вход через Syndicate — и без предметов.
Игровые ключи
Ключи выпускаются в Dev Studio → Apps & games → ваша игра → Items → Game server keys. Ключ начинается с ags_, работает только для одной игры и передаётся в заголовке x-game-key. Держите его на сервере; утёк — отзовите там же.
Эндпоинты
| Метод | Эндпоинт | Тело | |
|---|---|---|---|
POST | /auth/verify | { ticket } | Билет → аккаунт |
POST | /inventory/grant | { userId, defKey, grantRef? } | Выдать предмет |
GET | /inventory/:userId | Предметы игрока в вашей игре | |
POST | /inventory/consume | { userId, instanceId } | Израсходовать предмет |
Проверить билет
curl -X POST https://apeiron.aperturesyndicate.com/api/v1/game-server/pb_your_game/auth/verify \
-H "x-game-key: ags_…" -H "content-type: application/json" \
-d '{"ticket":"v1.…"}'{ "userId": "5f0c…", "nickname": "Nova", "ownsProduct": true, "expiresAt": "2026-10-29T12:10:00.000Z" }ownsProduct равен false у того, кто запустил игру, не владея ею, — на бесплатных выходных или с ПК друга. Что ему можно, решаете вы.
Выдать предмет
{ "userId": "5f0c…", "defKey": "golden_helmet", "grantRef": "quest-42:5f0c…" }Ответ — 201 с { "item": { "instanceId", "defKey", "createdAt" } }. Всегда передавайте grantRef (до 160 символов из A–Z a–z 0–9 : | . _ -): повторная выдача с тем же grantRef вернёт уже выданный предмет с кодом 200, а не вторую копию, поэтому повтор после таймаута безопасен. Игрок получает уведомление.
Список и расход
GET /inventory/:userId отвечает { "items": [{ "instanceId", "defKey", "createdAt" }] }. POST /inventory/consume отвечает { "ok": true } или 404, если предмет не его или уже израсходован.
Предметы
Опишите предметы в Dev Studio → ваша игра → Items: ключ, название и описание на английском (русский по желанию), иконку, редкость, можно ли менять и продавать, лимит на игрока, нужное DLC. Затем отправьте набор на проверку.
- Пока набор не одобрен, предметы выдаются только вам — тестовыми копиями, которые нельзя передать и которые исчезнут после решения.
- Предмет DLC выдаётся только владельцам этого DLC.
- На площадке продаются только предметы, которые выдаёт ваш сервер. То, что клиент игры может выдать сам, ограничено по частоте в час и на продажу не выставляется.
- С каждой продажи на площадке берётся 10 %: 5 % нам и 5 % вам, в кошелёк заработка.
Ошибки
| Статус | code | Значит |
|---|---|---|
401 | apeiron.serverkey.invalid | Ключа нет, он неверный или от другой игры |
401 | apeiron.ticket.invalid | Билет истёк, подделан или выдан для другой игры |
400 | apeiron.inventory.invalid | Неверное тело или userId |
409 | apeiron.inventory.unknown | Предмета с таким defKey нет (или он ещё не одобрен, а игрок — не вы) |
409 | apeiron.inventory.limit | У игрока уже максимум таких предметов |
409 | apeiron.inventory.addon | Предмет из DLC, которого у игрока нет |
404 | apeiron.inventory.missing | Нечего расходовать |