Генерация
Все эндпоинты генерации работают асинхронно: вы отправляете запрос, получаете action_id, затем опрашиваете статус до завершения. Опционально можно указать webhook_url для получения уведомления.
Авто-определение
Все параметры генерации кроме images — опциональны. Если category_id, concept_id или product_name не указаны, они определяются автоматически по фото товара с помощью AI.
Минимальный запрос для генерации:
{"images": [{"url": "https://example.com/product.jpg"}]}Для предварительного анализа товара без генерации используйте POST /analyze.
POST /analyze
Анализ фото товара — определение категории, названия и ключевых качеств. Бесплатно (не тратит искры).
Запрос:
{
"image": {"url": "https://example.com/product.jpg"}
}Ответ:
{
"category_id": "cosmetics",
"product_name": "Крем для лица",
"qualities": [
"Натуральный состав",
"Увлажняющий эффект",
"Стеклянная баночка"
]
}Результат можно использовать в запросе генерации. Поле qualities удобно передать как comment (для фото) или user_text (для карточек) через "\n".join(qualities).
Загрузка изображения
POST /upload
Загрузите изображение один раз и используйте upload_id в нескольких запросах генерации. Полезно, если нужно сгенерировать несколько вариантов для одного товара.
Запрос:
{
"image": {
"data": "BASE64_ДАННЫЕ_ИЗОБРАЖЕНИЯ",
"media_type": "image/jpeg"
}
}Ответ:
{
"upload_id": "upl_aBcDeFgHiJkLmNoP",
"expires_in": 3600
}Загрузка действительна 1 час. Максимум 20 активных загрузок на аккаунт.
Использование upload_id
Вместо base64-данных передавайте upload_id в поле data:
{
"images": [{"data": "upl_aBcDeFgHiJkLmNoP", "media_type": "image/jpeg"}]
}Формат изображений
Изображения можно передать тремя способами. Укажите одно из полей url или data:
| Поле | Тип | Описание |
|---|---|---|
url | string | Публичный HTTPS-URL изображения (до 15 МБ) |
data | string | Base64-строка или upload_id (начинается с upl_) |
media_type | string | MIME-тип, по умолчанию image/jpeg (используется с data) |
Примеры:
// Вариант 1: URL
{"url": "https://example.com/product.jpg"}
// Вариант 2: Base64
{"data": "iVBORw0KGgo...", "media_type": "image/jpeg"}
// Вариант 3: Upload ID (для переиспользования)
{"data": "upl_aBcDeFgHiJkLmNoP"}Поддерживаемые форматы: JPEG, PNG, WebP, HEIC (автоконвертация). Максимальный размер: 15 МБ.
Генерация фото
POST /generate/photo
Генерация продуктового фото на основе референсных изображений товара.
Запрос:
{
"images": [
{"url": "https://example.com/product-front.jpg"},
{"url": "https://example.com/product-side.jpg"}
],
"category_id": "cosmetics",
"concept_id": "cosmetics_catalog",
"product_name": "Крем для лица",
"comment": "На белом фоне с каплями воды",
"photo_style": "classic",
"aspect_ratio": "3:4",
"webhook_url": "https://example.com/webhook"
}| Параметр | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
images | ImageInput[] | да | — | 1–5 референсных фото товара |
category_id | string | нет | авто | Категория товара (если не указана — определяется автоматически) |
concept_id | string | нет | авто | Концепт съёмки (если не указан — первый концепт категории) |
product_name | string | нет | авто | Название товара (до 200 символов, определяется из фото) |
comment | string | нет | — | Пожелания к генерации (до 2000 символов) |
photo_style | string | нет | "classic" | "classic" или "flash" |
aspect_ratio | string | нет | "3:4" | Соотношение сторон |
webhook_url | string | нет | — | URL для уведомления (HTTPS) |
Если
category_id,concept_idилиproduct_nameне указаны — они определяются автоматически по фото товара. Минимальный запрос:{"images": [{"url": "..."}]}.
Соотношения сторон: 9:16, 4:3, 1:1, 16:9, 3:4
Стоимость: 4 искры | Время: 20–60 сек (типичное)
Ответ:
{
"action_id": 12345,
"status": "pending",
"poll_url": "/api/v1/public/status/12345",
"project_id": 678,
"detected": {
"category_id": "cosmetics",
"concept_id": "cosmetics_composition",
"product_name": "Крем для лица"
}
}Поле detected присутствует только когда были авто-определены хотя бы один параметр. Если все параметры указаны явно — detected отсутствует.
Категории и концепты
Список всех доступных категорий и концептов можно получить через GET /categories (подробнее). Основные категории:
| category_id | Название |
|---|---|
apparel | Одежда и обувь |
wearables | Аксессуары |
food | Еда и напитки |
cosmetics | Косметика и уход |
gadgets | Гаджеты и техника |
home | Дом и мебель |
other | Прочее |
Каждая категория имеет несколько концептов съёмки (например, cosmetics_catalog, cosmetics_in_use, cosmetics_lifestyle).
Генерация карточки
POST /generate/card
Генерация карточки товара / инфографики с текстом и дизайном.
Запрос:
{
"images": [
{"url": "https://example.com/product.jpg"}
],
"category_id": "cosmetics",
"concept_id": "infographic",
"product_name": "Крем для лица",
"user_text": "Натуральный состав\nУвлажнение 24 часа\nБез парабенов",
"design_key": "modern_light",
"creativity": 0.5,
"aspect_ratio": "3:4",
"webhook_url": "https://example.com/webhook"
}| Параметр | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
images | ImageInput[] | да | — | 1–5 фото товара |
category_id | string | нет | авто | Категория товара (если не указана — определяется автоматически) |
concept_id | string | нет | "infographic" | Концепт (обычно "infographic") |
product_name | string | нет | авто | Название товара (определяется из фото) |
user_text | string | нет | авто | Текст для карточки (до 5000 символов). Если не указан — AI определит ключевые качества товара по фото |
design_key | string | нет | — | Ключ дизайна (для единого стиля серии) |
creativity | float | нет | 0.5 | Уровень креативности (0.0–1.0) |
design_reference_image | ImageInput | нет | — | Референс дизайна |
aspect_ratio | string | нет | "3:4" | Соотношение сторон |
webhook_url | string | нет | — | URL для уведомления (HTTPS) |
creativity:
0.0— точная копия стиля референса0.5— баланс точности и креативности1.0— свободная интерпретация
Стоимость: 4 искры | Время: 20–60 сек (типичное)
Генерация видео
POST /generate/video
Создание короткого видеоролика на основе одного изображения.
Запрос:
{
"image": {"url": "https://example.com/product.jpg"},
"scenario": "Камера плавно приближается к товару, капли воды падают на упаковку",
"duration_sec": 5,
"loop_mode": false,
"card_mode": false,
"aspect_ratio": "3:4",
"webhook_url": "https://example.com/webhook"
}| Параметр | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
image | ImageInput | да | — | Исходное изображение |
scenario | string | нет | "" | Описание движения (до 1500 символов) |
duration_sec | integer | нет | 5 | Длительность: 5 или 10 секунд |
loop_mode | boolean | нет | false | Цикличное видео (конец = начало) |
card_mode | boolean | нет | false | Режим карточки (камера статична, текст сохраняется) |
final_frame | ImageInput | нет | — | Финальный кадр (игнорируется при loop_mode) |
aspect_ratio | string | нет | "3:4" | Соотношение сторон |
webhook_url | string | нет | — | URL для уведомления (HTTPS) |
Стоимость: 16 искр (5 сек) / 32 искры (10 сек) | Время: 1–5 мин
Генерация видео занимает значительно больше времени (1–5 минут). Рекомендуется использовать webhooks вместо polling.
Редактирование
POST /edit/:action_id
Редактирование ранее сгенерированного изображения по текстовой инструкции.
Запрос:
{
"instruction": "Сделай фон более ярким и добавь мягкие тени",
"webhook_url": "https://example.com/webhook"
}| Параметр | Тип | Обязательное | Описание |
|---|---|---|---|
instruction | string | да | Инструкция (до 1000 символов) |
webhook_url | string | нет | URL для уведомления (HTTPS) |
Ответ:
{
"action_id": 12346,
"parent_action_id": 12345,
"status": "pending",
"poll_url": "/api/v1/public/status/12346"
}Стоимость: 2 искры | Время: 20–40 сек (типичное)
Ограничения:
- Можно редактировать только завершённые действия (
status: "completed") - Максимальная глубина редактирований: 99
- Действие должно принадлежать вашему аккаунту
Ad-hoc Webhook
Все эндпоинты генерации принимают необязательный параметр webhook_url — одноразовый webhook для конкретного запроса. При завершении генерации на этот URL будет отправлен POST-запрос с результатом.
Это удобная альтернатива зарегистрированным webhooks для простых интеграций.
- URL должен использовать HTTPS
- Без retry (одна попытка)
- Payload аналогичен зарегистрированным webhooks
Пример: полный цикл
Python
import requests
import time
API_KEY = "ak_ваш_ключ"
BASE = "https://api.aidentika.com/api/v1/public"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# 1. Запустить генерацию
resp = requests.post(f"{BASE}/generate/photo", headers=headers, json={
"images": [{"url": "https://example.com/product.jpg"}],
"category_id": "cosmetics",
"concept_id": "cosmetics_catalog",
"product_name": "Крем для лица",
})
action_id = resp.json()["action_id"]
print(f"Генерация запущена: action_id={action_id}")
# 2. Ждать результат (первый запрос не раньше 20 сек)
time.sleep(20)
while True:
status = requests.get(f"{BASE}/status/{action_id}", headers=headers).json()
if status["status"] in ("completed", "failed"):
break
print(f" Статус: {status['status']}")
time.sleep(10)
# 3. Скачать результат
if status["status"] == "completed":
result = requests.get(f"{BASE}/results/{action_id}/download",
headers=headers, allow_redirects=True)
with open("result.png", "wb") as f:
f.write(result.content)
print("Результат сохранён в result.png")
else:
print(f"Ошибка: {status.get('error_message')}")