Документация
API совместим с OpenAI: если клиент умеет ходить в OpenAI/минимум настраиваемый base_url — он заработает.
Быстрый старт
- Создай ключ в разделе «Профиль» (понадобится парольная фраза).
- В настройках клиента поставь
base_url=https://reletnless.su/api/v1. - Модель указывается в формате
провайдер/модель— смотри таблицу ниже.
curl
curl https://reletnless.su/api/v1/chat/completions \
-H "Authorization: Bearer sk-relay-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "openrouter/z-ai/glm-5.2:free",
"messages": [{"role": "user", "content": "Привет!"}],
"stream": true
}'Python (openai SDK)
python
from openai import OpenAI
client = OpenAI(
base_url="https://reletnless.su/api/v1",
api_key="sk-relay-ВАШ_КЛЮЧ",
)
resp = client.chat.completions.create(
model="openrouter/z-ai/glm-5.2:free",
messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)python · stream
# стриминг: текст появляется по мере генерации
stream = client.chat.completions.create(
model="openrouter/z-ai/glm-5.2:free",
messages=[{"role": "user", "content": "Придумай короткий анекдот"}],
stream=True,
)
for chunk in stream:
piece = chunk.choices[0].delta.content
if piece:
print(piece, end="", flush=True)JavaScript / Node
javascript
const res = await fetch("https://reletnless.su/api/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer sk-relay-ВАШ_КЛЮЧ",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "openrouter/z-ai/glm-5.2:free",
messages: [{ role: "user", content: "Привет!" }],
stream: true,
}),
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
process.stdout.write(decoder.decode(value, { stream: true }));
}Список моделей и их статус
curl
curl https://reletnless.su/api/v1/models
# статус и средний TPS всех моделей:
curl https://reletnless.su/api/v1/status/api/v1/models возвращает объекты в OpenAI-формате (поле data). /api/v1/status — статусы, средний TPS и число запросов по каждой модели.
Формат имени модели
Значение model: <провайдер>/<id модели>. Префикс выбирает бэкенд, всё после первого слэша уходит провайдеру как есть.
| Провайдер | Пример модели | Бесплатно |
|---|---|---|
| openrouter | openrouter/z-ai/glm-5.2:free | десятки :free моделей (список в /api/v1/models) |
| gemini | gemini/gemini-3.8-flash | free tier AI Studio |
| qwen | qwen/qwen-flash | 1М токенов × 90 дней |
Лимиты
| Источник | Лимит |
|---|---|
| OpenRouter (free-модели) | 20 запросов/мин, 50/день; 1000/день после разового пополнения $10 |
| Gemini (free tier) | ≈5–10 запросов/мин, 100–250/день на Flash-модели |
| Qwen (free tier) | 1 млн токенов на каждую модель в первые 90 дней |
Статусы моделей
РаботаетПерегрузЛимитНе работаетНет трафикаНет данных
«Работает» — аптайм ≥98% за сутки по реестру openrouter-uptime. «Перегруз» — деградация или свежая ошибка 5xx. «Лимит» — исчерпан бесплатный лимит (429). «Не работает» — даун. Средний TPS считается по собственным замерам через этот прокси (токенов/сек).
Коды ошибок
| Ответ | Что значит |
|---|---|
| 401 invalid_api_key | Ключ не создан в «Профиле» или неверен |
| 403 bad_password | Неверная парольная фраза при создании ключа |
| 429 | Исчерпан лимит провайдера (смотри статус модели) |
| 502 | Провайдер недоступен |
| 503 provider_disabled | Ключ провайдера не настроен на сервере |