Сервер игры Apeiron

Last updated: 2026-10-29Как связать игру и её сервер с аккаунтом Синдиката игрока через Apeiron — билеты сессии, игровые ключи и выдача предметов в инвентарь игрока.

Сервер игры Apeiron

Для игр, опубликованных в Apeiron. Игра узнаёт, кто играет, от лаунчера Apeiron, ваш сервер подтверждает это у нас, а потом выдаёт игроку предметы, которые живут в его инвентаре Apeiron: их можно хранить, дарить, менять с друзьями и продавать на площадке.

text
Базовый адрес   https://apeiron.aperturesyndicate.com/api/v1/game-server/<product>

<product> — id вашей игры pb_… из Dev Studio.

Как части связаны

  1. Игра подключается к лаунчеру Apeiron на ПК игрока и просит билет сессии. Билет живёт 10 минут и годится только для вашей игры.
  2. Ваш сервер отправляет билет нам вместе с игровым ключом и получает настоящий аккаунт. Изменённый клиент подделать его не может.
  3. Ваш сервер выдаёт этому аккаунту предметы по ключу — награду за задание, дроп, админское /give.

Apeiron SDK делает шаги 1–3 за вас: Apeiron.cs для Unity и Godot .NET, apeiron-server.ts для Node, Bun и Deno. Из любого другого языка — HTTP-эндпоинты ниже.

csharp
var apeiron = await ApeironClient.ConnectAsync("pb_your_game");
string ticket = await apeiron.GetAuthTicketAsync();
await myServer.SendAsync("login", ticket);
typescript
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 }Израсходовать предмет

Проверить билет

bash
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.…"}'
json
{ "userId": "5f0c…", "nickname": "Nova", "ownsProduct": true, "expiresAt": "2026-10-29T12:10:00.000Z" }

ownsProduct равен false у того, кто запустил игру, не владея ею, — на бесплатных выходных или с ПК друга. Что ему можно, решаете вы.

Выдать предмет

json
{ "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Значит
401apeiron.serverkey.invalidКлюча нет, он неверный или от другой игры
401apeiron.ticket.invalidБилет истёк, подделан или выдан для другой игры
400apeiron.inventory.invalidНеверное тело или userId
409apeiron.inventory.unknownПредмета с таким defKey нет (или он ещё не одобрен, а игрок — не вы)
409apeiron.inventory.limitУ игрока уже максимум таких предметов
409apeiron.inventory.addonПредмет из DLC, которого у игрока нет
404apeiron.inventory.missingНечего расходовать
Сервер игры Apeiron | AS Docs