Программный доступ
Наш адрес и ключ подставляются в любую библиотеку, которая умеет говорить с OpenAI. Больше настраивать нечего: ни особых заголовков, ни своего формата ответа.
Ключ создаётся в кабинете, в разделе «API». Он начинается с kadr- и показывается один раз.
curl https://ии-кадр.рф/api/v1/chat/completions \
-H "Authorization: Bearer kadr-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "Придумай название для магазина носков"}]
}'model: auto — модель выберем мы: это дёшево и не требует следить за нашим каталогом. Хотите конкретную — назовите её id из таблицы ниже.
Первое, что спрашивает почти любой клиент (Cline, LibreChat, выбор модели в редакторе). Отдаём стандартом OpenAI, а рядом со стандартными полями кладём свои цены — библиотеки лишнее поле игнорируют, а человеку не надо открывать кабинет, чтобы узнать тариф.
curl https://ии-кадр.рф/api/v1/models -H "Authorization: Bearer kadr-ВАШ_КЛЮЧ"
# {"object": "list", "data": [
# {"id": "auto", "object": "model", "owned_by": "kadr",
# "kadr": {"label": "Автовыбор", "vision": true}},
# {"id": "doubao-seed-2-1-turbo-260628", "object": "model", "owned_by": "kadr",
# "kadr": {"vision": true, "sell_kop_per_1m_in": 12000, "sell_kop_per_1m_out": 60000}}
# ]}Поле vision — принимает ли модель картинки. Сообщение с картинкой уйдёт только в такую; если назвать модель без него, ответим отказом сразу, а не молчаливым ответом невпопад.
Формат тот же, что у OpenAI: части сообщения. Ссылку берём и обычную, и data:. Считается картинка не по длине строки, а по кадру — мегабайтный снимок не съест счёт.
curl https://ии-кадр.рф/api/v1/chat/completions \
-H "Authorization: Bearer kadr-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Что на снимке?"},
{"type": "image_url", "image_url": {"url": "https://ваш-сайт/фото.jpg"}}
]}]
}'from openai import OpenAI
client = OpenAI(api_key="kadr-ВАШ_КЛЮЧ", base_url="https://ии-кадр.рф/api/v1")
answer = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "Привет"}],
)
print(answer.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ apiKey: 'kadr-ВАШ_КЛЮЧ', baseURL: 'https://ии-кадр.рф/api/v1' });
const answer = await client.chat.completions.create({
model: 'auto',
messages: [{ role: 'user', content: 'Привет' }],
});
console.log(answer.choices[0].message.content);Потоком — тот же вызов со stream: true: куски приходят стандартными chat.completion.chunk, последний несёт usage.
Любой клиент, который умеет «свой OpenAI-совместимый сервер», настраивается тремя полями. Отдельного режима для них у нас нет и не нужно.
Base URL (API Base / Endpoint): https://ии-кадр.рф/api/v1 API key: kadr-ВАШ_КЛЮЧ Model: auto (или id из таблицы ниже)
Список моделей клиент возьмёт сам с GET /models. Если поле модели в клиенте обязательное и списка он не тянет — впишите auto: выбор сделаем мы.
По умолчанию размышления ВЫКЛЮЧЕНЫ — они утраивают ожидание и стоимость. Включаются полем reasoning_effort (формат OpenAI) или нашим thinking. Размышления приходят отдельным полем reasoning_content и оплачиваются как выходные токены: они входят в completion_tokens.
{"model": "deepseek-v4-flash-ga-260731",
"reasoning_effort": "medium", // none — выключить; любое другое значение — включить
"thinking": "enabled", // то же самое нашим полем: disabled | auto | enabled
"messages": [{"role": "user", "content": "Посчитай по шагам: 17 × 23 + 5"}]}| Модель | Режимы размышлений |
|---|---|
doubao-seed-2-1-turbo-260628 | disabled, enabled |
doubao-seed-2-1-pro-260628 | disabled, enabled |
doubao-seed-2-0-pro-260215 | disabled, enabled |
doubao-seed-2-0-lite-260428 | disabled, enabled |
doubao-seed-2-0-mini-260428 | disabled, enabled |
doubao-seed-2-0-code-preview-260215 | disabled, enabled |
deepseek-v4-flash-ga-260731 | disabled, auto, enabled |
deepseek-v4-pro-ga-260813 | disabled, auto, enabled |
glm-5-2-260617 | disabled, auto, enabled |
Режим, которого у модели нет, — отказ 400, а не молчаливая подмена. И важное про деньги: с включёнными размышлениями потолок ответа считается по ВСЕМУ выходу, а не по видимому тексту; если остатка на счету хватает меньше чем на 512 токенов, придёт 402 — размышления съели бы потолок целиком, и ответа не осталось бы вовсе.
| Код | Что произошло | Что делать |
|---|---|---|
401 | Ключ не принят: нет заголовка, чужой или отозванный. | Заведите новый ключ в кабинете. |
400 | Запрос не по правилам: неизвестная модель, картинка для незрячей модели, режим размышлений, которого у модели нет. | Текст ошибки называет причину прямо — читайте его. |
402 | Денег на счету не хватает на этот вызов. | Пополнить баланс в кабинете. |
429 | Слишком часто: предел запросов в минуту на ключ. | Подождите; сколько именно — в заголовке Retry-After. |
502 | Модель не ответила вовсе; денег за это не берём. | Повторить или взять другую модель. |
Пустой ответ модели — это штатный 200 с пустым content (как у OpenAI), и он тоже бесплатен. В потоке отказ приходит объектом error внутри потока — так его понимают клиентские библиотеки.
curl https://ии-кадр.рф/api/v1/images/generations \
-H "Authorization: Bearer kadr-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"model": "doubao-seedream-4-5-251128", "prompt": "белая кружка на деревянном столе", "size": "2048x2048"}'Ссылка на результат живёт около суток — скачивайте файл сразу, а не храните ссылку.
Пресет работает минуту и дольше, поэтому он устроен в два шага: создали задачу — опрашиваете её. Исходник передаётся ссылкой в input.image_url. У «Генерации по тексту» он НЕОБЯЗАТЕЛЕН: без него рисуем по описанию, с ним правим снимок — это разные работы и разные цены, обе в таблице ниже. input.size выбирает разрешение, а у роликов — длительность; цена у каждой строки своя.
# создать
curl https://ии-кадр.рф/api/v1/tasks \
-H "Authorization: Bearer kadr-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"preset": "bg_replace", "input": {"image_url": "https://ваш-сайт/фото.jpg", "scene": "wood"}}'
# {"id": "…", "status": "queued", "poll": "/api/v1/tasks/…"}
# опросить
curl https://ии-кадр.рф/api/v1/tasks/ID -H "Authorization: Bearer kadr-ВАШ_КЛЮЧ"
# {"status": "succeeded", "result": [{"url": "…"}]}| Пресет | Что делает | Цена |
|---|---|---|
free_gen | Картинка по описанию. Приложите фото — и мы будем отталкиваться от него. image_url необязателен | без фото: 30 ₽ с фото: 30 ₽ |
cardsize: 2k | 4k | Товар, заголовок и выгоды одним кадром — как рисуют конкуренты. | 2k: 30 ₽ 4k: 45 ₽ |
bg_replace | Товар остаётся как есть, вокруг него — новая сцена. | 30 ₽ |
erase | Уберём с кадра то, что мешает: руку, провод, ценник. | 30 ₽ |
tryon | Вещь окажется на человеке из библиотеки — принт и крой сохраняются. | 30 ₽ |
video_gensize: 5s | 10s | Короткое видео по описанию — без исходного снимка. image_url не нужен | 5s: 60 ₽ 10s: 100 ₽ |
video_photosize: 5s | 10s | Снимок оживает: лёгкое движение камеры и предмета, сам товар не меняется. | 5s: 60 ₽ 10s: 100 ₽ |
video_motionsize: 5s | 10s | Готовый сценарий: товар в руках или в деле, камера мягко ведёт. | 5s: 60 ₽ 10s: 100 ₽ |
video_360size: 5s | 10s | Готовый сценарий: товар плавно поворачивается вокруг своей оси. | 5s: 60 ₽ 10s: 100 ₽ |
| id | Что это | Вход / выход за 1M токенов |
|---|---|---|
doubao-seed-2-1-turbo-260628 | Doubao Seed 2.1 turbo · видит картинки | 180 ₽ / 900 ₽ |
doubao-seed-2-1-pro-260628 | Doubao Seed 2.1 pro · видит картинки | 360 ₽ / 1 800 ₽ |
doubao-seed-2-0-pro-260215 | Doubao Seed 2.0 pro · видит картинки | 192 ₽ / 960 ₽ |
doubao-seed-2-0-lite-260428 | Doubao Seed 2.0 lite · видит картинки | 36 ₽ / 216 ₽ |
doubao-seed-2-0-mini-260428 | Doubao Seed 2.0 mini · видит картинки | 12 ₽ / 120 ₽ |
doubao-seed-2-0-code-preview-260215 | Doubao Seed 2.0 code · видит картинки | 192 ₽ / 960 ₽ |
deepseek-v4-flash-ga-260731 | DeepSeek V4 flash | 180 ₽ / 540 ₽ |
deepseek-v4-pro-ga-260813 | DeepSeek V4 pro | 540 ₽ / 1 620 ₽ |
glm-5-2-260617 | GLM-5.2 | 480 ₽ / 1 680 ₽ |
Деньги списываются по факту ответа, с того же счёта, что и работа в кабинете. Стоимость вызова возвращается в поле kadr.cost_kop и видна в журнале вызовов.
Выше — модели, которые вызываются прямо сейчас. Ниже весь каталог, открытый нам у провайдера: помеченное «скоро» мы заводим в прайс по мере проверки.
deepseek-v4-flash-260425 | скоро |
deepseek-v4-flash-ga-260731 | 180 ₽ / 540 ₽ за 1M токенов |
deepseek-v4-pro-260425 | скоро |
deepseek-v4-pro-ga-260813 | 540 ₽ / 1 620 ₽ за 1M токенов |
doubao-seed-2-0-code-preview-260215 | 192 ₽ / 960 ₽ за 1M токенов |
doubao-seed-2-0-lite-260215 | скоро |
doubao-seed-2-0-lite-260428 | 36 ₽ / 216 ₽ за 1M токенов |
doubao-seed-2-0-mini-260215 | скоро |
doubao-seed-2-0-mini-260428 | 12 ₽ / 120 ₽ за 1M токенов |
doubao-seed-2-0-pro-260215 | 192 ₽ / 960 ₽ за 1M токенов |
doubao-seed-2-1-pro-260628 | 360 ₽ / 1 800 ₽ за 1M токенов |
doubao-seed-2-1-turbo-260628 | 180 ₽ / 900 ₽ за 1M токенов |
glm-4-5-air-20250728 | скоро |
glm-5-2-260617 | 480 ₽ / 1 680 ₽ за 1M токенов |
qwen2-5-72b-20240919 | скоро |
qwen3-0-6b-20250429 | скоро |
qwen3-14b-20250429 | скоро |
qwen3-32b-20250429 | скоро |
qwen3-8b-20250429 | скоро |
doubao-seedream-4-0-20260415 | скоро |
doubao-seedream-4-0-250828 | скоро |
doubao-seedream-4-5-251128 | 10 ₽ за кадр |
doubao-seedream-5-0-260128 | скоро |
doubao-seedream-5-0-pro-260628 | 12 ₽ за кадр |
doubao-seedance-1-0-pro-250528 | скоро |
doubao-seedance-1-0-pro-fast-251015 | скоро |
doubao-seedance-2-0-260128 | скоро |
doubao-seedance-2-0-fast-260128 | скоро |
doubao-seedance-2-0-mini-260615 | скоро |
doubao-seedance-2-5-260628 | скоро |
doubao-seed3d-2-0-260328 | скоро |
hitem3d-2-0-251223 | скоро |
hyper3d-gen2-260112 | скоро |
doubao-embedding-vision-250615 | скоро |
doubao-embedding-vision-251215 | скоро |
doubao-seed-character-251128 | скоро |
doubao-seed-character-260628 | скоро |
doubao-seed-translation-250915 | скоро |
Каталог снят 25 августа 2026 г.. Модели с ценой вызываются прямо сейчас; помеченные «скоро» доступны нам у провайдера, но ещё не заведены в прайс — вызов такой модели вернёт ошибку. Список моделей, готовых к вызову, всегда отдаёт GET /api/v1/models.
- 60 запросов в минуту на ключ для чата, 20 — для изображений и задач.
- Потолок одного ответа — 16 384 токена, но не больше того, что можно оплатить остатком на счету. Свой предел задаётся полем
max_tokens: мы его уважаем, в том числе маленький. Упёрлись в потолок — придёт честныйfinish_reason: "length", а применённое значение видно вkadr.max_tokens. - Отозвали ключ — он перестаёт работать сразу, без отсрочки.
- Если через API вы передаёте персональные данные своих пользователей, нужен договор поручения — он принимается галочкой при создании ключа.
- Запросы уходят к провайдерам моделей за пределами России, в том числе в КНР. Это описано в политике конфиденциальности.