curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
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: "flux-3-image-klein",
prompt: "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
FLUX 3 Image Klein
FLUX 3 Image Klein Generación de imágenes
Generación de texto a imagen, edición de una imagen y hasta 10 imágenes de referencia, con varias relaciones de aspecto y resolución de hasta 4k.
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-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
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: "flux-3-image-klein",
prompt: "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Este endpoint es asíncrono. Un envío correcto devuelve un
task_id. Use la consulta de tareas para obtener el estado y las imágenes. Deje de consultar cuando el estado sea completed o failed. La generación en 4k puede tardar varios minutos; se recomienda un tiempo de espera total de 10 minutos.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image-klein",
"prompt": "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
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: "flux-3-image-klein",
prompt: "Plano cinematográfico ultra panorámico de una carretera costera envuelta en niebla al amanecer, un único coche antiguo con los faros encendidos",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Encabezados de la solicitud
string
requerido
Autenticación Bearer con el formato
Bearer <token>, donde <token> es su APIMart API Key.Parámetros de la solicitud
string
requerido
Debe ser
flux-3-image-klein.string
requerido
Descripción de la escena para texto a imagen o instrucciones de edición. No se admiten prompts negativos; describa lo que desea ver.Use etiquetas y JSON bbox dentro de
prompt para definir composiciones o zonas de edición local. Consulte los ejemplos siguientes.string[]
Lista de imágenes de referencia, con un máximo de 10 imágenes. Admite URL HTTP(S) accesibles públicamente o entradas Base64.Omítala para texto a imagen. Proporcione una imagen para editarla o varias para usarlas como referencias.
string
predeterminado:"auto"
Relación de aspecto de salida. Valores admitidos:
21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, 1:2, 9:21 o auto.También se aceptan formatos como 16x9. Con auto:- Edición o varias referencias: sigue la relación de aspecto de la primera imagen de referencia.
- Texto a imagen: se determina a partir del prompt; usa
1:1si no se determina una relación.
string
Parámetro de compatibilidad para la relación de aspecto. Puede sustituir a
aspect_ratio y admite los mismos valores. Se recomienda usar solo uno de estos campos.No se admiten dimensiones en píxeles como 1024x1024; devuelven HTTP 400. Use resolution para elegir la resolución de salida.string
predeterminado:"1k"
Nivel de resolución. Admite
768sq, 1k, 1.5k, 2k y 4k, sin distinguir mayúsculas y minúsculas. 768 equivale a 768sq.Este parámetro determina el nivel de facturación. Si se omite, se genera y factura en 1k. Los valores no admitidos, como 3k, devuelven HTTP 400.integer
predeterminado:"2"
Tolerancia de seguridad del contenido, de 0 a 4. 0 es el nivel más estricto.
integer
Semilla aleatoria, de 0 a 4294967295.
integer
predeterminado:"16"
Pasos de generación: 1–16, por defecto 16. Menos pasos pueden acelerar la generación, pero reducir la calidad. Los pasos no afectan al precio.
string
predeterminado:"jpeg"
Formato de archivo:
jpeg (por defecto) o png; jpg equivale a jpeg. No se admite webp; devuelve HTTP 400.integer
predeterminado:"1"
Cada solicitud genera 1 imagen; solo se admite
1. Para varias imágenes, envíe tareas separadas. Los valores superiores a 1 devuelven HTTP 400.Parámetros no admitidos
Los siguientes parámetros devuelven HTTP 400 cuando se proporcionan; no se ignoran silenciosamente:width,height- Dimensiones en píxeles en
size, como1024x1024 grounding,guidancenegative_prompt,prompt_upsampling,mask_url
resolution para una resolución mayor y aspect_ratio para una relación de aspecto específica.
Especificar semilla, pasos y formato de imagen
{
"model": "flux-3-image-klein",
"prompt": "Un zorro rojo en la nieve fresca, luz dorada, poca profundidad de campo",
"aspect_ratio": "3:2",
"resolution": "2k",
"seed": 42,
"steps": 16,
"output_format": "png"
}
Editar una imagen de referencia
{
"model": "flux-3-image-klein",
"prompt": "Cambia el coche de la imagen a rojo y conserva la carretera, el fondo y la iluminación originales",
"image_urls": ["https://example.com/car.jpg"],
"aspect_ratio": "auto",
"resolution": "2k"
}
image_urls, con un máximo de 10 imágenes en total.
Referencias múltiples
La edición, la edición local y la composición usan el mismo endpoint y modelo de esta página, con facturación segúnresolution. Las referencias se numeran en orden: ref_image_0 para la primera y ref_image_1 para la segunda. También puede usar Image 1 / Image 2 en el prompt.
{
"model": "flux-3-image-klein",
"prompt": "Convierte Image 1 al estilo de Image 2.",
"image_urls": [
"https://example.com/subject.jpg",
"https://example.com/style.jpg"
],
"aspect_ratio": "auto"
}
Edición local (bounding box)
Empieceprompt con instrucciones en lenguaje natural y use <etiquetas> como <car_1> para identificar elementos. Añada un array JSON en la misma cadena, con un objeto por recuadro. bbox no es un parámetro de solicitud independiente.
| Campo | Descripción |
|---|---|
id | Coincide con la etiqueta del elemento en el prompt, sin los corchetes angulares. |
from | Origen del elemento, como ref_image_0; use null para elementos nuevos o que se vayan a redibujar. |
src_bbox | Recuadro en la imagen original; también debe ser null cuando from es null. |
tgt_bbox | Recuadro en la imagen de salida; igual a src_bbox conserva la posición, distinto mueve el elemento. |
desc | Describe cómo cambiar el elemento o qué conservar. |
src_bbox, tgt_bbox, bbox) usan [arriba, izquierda, abajo, derecha], es decir, [y1, x1, y2, x2], en una cuadrícula normalizada de 0 a 1000: [0,0] arriba a la izquierda y [1000,1000] abajo a la derecha. No son coordenadas en píxeles.
Este ejemplo cambia a rojo el coche dentro del recuadro y describe el fondo que se debe conservar. La URL y las posiciones son ilustrativas; ajústelas a su imagen.
{
"model": "flux-3-image-klein",
"prompt": "En <ref_image_0>, cambia el coche <car_1> a rojo y conserva el fondo <background_1>. [{\"id\":\"car_1\",\"from\":null,\"src_bbox\":null,\"tgt_bbox\":[250,300,750,800],\"desc\":\"Un coche rojo que conserva su forma y orientación originales.\"},{\"id\":\"background_1\",\"from\":\"ref_image_0\",\"src_bbox\":[0,0,1000,1000],\"tgt_bbox\":[0,0,1000,1000],\"desc\":\"Conservar la carretera, el fondo y la iluminación originales.\"}]",
"image_urls": [
"https://example.com/car.jpg"
],
"aspect_ratio": "auto",
"resolution": "2k"
}
Mover un elemento
Incluya el siguiente objeto en el array bbox al final del prompt.from identifica la imagen original, src_bbox la posición original y tgt_bbox la nueva. Use también la etiqueta correspondiente <knight_1> en la instrucción en lenguaje natural.
{
"id": "knight_1",
"from": "ref_image_0",
"src_bbox": [
500,
150,
850,
350
],
"tgt_bbox": [
194,
55,
544,
255
],
"desc": "Una figura pequeña de un caballero gris de amigurumi."
}
Composición de texto a imagen
También puede definir composiciones sin imágenes de referencia. Cada recuadro usaid, bbox y desc. Especifique aspect_ratio, ya que la cuadrícula se estira según la relación de aspecto.
{
"model": "flux-3-image-klein",
"aspect_ratio": "1:1",
"prompt": "Ilustración minimalista de una silueta negra corriendo <silhouette_1> sobre un fondo verde amarillento uniforme <background_1>. [{\"id\":\"background_1\",\"bbox\":[0,0,1000,1000],\"desc\":\"Un fondo verde amarillento fluorescente con una sutil textura de papel.\"},{\"id\":\"silhouette_1\",\"bbox\":[150,150,850,850],\"desc\":\"Una silueta negra corriendo con textura punteada.\"}]"
}
Notas de uso
-
El JSON bbox forma parte de la cadena
prompt. Al escribir el JSON de la solicitud manualmente, escape las comillas dobles internas como\". Los SDK o la serialización JSON pueden hacerlo automáticamente. -
Incluya también las zonas que deben conservarse y describa qué mantener en
desc. -
Las etiquetas de los elementos en el prompt deben corresponder una a una con los valores
iddel JSON. Los identificadores de referencia como<ref_image_0>apuntan a las imágenes de entrada. -
Este modelo no tiene un parámetro
maskni admitemask_url; enviarmask_urldevuelve HTTP 400. La edición bbox no usa un parámetro de carga de máscaras.
Respuesta del envío
integer
Código de estado de la respuesta.
200 indica éxito.array
Consultar resultados
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"code": 200,
"data": {
"status": "completed",
"result": {
"images": [
{
"url": ["https://example.com/generated-image.jpg"]
}
]
}
}
}
data.result.images[0].url. Si el estado de la tarea es failed, revise el error devuelto en lugar de seguir esperando una imagen.
Resolución y facturación
Se factura por imagen. El precio unitario depende únicamente deresolution, no de la relación de aspecto ni del número de imágenes de referencia. Las referencias no tienen coste adicional.
steps, seed y output_format no afectan al precio. La generación de texto a imagen y la edición cuestan lo mismo.
| Nivel de resolución | Tamaño de salida aproximado |
|---|---|
768sq | Aproximadamente 768×768 |
1k (predeterminado) | Aproximadamente 1MP |
1.5k | Aproximadamente 2MP |
2k | Aproximadamente 4MP |
4k | Aproximadamente 16MP |
Errores frecuentes de parámetros
| Solicitud | Resultado y acción |
|---|---|
resolution: "3k" | HTTP 400; use uno de los 5 niveles admitidos |
size: "1024x1024" | HTTP 400; use una relación de aspecto y elija la resolución con resolution |
n: 2 | HTTP 400; solo se genera 1 imagen por solicitud |
| 11 imágenes de referencia | HTTP 400; proporcione como máximo 10 |
grounding | HTTP 400; este modelo no admite parámetros de búsqueda web o de imágenes |
output_format: "webp" | HTTP 400; use jpeg o png (jpg equivale a jpeg) |