Инструкция / API reference

Selector API reference

Актуальный список endpoint-ов и режимов работы Selector.
Dashboard

Базовые URL

Аутентификация API

Поддерживаются все варианты ниже:

Authorization: Bearer sel_...
Authorization: Basic base64("sel_...:")
Authorization: Basic base64("username:sel_...")
x-selector-api-key: sel_...
selector-api: sel_...

Scope API-ключа: all или local. Для local облачные модели скрываются и недоступны.

Системные endpoint-ы

GET
/healthz

Сервисный health: статус прогрева источников, очереди инференса, reachable провайдеры/модели.

curl -sS https://HOST/healthz
GET
/info

Веб-панель мониторинга.

GET
/info/stats

Полная статистика для панели: модели, провайдеры, лимиты, очередь, топы, daily-метрики, local GPU state.

curl -sS -u "sel_...:" https://HOST/info/stats | jq .models_summary
GET
/docs, /docs/api

Инструкция и API reference.

GET
/emblem.svg, /favicon.svg

Статические ресурсы интерфейса.

Модели и каталоги

GET
/api/tags

Ollama-совместимый список моделей. Всегда содержит спец-модель selector.

В details добавляются selector-поля: selector_model_type, selector_source_provider_type, selector_source_upstream, selector_bad_model.

curl -sS -u "sel_...:" https://HOST/api/tags | jq '.models[0:5]'
GET
/v1/models

OpenAI-compatible список моделей (для клиентов v1).

curl -sS -u "sel_...:" https://HOST/v1/models | jq '.data[0:5]'

Инференс (Ollama-compatible)

POST
/api/chat

Чат в формате Ollama. Поддерживает stream: true/false.

curl -X POST https://HOST/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sel_..." \
  -d '{
    "model":"selector",
    "messages":[{"role":"user","content":"Ты кто?"}],
    "stream":false
  }'
POST
/api/generate

Текстовая генерация в формате Ollama.

curl -X POST https://HOST/api/generate \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sel_..." \
  -d '{"model":"selector","prompt":"Сделай краткий план","stream":false}'

Опциональные selector-поля

Инференс (OpenAI-compatible)

POST
/v1/chat/completions

OpenAI-style chat completions. Поддерживается streaming и passthrough, где возможно.

curl -X POST https://HOST/v1/chat/completions \
  -H "Content-Type: application/json" \
  -u "sel_...:" \
  -d '{
    "model":"gpt-oss:20b",
    "messages":[{"role":"user","content":"Сколько сейчас времени?"}],
    "stream":false
  }'
POST
/responses

Responses API root-path (совместимость для клиентов, вызывающих /responses).

POST
/v1/responses

Responses API в пространстве /v1. Selector конвертирует форматы при необходимости.

curl -X POST https://HOST/v1/responses \
  -H "Content-Type: application/json" \
  -u "sel_...:" \
  -d '{"model":"selector","input":"Привет"}'

Auth endpoint-ы

POST
/auth/register

Регистрация пользователя. Новый пользователь попадает в статус pending до подтверждения admin.

{"username":"user1","password":"pass12345"}
POST
/auth/login

Логин по username/password. Возвращает session cookie.

{"username":"user1","password":"pass12345"}
POST
/auth/logout

Логаут и удаление сессионных cookie.

GET
/auth/me

Информация о текущем пользователе: роль, статус, баланс, scope, dlp_disabled.

POST
/auth/change-password

Смена собственного пароля (только при auth_via=session).

{"current_password":"old","new_password":"new"}
POST
/auth/settings/dlp

Вкл/выкл проверки конфиденциальности для текущего пользователя.

{"disabled": true}
POST
/auth/api-keys/create

Создать API ключ. Поля: name, scope (all или local).

{"name":"codex","scope":"all"}
GET
/auth/api-keys

Список API ключей пользователя (без полного значения ключа).

POST
/auth/api-keys/revoke

Отозвать API ключ по id.

{"id": 123}

Shared resources

GET
/auth/shared-resources

Список ваших опубликованных ресурсов и их статистики (модели, запросы, токены, заработанные баллы).

GET
/auth/shared-resources/rewards

Последняя история начислений по вашим ресурсам. Поддерживает query-параметр ?limit=20.

POST
/auth/shared-resources/register

Зарегистрировать свой ollama или lmstudio ресурс.

{"kind":"ollama","base_url":"http://127.0.0.1:11434","label":"home-ollama"}
POST
/auth/shared-resources/heartbeat

Периодический heartbeat от утилиты публикации ресурса.

{"id":1,"status":"active","last_models_count":12}
POST
/auth/shared-resources/set-enabled
{"id":1,"enabled":false}
POST
/auth/shared-resources/delete
{"id":1}

Эти endpoint-ы используются утилитой scripts/share_resource_agent.py. В UI страницы /info для пользователя есть готовые команды запуска для Linux и Windows, а также отдельная история начислений.

Route decisions (Important Idea)

GET
/auth/route-decisions/pending

Список ожидающих решений маршрутизации (local/cloud) при обнаружении important idea.

POST
/auth/route-decisions/resolve

Подтверждение решения.

{"decision_id":"dec_...","action":"local"}

Admin endpoint-ы

Требуется роль admin и session auth.

GET
/auth/admin/users

Список пользователей, роли/статусы, баланс, user activity (IP и модельные счётчики).

POST
/auth/admin/users/create

Создать пользователя вручную.

{"username":"u2","password":"pass12345","role":"user","status":"active"}
POST
/auth/admin/users/set-role
{"username":"u2","role":"admin"}
POST
/auth/admin/users/set-status
{"username":"u2","status":"active"}
POST
/auth/admin/users/set-password
{"username":"u2","password":"newpass"}
POST
/auth/admin/users/set-credits
{"username":"u2","credits":1500}
POST
/auth/admin/users/delete
{"username":"u2"}
POST
/auth/admin/auto-update/run

Запуск проверки автообновления вручную.

GET
/auth/admin/request-details/{trace_id}

Детали конкретного запроса: служебные поля и log entries (без тел запроса/ответа).

Логи ограничены последними 10 запросами на каждого пользователя.

Коды ошибок и поведение

Для части провайдеров Selector использует сквозной passthrough, чтобы поведение максимально совпадало с upstream API.