curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"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-2-flex",
prompt: "A blue cat on the grass",
resolution: "2MP",
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": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"type": "payment_required"
}
}
Flux 2.0
Generación de imágenes con FLUX.2
Envía tareas asíncronas de FLUX.2 para generar imágenes a partir de texto o de imágenes de referencia. La API devuelve un ID de tarea; consulta periódicamente el endpoint de tareas para obtener la imagen generada.
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-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"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-2-flex",
prompt: "A blue cat on the grass",
resolution: "2MP",
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": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"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-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-flex",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"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-2-flex",
prompt: "A blue cat on the grass",
resolution: "2MP",
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": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"type": "payment_required"
}
}
Modelos compatibles
| Modelo | Descripción |
|---|---|
flux-2-flex | Generación con control detallado de los pasos de muestreo y del nivel de adherencia al prompt. |
flux-2-pro | Equilibrio entre calidad y velocidad para flujos de producción de uso general. |
flux-2-max | El modelo FLUX.2 de mayor calidad para obtener el máximo nivel de detalle. |
Autorización
string
requerido
Todos los endpoints requieren autenticación mediante Bearer Token.Obtén una clave en Gestión de claves de API y añádela al encabezado de la solicitud:
Authorization: Bearer YOUR_API_KEY
Cuerpo de la solicitud
string
requerido
Nombre del modelo:
flux-2-flexflux-2-proflux-2-max
boolean
predeterminado:"false"
Indica si se debe moderar el contenido antes de enviar la tarea de imagen.
true: revisar los prompts y las imágenes de entrada conomni-moderation-latestfalseu omitido: no enviar una solicitud de moderación, sin coste ni latencia de moderación adicionales (predeterminado)
string
requerido
Descripción textual de la imagen que se generará o de la edición que se aplicará a las imágenes de referencia.
string
predeterminado:"2MP"
Ajuste predefinido de resolución de salida. Valores compatibles:
1MP2MP(valor predeterminado)3MP4MP
1MP equivale a 1,048,576 píxeles.Para mantener la compatibilidad con integraciones anteriores, también se aceptan estos alias: 512, 512P y 1M equivalen a 1MP; 1K y 1024, a 2MP; 2K y 2048, a 3MP; 4K, a 4MP. Los demás valores se rechazan.Este ajuste determina las dimensiones de salida cuando size es una relación de aspecto. Se ignora cuando se proporcionan dimensiones exactas en píxeles mediante size o mediante width y height.string
predeterminado:"1:1"
Relación de aspecto o dimensiones en píxeles de la imagen de salida.
size también admite auto: cuando se proporciona image_urls, se usa la relación de aspecto de la imagen de referencia y se mantiene el nivel actual de resolution; sin una imagen de referencia, se utiliza el valor predeterminado 1:1.Opciones de tamaño compatibles:1:1(valor predeterminado)4:33:416:99:163:22:321:99:21auto- usar la relación de aspecto de la imagen de referencia
1024x1536. Las dimensiones exactas están sujetas a los mismos límites de píxeles que width y height.La prioridad es: el par width + height, una cadena de píxeles en size, resolution + relación de aspecto en size y, por último, el valor predeterminado 2MP + 1:1 (1440×1440).integer
Anchura exacta de salida en píxeles. Si se proporciona,
height también es obligatorio. Cada dimensión debe tener al menos 64 píxeles. Si solo se proporciona una dimensión, la tarea falla.Un par completo de width y height tiene la máxima prioridad y sustituye a resolution y size.integer
Altura exacta de salida en píxeles. Si se proporciona,
width también es obligatorio. Cada dimensión debe tener al menos 64 píxeles. Si solo se proporciona una dimensión, la tarea falla.La imagen de salida no debe superar los 4 MP (width × height ≤ 4 194 304) y la suma de la imagen de salida y todas las imágenes de referencia no debe superar los 9 MP.array
Imágenes de referencia para generar imágenes a partir de otras imágenes. Proporciónalas mediante URL accesibles públicamente o en Base64.
- Máximo: 8 imágenes
- La suma de la imagen de salida y todas las imágenes de referencia no debe superar los 9 MP
string
predeterminado:"jpeg"
Formato de la imagen resultante:
jpeg, png o webp. El valor predeterminado es jpeg.integer
predeterminado:"1"
Número de imágenes que se generan. Solo se admite el valor
1.integer
Semilla aleatoria. Reutiliza la misma semilla y los mismos parámetros para obtener resultados reproducibles; omítela para usar una semilla aleatoria.
boolean
predeterminado:"false"
Indica si el prompt debe mejorarse y reescribirse antes de generar la imagen. El valor predeterminado es
false; establécelo en true para activarlo. Define explícitamente false para desactivar la reescritura del prompt.integer
predeterminado:"2"
Tolerancia de seguridad entre
0 y 5. Los valores más altos son más permisivos.integer
predeterminado:"50"
Número de pasos de muestreo entre
1 y 50. Los valores más altos pueden mejorar el detalle, pero requieren más tiempo.Este parámetro solo es compatible con flux-2-flex. No lo envíes con flux-2-pro ni con flux-2-max.number
predeterminado:"5.0"
Nivel de adherencia al prompt entre
1.5 y 10. Los valores más altos siguen el prompt con mayor precisión.Este parámetro solo es compatible con flux-2-flex. No lo envíes con flux-2-pro ni con flux-2-max.Tabla de referencia de resoluciones
| Relación de aspecto | 1MP | 2MP (predeterminada) | 3MP | 4MP |
|---|---|---|---|---|
1:1 | 1024×1024 | 1440×1440 | 1536×1536 | 2048×2048 |
4:3 | 1152×864 | 1664×1248 | 1824×1360 | 2336×1760 |
3:4 | 864×1152 | 1248×1664 | 1360×1824 | 1760×2336 |
16:9 | 1344×752 | 1920×1072 | 2048×1152 | 2720×1536 |
9:16 | 752×1344 | 1072×1920 | 1152×2048 | 1536×2720 |
3:2 | 1248×832 | 1728×1152 | 1872×1248 | 2496×1664 |
2:3 | 832×1248 | 1152×1728 | 1248×1872 | 1664×2496 |
21:9 | 1504×640 | 2176×928 | 2304×992 | 3072×1312 |
9:21 | 640×1504 | 928×2176 | 992×2304 | 1312×3072 |
Ejemplos de uso
Generación a partir de texto
{
"model": "flux-2-pro",
"prompt": "A cinematic city at night with neon reflections on wet streets",
"resolution": "1MP",
"size": "16:9"
}
Generación a partir de imágenes de referencia
{
"model": "flux-2-pro",
"prompt": "Place the person from the first image in the scene from the second image and match the lighting",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"resolution": "2MP",
"output_format": "webp"
}
Dimensiones de salida exactas
{
"model": "flux-2-max",
"prompt": "A highly detailed botanical illustration",
"width": 1024,
"height": 1536
}
Controles de FLUX.2 Flex
{
"model": "flux-2-flex",
"prompt": "A minimalist poster with the headline SUMMER SALE and the subheading 50% OFF",
"resolution": "3MP",
"size": "3:4",
"steps": 50,
"guidance": 6.5
}
Respuesta
integer
Código de estado de la respuesta.
array
Obtener el resultado
Consulta periódicamenteGET /v1/tasks/{task_id} hasta que la tarea alcance el estado completed o failed. Consulta la API de estado de tareas para ver el esquema completo de la respuesta.
Una tarea completada incluye una imagen generada:
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://upload.apimart.ai/f/image/xxxxxxxx-flux-2.jpeg"],
"expires_at": 1785220083
}
]
}
}
}
data.result.images[0].url[0]. Su vencimiento lo determina la marca de tiempo Unix de data.result.images[0].expires_at; descarga la imagen antes de ese momento.
Estados de la tarea
| Estado | Significado |
|---|---|
submitted / pending | La tarea se ha aceptado o está en cola; sigue consultando |
processing | La imagen se está generando; sigue consultando |
completed | La tarea se ha completado; el resultado está en result.images |
failed | La tarea ha fallado; el motivo está en data.error.message y se realiza un reembolso completo |
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "`steps` must be between 1 and 50 (got 0)"
}
}
}
task_id; al consultar la tarea, esta pasa a failed. El motivo específico siempre está en error.message, mientras que error.code es task_failed. Las tareas fallidas se reembolsan por completo.
Notas
- Las tareas se procesan de forma asíncrona. La respuesta al envío devuelve un
task_idpara realizar las consultas. - El parámetro
ndebe ser1; cada solicitud genera exactamente una imagen. - Las imágenes de referencia pueden proporcionarse mediante una URL accesible públicamente o en Base64.
- Se admiten hasta 8 imágenes de referencia, sujetas al límite combinado de 9 MP para las imágenes de entrada y de salida.
- Las dimensiones exactas pueden indicarse mediante un
sizeen píxeles o proporcionando juntoswidthyheight. En este último caso, cada dimensión debe tener al menos 64 píxeles; la imagen de salida está limitada a 4 MP. - El vencimiento de la URL del resultado lo determina el valor
expires_atdevuelto en la respuesta de la tarea. prompt_upsamplingesfalsede forma predeterminada.