curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
MAI-Image-2.6
MAI-Image-2.6 Генерация изображений
Генерация по тексту, редактирование одного изображения, композиция из максимум 5 референсов и веб-поиск. Версии высокого качества и Flash.
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Выбор модели
| ID модели | Особенности |
|---|---|
mai-image-2.6 | Версия высокого качества для задач с приоритетом качества изображения |
mai-image-2.6-flash | Более быстрая и дешёвая версия с немного меньшим качеством |
Эндпоинт асинхронный. После отправки получите ID из
data[0].task_id, затем используйте запрос состояния задачи. Опрос каждые 3–5 секунд, рекомендуемый общий тайм-аут — 3 минуты. Остановитесь при completed или failed.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Заголовки запроса
string
обязательно
Bearer-аутентификация в формате
Bearer <token>, где <token> — ваш APIMart API Key.Параметры запроса
string
обязательно
ID модели:
mai-image-2.6 или mai-image-2.6-flash.string
обязательно
Описание изображения или инструкции по редактированию. Поддерживаются китайский и английский, максимум около 32 000 токенов (не символов).
string
по умолчанию:"1:1"
Принимает соотношение сторон (например
16:9), размеры в пикселях (например 1536x1024) или auto.- Соотношение сторон: любое отношение целых чисел от
1:4до4:1, совместно сresolution. - Пиксели: форматы
ширинаxвысота,ширина*высотаилиширина×высота. В этом режимеresolutionне определяет размеры. auto: модель выбирает соотношение по промпту.
string
по умолчанию:"1K"
Поддерживаются
1K и 2K, включая нижний регистр. Другие уровни, например 4K, возвращают HTTP 400.Определяет размерный уровень при генерации по тексту с соотношением сторон. Не участвует в расчёте при точных пиксельных размерах. Не задаёт размеры при генерации по изображению.integer
Точная ширина в пикселях. Обязательно вместе с
height. Эта пара имеет приоритет над size и resolution при генерации по тексту.Ширина и высота — минимум 768 каждая, общее число пикселей — не более 2 359 296. Рекомендуются кратные 32 значения; иначе каждая сторона округляется вниз до кратного 32.Этот параметр не определяет размеры при генерации по изображению.integer
Точная высота в пикселях, обязательно вместе с
width, с указанными выше ограничениями. Не определяет размеры при генерации по изображению.string[]
Список максимум из 5 референсов. Без него — генерация по тексту, с одним — редактирование, с несколькими — композиция.Каждый элемент поддерживает общедоступный HTTP(S) URL изображения или Base64 Data URL, например
data:image/png;base64,....Поддерживаются JPEG и PNG; WEBP и GIF автоматически преобразуются в PNG. URL должны быть общедоступны, иначе задача завершится ошибкой.При генерации по изображению размеры определяет модель по референсам: около 1 миллиона пикселей с близким соотношением сторон. size, resolution, width и height не задают эти размеры.boolean
по умолчанию:"false"
При
true модель выбирает соотношение по промпту, что эквивалентно size: "auto".boolean
по умолчанию:"false"
При
true перед генерацией выполняется поиск актуальной информации, полезный для реальных людей, мест или событий.integer
по умолчанию:"1"
Поддерживается только
1. Для нескольких изображений отправляйте отдельные задачи. Значения больше 1 возвращают HTTP 400.Размеры при генерации по тексту
| Потребность | Параметры |
|---|---|
| Квадрат по умолчанию | Не задавать размеры: 1:1 + 1K, результат 1024×1024 |
| Разрешение + соотношение сторон | size: "16:9", resolution: "2K" |
| Точные пиксели | size: "1536x1024" либо width: 1536, height: 1024 |
| Автоматическое соотношение | size: "auto" или auto_aspect_ratio: true |
width / height → size в пикселях → size как соотношение вместе с resolution.
Уровни и соотношения сторон
| Соотношение сторон | 1K | 2K |
|---|---|---|
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |
1K может превышать примерно 1 миллион пикселей. Оплата рассчитывается по токенам фактических выходных пикселей.
Ограничения точных размеров
- Ширина и высота — минимум 768 каждая.
- Ширина × высота — не более 2 359 296 (1536 × 1536).
- Каждая сторона округляется вниз до кратного 32. Например,
1000x1000даёт992x992. Для точных размеров используйте кратные 32.
1536x1024, 2048x1152, 3072x768. 512x512 отклоняется из-за слишком коротких сторон, 2048x2048 — из-за превышения общего числа пикселей.
Ограничение относится к общему числу пикселей, а не к максимуму 1536 на сторону. Поэтому
2048x1152 и 3072x768 допустимы, но уровень 4K не поддерживается. Эти настройки применимы только к генерации по тексту.Примеры запросов
Точные пиксели и веб-поиск
{
"model": "mai-image-2.6-flash",
"prompt": "Эйфелева башня ночью с фейерверком, стиль туристического плаката",
"width": 2048,
"height": 1152,
"web_grounding": true
}
Редактирование одного изображения
{
"model": "mai-image-2.6",
"prompt": "Сделай велосипед синим и добавь рядом маленькую собаку",
"image_urls": ["https://example.com/bicycle.png"]
}
Композиция из нескольких изображений
{
"model": "mai-image-2.6-flash",
"prompt": "Объедини оба референса в чистую футуристическую фотографию продукта",
"image_urls": [
"https://example.com/first.png",
"https://example.com/second.jpg"
]
}
Неподдерживаемые параметры
quality, style, background, output_format, response_format и mask_url не поддерживаются и игнорируются при передаче. Выходной формат всегда PNG. Редактирование по маске не поддерживается.
Ответ на отправку
integer
Код состояния ответа.
200 означает успех.array
Запрос результатов
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"code": 200,
"data": {
"id": "task_01K...",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://example.com/generated-image.png"]
}
]
}
}
}
| Статус | Действие |
|---|---|
pending | В очереди; продолжить опрос |
processing | Обработка; продолжить опрос |
completed | Успех; получить ссылки из массива data.result.images[0].url |
failed | Ошибка; прочитать data.error.message, остановить опрос. Полный возврат средств |
Оплата
Оплата по фактическому расходу входных и выходных токенов. Цены см. в тарифах моделей.- Выходные токены изображения = фактическая ширина × высота ÷ 1024. 1024×1024 соответствует 1024 токенам, 1536×1536 — 2304 токенам.
- Входные токены каждого референса ≈ ширина × высота ÷ 1024. Текстовые промпты также учитываются на входе.
- При отправке предварительно списывается сумма по уровню; после успеха выполняется возврат разницы или доплата по фактическим токенам.
- При ошибке задачи средства автоматически возвращаются полностью. Отклонённые при отправке ошибки параметров не создают задач и не оплачиваются.
Частые ошибки
| HTTP | Причина и действие |
|---|---|
| 400 | Неподдерживаемое resolution, например 4K; используйте 1K или 2K |
| 400 | Ширина или высота меньше 768 либо всего более 2 359 296 пикселей |
| 400 | Передан только width или height; нужны оба одновременно |
| 400 | Соотношение вне диапазона от 1:4 до 4:1 или неизвестный формат size |
| 400 | n больше 1 либо более 5 референсов |