Для приложений и нейросетей

API Feylost

Управляйте своим аккаунтом, персонажами и листами через REST или подключите тот же набор возможностей как MCP-сервер.

REST APIhttps://feylost.ru/api/v1
MCPhttps://feylost.ru/mcp
АвторизацияOAuth 2.1 · PKCE S256

Первый запрос

После OAuth-подключения передавайте access token в заголовке Authorization. Токены нельзя помещать в URL или журналы.

curl https://feylost.ru/api/v1/characters \
  -H "Authorization: Bearer <access_token>"

Ответы с пользовательскими данными имеют Cache-Control: no-store. Тело изменяющих запросов передаётся как JSON и ограничено 2 МБ.

Авторизация

API использует Authorization Code с обязательным PKCE S256 и Dynamic Client Registration. Discovery начинается с защищённого ресурса MCP и приводит клиента к OAuth-серверу Feylost.

Protected resource
/.well-known/oauth-protected-resource
Authorization server
/.well-known/oauth-authorization-server/api/auth
Audience
https://feylost.ru/mcp
Срок действия
Access token 1 час, refresh token до 30 дней

Разрешения

Пользователь видит и подтверждает каждый scope при подключении. Токен открывает только собственные данные и никогда не включает административный режим или эмуляцию пользователя.

profile:readУвидеть имя и email профиля
account:readПросматривать свой аккаунт, активные сессии и подключения
account:writeИзменять имя профиля и отзывать свои сессии и подключения
characters:readЧитать персонажей
characters:writeСоздавать, изменять, архивировать и удалять персонажей
sheets:readЧитать шаблоны и игровые листы
sheets:writeСоздавать, изменять, копировать, архивировать и удалять листы
catalog:readИскать заклинания в каталоге
catalog:writeУправлять добавленными вручную заклинаниями

Email, пароль, способы входа и удаление аккаунта изменяются только интерактивно на сайте. OAuth-клиент не может захватить учётную запись даже со scope account:write.

Методы API

Аккаунт

Профиль, активные сессии и подключённые приложения.

GET/profileПолучить краткий профиль
GET/auditПолучить журнал действий интеграций
GET/accountПрочитать аккаунт
PATCH/accountИзменить отображаемое имя
GET/account/sessionsПосмотреть активные сессии
DELETE/account/sessions/{id}Завершить сессию
GET/account/integrationsПосмотреть подключения
DELETE/account/integrations/{id}Отозвать подключение

Персонажи

Карточки персонажей и их архивное состояние.

GET/charactersПолучить список
POST/charactersСоздать персонажа
GET/characters/{id}Открыть персонажа
PATCH/characters/{id}Изменить поля персонажа
PATCH/characters/{id}/patchПрименить JSON Patch
DELETE/characters/{id}Удалить персонажа и его листы

Листы

Шаблоны и игровые листы с полной структурой build и runtime.

GET/sheetsПолучить список
POST/sheetsСоздать или скопировать лист
GET/sheets/{id}Получить полный лист
PATCH/sheets/{id}Изменить структуру листа
PATCH/sheets/{id}/patchПрименить JSON Patch
PATCH/sheets/{id}/visibilityИзменить публичность
POST/sheets/{id}/templateСохранить как шаблон
DELETE/sheets/{id}Удалить лист

Заклинания

Общий каталог и личные заклинания текущего пользователя.

GET/spellsИскать в доступном каталоге
POST/spellsСоздать личное заклинание
GET/spells/{id}Открыть заклинание
PATCH/spells/{id}Изменить личное заклинание
DELETE/spells/{id}Удалить личное заклинание

Версии и конфликты

Персонажи и листы содержат целочисленное поле version. Перед изменением клиент читает ресурс и отправляет полученную версию вместе с PATCH или DELETE. Если ресурс уже изменился, API отвечает HTTP 409.

{
  "version": 4,
  "operations": [
    { "op": "test", "path": "/name", "value": "Старое имя" },
    { "op": "replace", "path": "/name", "value": "Новое имя" }
  ]
}

JSON Patch поддерживает add, replace, remove и test, но не позволяет менять владельца, id, служебные даты и version.

Ошибки

400Неверные данные или операция
401Токен отсутствует, истёк или отозван
403Не выдан необходимый scope
404Ресурс не найден или принадлежит другому пользователю
409Конфликт version
413JSON больше 2 МБ
{
  "error": {
    "code": "validation_error",
    "message": "Проверьте заполнение полей",
    "issues": [{ "path": "name", "message": "Обязательное поле" }]
  }
}

Нужен диалог вместо HTTP?

Подключите https://feylost.ru/mcp к ChatGPT, Codex, Claude или другому MCP-клиенту. Разрешения и модель доступа останутся теми же.

Открыть подключения