curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "Change hair color to blue",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Не удалось выполнить аутентификацию. Проверьте API-ключ.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Недостаточно средств. Пополните баланс.",
"type": "payment_required"
}
}
Flux Kontext
Генерация изображений Flux Kontext
-
Асинхронная обработка: после отправки возвращается идентификатор задачи для последующего запроса
-
Модели Pro и Max поддерживают генерацию по тексту и редактирование по референсным изображениям
-
Поле
expires_atв результате указывает время истечения срока действия ссылки на изображение
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": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "Change hair color to blue",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Не удалось выполнить аутентификацию. Проверьте API-ключ.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Недостаточно средств. Пополните баланс.",
"type": "payment_required"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change hair color to blue",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "Change hair color to blue",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Не удалось выполнить аутентификацию. Проверьте API-ключ.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Недостаточно средств. Пополните баланс.",
"type": "payment_required"
}
}
Поддерживаемые модели
| Модель | Описание |
|---|---|
flux-kontext-pro | Flux Kontext Pro для генерации и редактирования изображений |
flux-kontext-max | Flux Kontext Max для генерации и редактирования изображений с повышенным качеством |
Авторизация
string
обязательно
Для всех конечных точек требуется аутентификация с помощью Bearer Token.Получение API-ключа:Перейдите на страницу управления API-ключами, чтобы получить API-ключ.Добавьте его в заголовок запроса:
Authorization: Bearer YOUR_API_KEY
Тело запроса
string
обязательно
Название модели:
flux-kontext-pro— Kontext Pro для генерации и редактирования изображенийflux-kontext-max— Kontext Max для генерации и редактирования изображений с повышенным качеством
boolean
по умолчанию:"false"
Выполнять ли проверку содержимого перед отправкой задачи генерации изображения.
true: проверить промпты и входные изображения с помощьюomni-moderation-latestfalseили параметр не указан: не отправлять запрос на проверку, без дополнительных затрат и задержки (по умолчанию)
string
обязательно
Текстовое описание для генерации или редактирования изображения.
array
Список референсных изображений. Без этого параметра выполняется генерация по тексту; при его наличии изображения редактируются.Ограничения:
- Не более 4 изображений
- Поддерживаются общедоступные URL
- Поддерживаются изображения в формате Base64
- Суммарное число пикселей выходного изображения и всех референсов не должно превышать 9 МП
temporarily unavailable dependency. В таком случае сначала проверьте, что URL общедоступен, не истёк и не блокирует внешний доступ.string
по умолчанию:"1:1"
Соотношение сторон изображения.Поддерживаемые соотношения сторон и автоматический режим:
1:1— квадрат (по умолчанию)4:3— горизонтальное 4:33:4— вертикальное 3:416:9— широкоформатное горизонтальное9:16— широкоформатное вертикальное3:2— горизонтальное 3:22:3— вертикальное 2:321:9— сверхширокое9:21— сверхвысокоеauto— следовать соотношению сторон референсного изображения
size указано auto, при наличии image_urls используется соотношение сторон референсного изображения. Если референсного изображения нет, применяется значение по умолчанию 1:1.Также можно передать строку пикселей, например 1024x1536. Kontext сопоставляет её с ближайшим поддерживаемым соотношением сторон и не гарантирует точные указанные размеры.Параметр resolution не влияет на результат Kontext, который остаётся около 1 МП. Не передавайте width или height: Kontext не поддерживает эти параметры, и задача завершится с ошибкой.string
по умолчанию:"png"
Формат выходного изображения:
png— PNG (по умолчанию)jpeg— JPEGwebp— WebP
string
Совместимый параметр формы ответа. Допустимые значения:
url и b64_json. Он не изменяет формат изображения; если также передан output_format, приоритет имеет output_format.integer
по умолчанию:"1"
Число генерируемых изображений. Поддерживается только значение
1.integer
Случайное начальное значение. Фиксированный seed при остальных неизменных параметрах позволяет воспроизвести тот же результат; если параметр не передан, значение выбирается случайно.
boolean
по умолчанию:"false"
Включает или отключает улучшение промпта:
true— включеноfalse— отключено (по умолчанию)
Явно укажите false, чтобы отключить переформулирование промпта.
integer
по умолчанию:"2"
Уровень допустимости при проверке контента.Диапазон: 0–6. Чем выше значение, тем менее строгая проверка применяется.
Фактические размеры результата
| Соотношение | Фактический размер |
|---|---|
1:1 | 1024×1024 |
4:3 | 1184×880 |
3:4 | 880×1184 |
16:9 | 1392×752 |
9:16 | 752×1392 |
3:2 | 1248×832 |
2:3 | 832×1248 |
21:9 | 1568×672 |
9:21 | 672×1568 |
Примеры использования
Редактирование по входному изображению{
"model": "flux-kontext-pro",
"prompt": "Change the background to a beach",
"image_urls": ["https://example.com/photo.jpg"],
"size": "16:9",
"output_format": "png"
}
{
"model": "flux-kontext-max",
"prompt": "A blue cat",
"size": "1:1",
"seed": 12345
}
{
"model": "flux-kontext-max",
"prompt": "Place the person from image 1 into the scene from image 2 and harmonize the lighting",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"size": "4:3"
}
Ответ
integer
Код состояния ответа.
array
Получение результата задачи
После успешной отправки опрашивайте статус задачи черезGET /v1/tasks/{task_id}. Подробности приведены на странице получения статуса задачи.
Пример успешного ответа
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"created": 1785133674,
"completed": 1785133683,
"actual_time": 9,
"estimated_time": 15,
"result": {
"images": [
{
"url": [
"https://upload.apimart.ai/f/image/xxxxxxxx-flux-kontext.png"
],
"expires_at": 1785220083
}
]
}
}
}
data.result.images[0].url[0]. expires_at — Unix-время истечения срока действия этой ссылки. Сохраните изображение до указанного момента.
Статусы задачи
| Статус | Значение |
|---|---|
submitted / pending | Задача принята или находится в очереди; продолжайте опрос |
processing | Идёт генерация; продолжайте опрос |
completed | Генерация завершена; результат находится в result.images |
failed | Генерация завершилась с ошибкой; причина находится в data.error.message, средства возвращаются полностью |
Пример ответа с ошибкой
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "width/height are not supported by flux-kontext-pro"
}
}
}
task_id, затем при опросе задача переходит в failed. Полная причина всегда находится в error.message; значение error.code — task_failed. За неуспешную задачу средства возвращаются полностью.
Примечания
- Асинхронная обработка: после отправки возвращается
task_id. Опрашивайте/v1/tasks/{task_id}, чтобы получить результат. - Требования к референсам: поддерживается до 4 референсных изображений по общедоступным URL или в формате Base64; суммарный объём выхода и всех референсов не должен превышать 9 МП.
- Правила размера: соотношение по умолчанию —
1:1;resolutionне влияет на результат, аwidthиheightне поддерживаются. - Число изображений: параметр
nдолжен иметь значение1. - Переформулирование промпта: явно укажите
prompt_upsampling: false, чтобы отключить переформулирование промпта. - Ссылка на результат: срок действия URL изображения определяется соответствующим Unix-временем
expires_at. Сохраните изображение до истечения срока.