Вызов через API (изображения / видео)
Стандартный формат интерфейса OpenAI, аутентификация по токену. Изображения возвращаются синхронно в base64; видео — асинхронная задача (создать → опросить → скачать).
Группа токена
Токен должен принадлежать группе media / media-gen, иначе появится ошибка «нет доступного канала». См. Выбор группы.
Изображения · Текст → изображение
POST https://byesu.si/v1/images/generations
Authorization: Bearer sk-ваш-токен
Content-Type: application/json| Поле | Обязательно | Описание |
|---|---|---|
model | ✅ | Имя модели, см. Генерация изображений |
prompt | ✅ | Промпт |
size | Ширина x высота в пикселях, одновременно задаёт соотношение сторон и уровень разрешения: длинная сторона ≈1024 → 1K, ≈2048 → 2K, ≈4096 → 4K. Например "1024x1024" (1:1 · 1K), "2048x1152" (16:9 · 2K), "4096x4096" (1:1 · 4K). Если не указано — по умолчанию 1:1, базовый уровень |
Доступные модели GPT для изображений стоят одинаково на уровнях 1K, 2K и 4K; апстрим может немного менять композицию и точный размер. Три модели Gemini работают через нативный API
generateContent, уровень задаётся параметромimageSize— см. Генерация изображений.
curl https://byesu.si/v1/images/generations \
-H "Authorization: Bearer sk-ваш-токен" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Золотистый ретривер бежит по золотому пшеничному полю на закате, кинематографично",
"size": "1024x576"
}'Ответ (изображение — PNG в base64):
{ "data": [ { "b64_json": "<строка base64>" } ] }Изображения · Изображение → изображение (референсы)
Используется POST /v1/images/edits в формате multipart/form-data, референсные изображения загружаются как файлы (имя поля image, можно передать несколько раз, каждое ≤8MB; лимит количества зависит от модели, см. Генерация изображений):
curl https://byesu.si/v1/images/edits \
-H "Authorization: Bearer sk-ваш-токен" \
-F model="gpt-image-2" \
-F prompt="Преврати эту фотографию в акварельный рисунок" \
-F size="1024x1024" \
-F image=@ref1.png \
-F image=@ref2.pngФормат ответа такой же, как при генерации по тексту.
Видео (асинхронно, в стиле Sora)
Видеомодели сейчас недоступны
В данный момент видеомодели не предлагаются. Описанный ниже порядок будет работать без изменений, когда они вернутся; тогда замените model на название со страницы Генерация видео.
Три шага: создать задачу → опрашивать статус → скачать mp4.
import requests, time
BASE = "https://byesu.si"
H = {"Authorization": "Bearer sk-ваш-токен"}
# 1. Создаём задачу
task = requests.post(f"{BASE}/v1/videos", headers=H, json={
"model": "<video-model>",
"prompt": "Волны разбиваются о скалы, замедленная съёмка, кинематографично",
"seconds": "6", # длительность (сек), допустимые значения зависят от модели
"size": "1280x720", # соотношение сторон задаётся размером; 1920x1080 = 1080p (поддерживается не всеми моделями)
}).json()
# 2. Опрашиваем до завершения (от десятков секунд до нескольких минут)
while task["status"] not in ("completed", "failed"):
time.sleep(5)
task = requests.get(f"{BASE}/v1/videos/{task['id']}", headers=H).json()
# 3. Скачиваем mp4
if task["status"] == "completed":
mp4 = requests.get(f"{BASE}/v1/videos/{task['id']}/content", headers=H)
open("out.mp4", "wb").write(mp4.content)Видео из изображения: при создании задачи используйте multipart/form-data, изображение первого кадра передайте в файловом поле input_reference (model / prompt / seconds / size передаются вместе как поля формы).
Видео тарифицируется посекундно
Цена видео = цена за секунду × seconds. Если задача завершилась сбоем, средства возвращаются автоматически.
Ошибки
- «Нет доступного канала» → неверная группа токена, см. Выбор группы
too many reference images→ количество референсных изображений превышает лимит модели- 401 / недостаточно средств / прочее → см. Частые ошибки и решения
