Документация API
OpenAI-совместимый API: текст, изображения, видео и эмбеддинги — один ключ, один баланс.
base_url and the key in any OpenAI client, and it works.
Create an sk-… key in the console (email signup), top up
from $1 (Telegram Stars or USDT TRC-20), then call
/v1/chat/completions (text), /v1/images/generations (images),
/v1/embeddings (RAG) or async /v1/videos (video, incl.
image-to-video; poll the task id, fetch mp4 from
/content). Failed tasks are never billed. The complete reference
below is in Russian; support answers in English too — just write in the
Telegram bot.
Быстрый старт
API полностью совместим с OpenAI: возьмите любой клиент для OpenAI,
поменяйте base_url и ключ. Ключ создаётся в консоли за 10 секунд,
вход — по e-mail.
BASE_URL = https://api.rodnik.ai/v1
API_KEY = sk-... # Консоль → API-ключи
💡 Без кода: те же модели доступны в нашем Telegram-боте —
команды /img и /video, или пришлите фото с подписью,
чтобы его «оживить». Оплата — с того же баланса.
Текст — chat/completions
Стриминг поддерживается (SSE). Рекомендуем glm-4.5-air для
быстрых задач, glm-5.3 для сложных, deepseek-v4-flash для
логики и математики.
# pip install openai
from openai import OpenAI
client = OpenAI(
base_url="https://api.rodnik.ai/v1",
api_key="sk-...",
)
resp = client.chat.completions.create(
model="glm-5.2",
messages=[
{"role": "system", "content": "Ты — помощник, отвечай по-русски."},
{"role": "user", "content": "Объясни RAG в двух предложениях"},
],
stream=True, # потоковая выдача
)
for chunk in resp:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
// npm i openai — Node.js / JavaScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.rodnik.ai/v1",
apiKey: "sk-...",
});
const stream = await client.chat.completions.create({
model: "glm-5.2",
messages: [{ role: "user", content: "Привет! Кто ты?" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Изображения — images/generations
Синхронный вызов; по умолчанию приходит ссылка (url), base64 —
через response_format="b64_json". До 10 изображений за запрос.
resp = client.images.generate(
model="kolors",
prompt="минималистичный постер: гора, закат, плоские цвета",
n=1,
size="1024x1024",
)
url = resp.data[0].url # скачайте по ссылке
# то же самое в curl
curl https://api.rodnik.ai/v1/images/generations \
-H "Authorization: Bearer sk-..." -H "Content-Type: application/json" \
-d '{"model":"kolors","prompt":"горный пейзаж, закат","n":1,"size":"1024x1024"}'
Видео — /v1/videos
Формат как у OpenAI: создаёте задачу → опрашиваете статус → скачиваете mp4. Обычно 1–5 минут. До 4 задач одновременно. Оплата — за успешный результат.
# pip install httpx
import httpx, time
BASE, KEY = "https://api.rodnik.ai", "sk-..."
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}
# 1) Создать задачу
r = httpx.post(f"{BASE}/v1/videos", headers=H, json={
"model": "wan22-t2v",
"prompt": "кот идёт по мокрой улице под дождём, кинематографично",
"seconds": "5",
"size": "852x480",
})
vid = r.json()["id"]
# 2) Опрашивать статус (раз в 3–5 секунд)
while True:
v = httpx.get(f"{BASE}/v1/videos/{vid}", headers=H).json()
print(v["status"], v.get("progress", 0), "%")
if v["status"] in ("completed", "failed"):
break
time.sleep(5)
# 3) Скачать mp4
if v["status"] == "completed":
mp4 = httpx.get(f"{BASE}/v1/videos/{vid}/content", headers=H).content
open("out.mp4", "wb").write(mp4)
# Фото → видео: multipart с файлом input_reference (фикс. 5 секунд)
curl https://api.rodnik.ai/v1/videos \
-H "Authorization: Bearer sk-..." \
-F model=wan22-i2v \
-F seconds=5 \
-F prompt="оживи это фото: лёгкое движение камеры" \
-F input_reference=@photo.jpg
Эмбеддинги — bge-m3
Для поиска и RAG, мультиязычные (ru/en/zh + 100 языков). $0.01 / 1M токенов.
resp = client.embeddings.create(
model="bge-m3",
input=["Первый документ", "Второй документ"],
)
vec = resp.data[0].embedding # 1024 измерения
Ошибки и лимиты
| Код | Причина | Что делать |
|---|---|---|
401 | Неверный или отозванный ключ | Проверьте ключ / создайте новый в консоли |
402 | Недостаточно баланса | Пополните в консоли (USDT TRC-20), в боте (Stars) или картой/СБП — как оплатить без крипты |
429 | Слишком частые запросы / очередь видео заполнена | Повторите через минуту; видео — не более 4 одновременно |
5xx | Сбой на нашей стороне | Средства не списываются — просто повторите запрос |
| Таймаут видео | Задача выполняется дольше обычного | Опрашивайте статус, не держите длинный HTTP-запрос |
Тарификация: текст — $ за 1 млн токенов (вход/выход раздельно); изображения — за штуку; видео — фиксированная цена за ролик указанной длительности, ожидание не тарифицируется. Лимиты: промпт до 5 000 символов; изображения — до 10 за запрос; видео — 4 параллельные задачи. Полные цены — в таблице тарифов. Не нашли ответ? Напишите в наш Telegram-бот — ИИ-ассистент отвечает мгновенно.