Перейти до основного вмісту

Генерація зображень

Доступ вмикається на запит

Ці інструкції доступні кожному клієнту, але генерація зображень вмикається для ключа на запит: напишіть на support@omev.be. Наявність ключа API для тексту або доступу до цієї сторінки не означає, що для цього ключа активовані продукти для роботи із зображеннями.

Максимум референсних зображень на запит: 9. Референсні вхідні дані (image-to-image) підтримуються завданнями на генерацію через input_urls.

Усі продукти генерації зображень створюють зображення класу 1K (до 1024 пікселів по краю для квадратного запиту, а також ширші чи вищі формати того самого класу там, де продукт їх пропонує). Рівнів 2K чи 4K немає; запит на них відхиляється.

Ціни​

Ви платите за кожне отримане зображення; виклик, що повертає кілька зображень, оплачується за кожне з них.

ПродуктЯкістьЦіна за зображення
omev-image-jobslow (за замовчуванням, також auto)$0.021
omev-image-jobsmedium$0.024
omev-image-jobshigh$0.039
omev-image-liteодин фіксований рівень$0.0192
omev-image-mainlow (за замовчуванням, також auto)$0.021
omev-image-prolow (за замовчуванням, також auto)$0.024
omev-image-promedium$0.1968

Невдала або відхилена генерація не оплачується. Усі продукти та ціни: Моделі та ціни.

Існує два способи створення зображень, розроблені для двох різних типів навантаження.

Завдання на генерацію (Image jobs) — основний шлях для конвеєрів. Ви розміщуєте замовлення, періодично перевіряєте результат (або отримуєте його на свою адресу зворотного виклику) і завантажуєте готове зображення за URL-адресою, яку ми зберігаємо протягом 48 годин. Одна модель, omev-image-jobs: зображення класу 1K у багатьох форматах, три рівні якості та, за бажанням, референсні зображення. Це шлях для автоматичної масової генерації: ваш воркер ставить замовлення в чергу та забирає результати, без участі людини, яка чекає на відповідь.

Прямі моделі. Зображення повертається в тілі відповіді одного виклику: omev-image-lite, omev-image-main та omev-image-pro. Обирайте їх, коли хтось чекає на зображення на екрані в реальному часі.

API для завдань на генерацію​

Три виклики, той самий хост і той самий ключ, що й для всього іншого.

1. Розміщення замовлення​

curl -sS https://llmapi.omev.be/api/v1/jobs/createTask \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "omev-image-jobs",
"input": {
"prompt": "Flat vector infographic: three steps of onboarding, numbered 1 2 3, short labels",
"aspect_ratio": "1:1"
}
}'
{"code": 200, "msg": "success", "data": {"taskId": "task_omevimage_1754937600123_a1b2c3d4"}}
ПолеОбов'язковеЗначення
modelтакomev-image-jobs
input.promptтакдовільний текст; прописуйте кожне слово, яке має з'явитися на зображенні
input.aspect_ratioніauto (за замовчуванням, квадрат), 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, 9:21, 5:4, 4:5, 9:8, 8:9, 27:16, 16:27, 2:1, 1:2, 3:1, 1:3
input.resolutionні1K — єдиний доступний рівень
input.qualityніlow (за замовчуванням; auto — те саме), medium або high; див. Ціни. medium і high працюють для замовлень «текст у зображення», але не з input_urls
input.backgroundніauto (за замовчуванням), transparent або opaque
input.enhanceніtrue (за замовчуванням) дозволяє OmevAI доопрацювати промпт; false надсилає ваш промпт точно так, як його написано
input.input_urlsні1–9 публічних http(s) URL-адрес референсних зображень (див. нижче)
callBackUrlніпублічна адреса http(s); ми надсилаємо туди фінальний запис про завдання через POST; звичайне опитування також працює

Неквадратні формати мають той самий клас 1K, наприклад 16:9 — це 1360x768, а 3:2 — 1536x1024.

Код 403 зазвичай означає, що для ключа не ввімкнено завдання на генерацію зображень. Зв'яжіться з support@omev.be, щоб узгодити доступ; не робіть повторних спроб. Помилки API завдань надходять зі статусом HTTP 200 і кодом у тілі відповіді — так, як очікують наявні інтеграції із завданнями на зображення: {"code": 422, "msg": "<що було не так>", "data": null}. Перевіряйте code у кожній відповіді, а не лише статус HTTP. Див. Помилки.

2. Перевірка результату​

curl -sS "https://llmapi.omev.be/api/v1/jobs/recordInfo?taskId=task_omevimage_1754937600123_a1b2c3d4" \
-H "Authorization: Bearer $OMEV_API_KEY"
{
"code": 200,
"msg": "success",
"data": {
"taskId": "task_omevimage_1754937600123_a1b2c3d4",
"model": "omev-image-jobs",
"state": "success",
"resultJson": "{\"resultUrls\":[\"https://llmapi.omev.be/api/v1/jobs/result?id=task_omevimage_1754937600123_a1b2c3d4\"]}",
"failCode": "",
"failMsg": "",
"costTime": 96000,
"createTime": 1754937600123,
"completeTime": 1754937696123,
"progress": 100,
"effectiveQuality": "low"
}
}

Стан state змінюється так: waiting → queuing → generating → success (або fail, де failCode та failMsg пояснюють причину). Опитуйте кожні 2–5 секунд зі збільшенням інтервалу; типове завдання виконується від однієї до п'яти хвилин. resultJson — це JSON-рядок: розпарсіть його та візьміть URL-адреси з resultUrls. effectiveQuality — рівень якості, з яким замовлення виконано й оплачено.

Якщо вказано callBackUrl, той самий запис надсилається на вашу адресу, коли завдання переходить у стан success або fail.

3. Завантаження зображення​

Завантажуйте URL-адресу результату з тим самим заголовком Authorization: Bearer, що й інші виклики; без ключа вона повертає 401. Файл зберігається 48 годин: одразу завантажуйте байти у власне сховище; через 48 годин файл видаляється, а URL-адреса повертає 404. Запис завдання (recordInfo) доступний 7 днів.

curl -sS -o image.png "https://llmapi.omev.be/api/v1/jobs/result?id=task_omevimage_1754937600123_a1b2c3d4" \
-H "Authorization: Bearer $OMEV_API_KEY"

Якщо ваш код уже працює з API для зображень подібної структури (створити завдання, опитувати запис, читати resultUrls), він запрацює і тут після двох змін: базової URL-адреси та ключа.

Референсні зображення (image-to-image)​

Замовлення може містити 1–9 референсних зображень: додайте до input масив input_urls з публічними http(s) URL-адресами зображень, які потрібно змінити або поєднати. Порядок списку зберігається: якщо в промпті сказано «put the product from image 1 into the scene from image 2», то image 1 — це input_urls[0].

{
"model": "omev-image-jobs",
"input": {
"prompt": "Put the product from image 1 into the environment from image 2",
"input_urls": [
"https://example.com/product.png",
"https://example.com/location.jpg"
],
"aspect_ratio": "1:1"
}
}
  • Якщо input_urls не вказано (або список порожній), замовлення виконується як звичайне «текст у зображення».
  • Кожен референс має бути зображенням PNG, JPEG або WebP розміром до 20 МБ.
  • Понад 9 URL-адрес відхиляються з повідомленням A maximum of 9 reference images is allowed per request.
  • Референси копіюються у внутрішнє сховище в момент розміщення замовлення, тому вихідна URL-адреса, термін дії якої згодом спливе, не зламає завдання, що виконується.
  • Замовлення з референсами виконуються з якістю low і коштують так само, як інші замовлення low.

omev-image-main​

Формат запиту сумісний з OpenAI Images API, тому будь-який SDK, створений для нього, працюватиме без змін: вкажіть base_url на OmevAI і викличте images.generate. omev-image-main — стабільний вибір за замовчуванням для інтерактивного використання. Ціна: $0.021 за зображення.

curl -sS https://llmapi.omev.be/v1/images/generations \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "omev-image-main",
"prompt": "A photorealistic cat wearing sunglasses",
"size": "1024x1024"
}'
ПолеОбов'язковеЗначення
promptтакдовільний текст
sizeні1024x1024 (за замовчуванням), 1536x1024, 1024x1536, auto
qualityніlow (за замовчуванням) або auto; medium/high повертає 400
nнілише 1
response_formatнілише b64_json

Зображення знаходиться в data[0].b64_json. Якщо виклик завершується таймаутом 504, надішліть той самий запит з тим самим заголовком Idempotency-Key: замовлення продовжується на сервері, і повторний запит підхоплює готовий результат замість оплати другого зображення.

omev-image-pro​

Той самий сумісний з OpenAI Images API формат, що й у omev-image-main. omev-image-pro — якісна полоса: промпти з вбудованим текстом (інфографіка, діаграми, графіки, таблиці, підписи, логотипи) тут рендеряться надійно. Ціна: $0.024 за зображення з якістю low або auto, $0.1968 за зображення з якістю medium.

curl -sS https://llmapi.omev.be/v1/images/generations \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "omev-image-pro",
"prompt": "Flat vector infographic: three steps of onboarding, numbered 1 2 3, short labels",
"size": "1024x1024"
}'
ПолеОбов'язковеЗначення
promptтакдовільний текст; прописуйте кожне слово, яке має з'явитися на зображенні
sizeні1024x1024 (за замовчуванням), auto або будь-який WxH до 1024 по кожному краю
qualityніlow, medium, auto; high повертає 400
nнідо 4 зображень
response_formatнілише b64_json
backgroundніtransparent, opaque, auto
output_formatніpng, jpeg, webp
client = OpenAI(base_url="https://llmapi.omev.be/v1", api_key=os.environ["OMEV_API_KEY"])

resp = client.images.generate(
model="omev-image-pro",
prompt="Flat vector infographic: three steps of onboarding, numbered 1 2 3",
size="1024x1024",
)
png_bytes = base64.b64decode(resp.data[0].b64_json)

Зображення знаходиться в data[0].b64_json.

omev-image-lite​

Інший маршрут та інша структура тіла запиту — та, що побудована навколо contents та parts. Якщо ваш код уже працює з таким форматом, він запрацює і тут без змін. Роздільна здатність на виході завжди 1024×1024, тому параметра розміру немає. Ціна: $0.0192 за зображення.

curl -sS https://llmapi.omev.be/v1beta/models/omev-image-lite:generateContent \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "A photorealistic cat wearing sunglasses"}]}]
}'

Відповідь:

{
"candidates": [{
"content": {
"role": "model",
"parts": [{"inlineData": {"mimeType": "image/png", "data": "<base64 PNG>"}}]
},
"finishReason": "STOP"
}]
}

Зображення знаходиться в candidates[0].content.parts[0].inlineData.data, а його тип — у сусідньому полі mimeType.

Встановіть generationConfig.candidateCount (1–4), щоб отримати відповідну кількість окремих candidates, кожен з одним зображенням у inlineData.

Помилки​

Прямі моделі (omev-image-lite, omev-image-main, omev-image-pro) використовують той самий формат, що й решта API — див. Помилки та повторні спроби. Неправильно сформоване тіло запиту повертає 400 з описом проблеми; відхилений промпт також повертає 400, а не порожнє зображення. Виклик, що не встиг завершитися, повертає 504: для omev-image-main повторіть його з тим самим Idempotency-Key.

Завдання на генерацію відповідають зі статусом HTTP 200 і кодом у тілі:

codeЗначення
200успіх
401ключ або заголовки не прийнято
404невідоме завдання
422замовлення відхилено; msg пояснює причину (невідома модель, порожній промпт, непідтримуваний формат, якість або роздільність, забагато референсів)
455сервіс зображень тимчасово недоступний; повторіть пізніше
500тимчасова помилка; повторіть обмежену кількість разів

Завдання, яке прийняли, а потім воно завершилося невдачею, повідомляє про це у своєму записі: state: "fail" з failCode і failMsg. Невдале завдання не оплачується.