Документация

API LeafNet AI

API полностью совместим с форматом OpenAI Chat Completions. Любая библиотека или программа, которая умеет работать с OpenAI, заработает с нами — поменяй только адрес и ключ.

Базовый адресhttps://ai.leafnet.su/v1
ЭндпоинтыPOST /chat/completions · GET /models
Ключсоздаётся в личном кабинете
  1. Открой бота и нажми «Старт» — получишь бесплатные запросы.
  2. Войди на сайт через Telegram и создай ключ в кабинете.
  3. Подставь ключ и адрес в свой код — готово.

Авторизация

Передавай ключ в заголовке Authorization:

Authorization: Bearer lf-xxxxxxxxxxxxxxxx

Ключ показывается один раз при создании — сохрани его. Если ключ утёк, удали его в кабинете и создай новый.

Chat Completions

POST https://ai.leafnet.su/v1/chat/completions

# pip install openai
from openai import OpenAI

client = OpenAI(base_url="https://ai.leafnet.su/v1", api_key="lf-...")

resp = client.chat.completions.create(
    model="gpt-mini",
    messages=[
        {"role": "system", "content": "Ты — полезный помощник."},
        {"role": "user", "content": "Придумай 3 названия для кофейни"},
    ],
    temperature=0.7,
)
print(resp.choices[0].message.content)
print(resp.usage)  # сколько токенов ушло

Поддерживаются параметры: messages, temperature, top_p, max_tokens (не больше 4096), stop, stream, response_format, tools / tool_choice, seed, presence_penalty, frequency_penalty.

Стриминг

Передай "stream": true — ответ придёт кусочками в формате Server-Sent Events, как у OpenAI.

stream = client.chat.completions.create(
    model="claude",
    messages=[{"role": "user", "content": "Напиши стих про осень"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)

Картинки на вход

Модели с поддержкой зрения принимают изображения ссылкой или в base64:

messages=[{
    "role": "user",
    "content": [
        {"type": "text", "text": "Что на фото?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}},
    ],
}]

Модели и цены

В поле model можно передать короткое имя из таблицы. Актуальный список — GET /v1/models.

modelНазваниеФотоЦена за 1000 токенов
gpt-miniGPT-4o miniда0.05 запроса
geminiGemini 2.5 Flashда0.15 запроса
deepseekDeepSeek V3—0.1 запроса
gptGPT-4oда0.6 запроса
claudeClaude Sonnetда0.8 запроса

Оплата

Баланс общий для бота и API. После каждого запроса списывается (входные + выходные токены) / 1000 × цена модели. Дробные части копятся и списываются, когда набирается целый запрос.

Пополнить баланс можно в боте за Telegram Stars: команда /buy. Расход по каждому запросу виден в кабинете.

Пример: запрос к gpt-mini на 1 500 токенов стоит 1,5 × 0.05 = 0.075 запроса.

Ошибки и лимиты

КодЧто значит
401Нет ключа или ключ неверный/удалён
402Закончился баланс — пополни в боте
400Неизвестная модель или неправильный запрос
429Больше 60 запросов в минуту на ключ или модель перегружена
502Провайдер модели временно недоступен — попробуй позже

Ошибки возвращаются в формате OpenAI: {"error": {"message": "...", "code": "..."}}. За неуспешные запросы деньги не списываются.