Генерація зображень
Ці інструкції доступні кожному клієнту, але генерація зображень вмикається для ключа на запит: напишіть на support@omev.be. Наявність ключа API для тексту або доступу до цієї сторінки не означає, що для цього ключа активовані продукти для роботи із зображеннями.
Максимум референсних зображень на запит: 9. Референсні вхідні дані (image-to-image) підтримуються завданнями на генерацію через input_urls.
Усі продукти генерації зображень створюють зображення класу 1K (до 1024 пікселів по краю для квадратного запиту, а також ширші чи вищі формати того самого класу там, де продукт їх пропонує). Рівнів 2K чи 4K немає; запит на них відхиляється.
Ціни
Ви платите за кожне отримане зображення; виклик, що повертає кілька зображень, оплачується за кожне з них.
| Продукт | Якість | Ціна за зображення |
|---|---|---|
omev-image-jobs | low (за замовчуванням, також auto) | $0.021 |
omev-image-jobs | medium | $0.024 |
omev-image-jobs | high | $0.039 |
omev-image-lite | один фіксований рівень | $0.0192 |
omev-image-main | low (за замовчуванням, також auto) | $0.021 |
omev-image-pro | low (за замовчуванням, також auto) | $0.024 |
omev-image-pro | medium | $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. Невдале завдання не оплачується.