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

OpenAI-совместимый API: текст, изображения, видео и эмбеддинги — один ключ, один баланс.

English quickstart (summary) — use the documented OpenAI-compatible endpoints: set base_url and the key in a compatible client, then check the methods supported by your model. Create an sk-… key in the console (email signup), top up from $1 via USDT. Roubles require a third-party exchange with its own minimum and fees. Then call /v1/chat/completions (text), /v1/images/generations (images), /v1/embeddings (RAG), /v1/audio/transcriptions (speech-to-text) 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 · support@rodnik.ai.

Быстрый старт

Для подключения клиента с поддержкой OpenAI-совместимого API укажите адрес ниже и ключ из консоли. Доступные методы и параметры зависят от модели. Создайте аккаунт по e-mail, затем выпустите ключ для своего приложения.

BASE_URL = https://api.rodnik.ai/v1
API_KEY  = sk-...   # Консоль → API-ключи

Чтобы попробовать модель до интеграции, откройте Студию. Для Студии и API используется один баланс.

ТекстИзображенияВидео ЭмбеддингиТранскрипция и OCRОшибки и лимиты

Проверьте подключение перед первой задачей

  1. Создайте отдельный ключ для приложения в разделе «Ключи API». Храните его в переменной окружения на сервере.
  2. Укажите адрес https://api.rodnik.ai/v1 и получите список доступных моделей. Возьмите точный id из ответа.
  3. Отправьте один короткий запрос, затем проверьте модель, токены и сумму в истории запросов. Для Студии и API используется общий баланс.
curl --fail-with-body --max-time 30 https://api.rodnik.ai/v1/models \
  -H "Authorization: Bearer $RODNIK_API_KEY"

Команда использует ключ из переменной окружения и запрашивает каталог моделей. Для генерации выберите пример ниже. В приложениях с отдельным полем Base URL вставьте адрес с /v1; если требуется полный URL запроса, для текста используйте https://api.rodnik.ai/v1/chat/completions.

Начните с одного запроса одновременно. Для видео сохраните id и проверяйте состояние той же задачи после обновления страницы или разрыва соединения.

Текст — 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". Ссылка на изображение действует до 24 часов; для скачивания используйте ключ того же аккаунта. Число изображений и размеры зависят от модели.

resp = client.images.generate(
    model="kolors",
    prompt="минималистичный постер: гора, закат, плоские цвета",
    n=1,
    size="1024x1024",
)
# Для скачивания нужен действующий ключ того же аккаунта
import httpx, os
from pathlib import Path
image = httpx.get(resp.data[0].url, headers={"Authorization": "Bearer " + os.environ["RODNIK_API_KEY"]})
image.raise_for_status()
Path("result.png").write_bytes(image.content)
# то же самое в 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. Время выполнения и допустимые параметры зависят от модели. Перед отправкой проверьте цену и сохраните id задачи.

# 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": "kling-v2.6",
    "prompt": "кот идёт по мокрой улице под дождём, кинематографично",
    "seconds": "5",
})
r.raise_for_status()
vid = r.json()["id"]
print("Сохраните id задачи:", vid)

# 2) Опрашивать статус (раз в 3–5 секунд)
for attempt in range(120):
    status = httpx.get(f"{BASE}/v1/videos/{vid}", headers=H, timeout=30)
    status.raise_for_status()
    v = status.json()
    print(v["status"], v.get("progress", 0), "%")
    if v["status"] in ("completed", "failed"):
        break
    time.sleep(5)
else:
    raise TimeoutError(f"Проверьте позже ту же задачу {vid}; не создавайте новую")

# 3) Скачать mp4
if v["status"] == "completed":
    result = httpx.get(f"{BASE}/v1/videos/{vid}/content", headers=H)
    result.raise_for_status()
    open("out.mp4", "wb").write(result.content)

Для видео по изображению проверьте поддержку исходного кадра у выбранной модели. В Студии доступны параметры поддерживаемых сценариев.

Эмбеддинги — bge-m3 и qwen3-embedding-8b

Для поиска и RAG. bge-m3 — мультиязычный бюджетный ярус ($0.01 / 1M токенов); qwen3-embedding-8b — флагманский: 4096 измерений, для многоязычного поиска.

resp = client.embeddings.create(
    model="bge-m3",
    input=["Первый документ", "Второй документ"],
)
vec = resp.data[0].embedding   # 1024 измерения

Переранкинг выдачи поиска — /v1/rerank (qwen3-reranker-8b), оплата как у текста — за токены:

curl https://api.rodnik.ai/v1/rerank \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3-reranker-8b","query":"возврат средств","documents":["Как вернуть деньги","Правила оплаты"]}'

Транскрипция и OCR

Для qwen3-asr, qwen3-asr-1.7b-new и sensevoicesmall стоимость указана за запрос. Сравните актуальные тарифы распознавания перед отправкой. Допустимые форматы и размер файла зависят от модели. Пример передачи аудио:

curl https://api.rodnik.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-..." \
  -F model=qwen3-asr \
  -F file=@audio.mp3

OCR — текст с картинки (unlimited-ocr): русский и английский, с координатами блоков. Тот же chat-эндпоинт, картинка передаётся как image_url (или попробуйте в Студии — прикрепите файл к сообщению):

resp = client.chat.completions.create(
    model="unlimited-ocr",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Извлеки весь текст"},
        {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}},
    ]},
)

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

КодПричинаЧто делать
401Неверный или отозванный ключПроверьте ключ / создайте новый в консоли
402Недостаточно балансаПополните баланс в кошельке USDT (TRC-20). Для оплаты рублями см. способы пополнения
429Слишком частые запросы / очередь видео заполненаУменьшите параллельность. Учитывайте Retry-After, если заголовок есть. Повторяйте с увеличением задержки
5xxСбой на нашей сторонеПроверьте историю запросов. Если id видеозадачи уже получен, сначала запросите её состояние. При обрыве соединения результат отправки может быть неизвестен.
Таймаут видеоЗадача выполняется дольше обычногоОпрашивайте статус, не держите длинный HTTP-запрос

Тарификация: текст — $ за 1 млн токенов (вход/выход раздельно); изображения — за штуку; видео — фиксированная цена за ролик указанной длительности. Единица оплаты и ограничения распознавания зависят от модели. Полные цены — в таблице тарифов. По вопросам подключения и списаний напишите на Помощь в Telegram · support@rodnik.ai. ИИ-помощник на сайте поможет найти инструкцию.

Режимы текстовых запросов

Для семейств GPT, Gemini, Kimi и MiniMax действует стандартный режим обработки. Цена входных и выходных токенов указана отдельно в каталоге. В пределах поддерживаемого контекста ставка не повышается из-за длины запроса.

Приоритетная и гибкая обработка, а также явное платное хранение кэша не подключены. Запрос с такими настройками возвращает ошибку unsupported_billing_mode до отправки на обработку. Уберите дополнительную настройку и повторите запрос. Обычные запросы без этих параметров работают как прежде.

Актуальные ставки: модели и цены. Перед большой серией запросов проверьте стоимость выбранной модели и установите лимит для ключа API.

Если нужна помощь

Напишите на support@rodnik.ai. Укажите модель, метод API, время с часовым поясом, код ошибки и id задачи, если он есть. Для вопроса об оплате приложите номер счёта и идентификатор транзакции.

Перед отправкой примера удалите ключ API, пароль, cookie и данные клиентов. ИИ-помощник отвечает на общие вопросы; обращения по конкретным платежам и списаниям отправляйте по почте.

Проверить доступность сайта и входа можно на странице состояния сервисов. Скорость генерации зависит от модели и нагрузки; для оценки своего сценария используйте несколько коротких запросов.

Примеры интеграций