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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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: "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
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 Generación de imágenes
Texto a imagen, edición individual, composición con hasta 5 imágenes de referencia y búsqueda web. Versiones de alta calidad y 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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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: "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
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..."
}
]
}
Selección del modelo
| ID del modelo | Características |
|---|---|
mai-image-2.6 | Versión de alta calidad para usos que priorizan el resultado visual |
mai-image-2.6-flash | Versión más rápida y económica, con calidad ligeramente inferior |
Este endpoint es asíncrono. Tras el envío, obtenga el ID de
data[0].task_id y use la consulta de tareas. Consulte cada 3–5 segundos con un tiempo de espera total de 3 minutos. Deténgase cuando el estado sea completed o 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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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": "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
"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: "Póster fotorrealista de un campus universitario al atardecer, iluminación cinematográfica",
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..."
}
]
}
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
ID del modelo:
mai-image-2.6 o mai-image-2.6-flash.string
requerido
Descripción de la imagen o instrucciones de edición. Admite chino e inglés, hasta aproximadamente 32.000 tokens (no caracteres).
string
predeterminado:"1:1"
Admite una relación de aspecto (como
16:9), dimensiones en píxeles (como 1536x1024) o auto.- Relación de aspecto: cualquier proporción de enteros entre
1:4y4:1, junto conresolution. - Píxeles: admite
anchoxalto,ancho*altooancho×alto. En este modo,resolutionno determina las dimensiones. auto: el modelo elige la relación según el prompt.
string
predeterminado:"1K"
Admite
1K y 2K, también en minúsculas. Otros niveles, como 4K, devuelven HTTP 400.Selecciona el nivel de tamaño para texto a imagen con una relación de aspecto. No calcula dimensiones si se usan píxeles exactos. No permite fijar las dimensiones en imagen a imagen.integer
Ancho exacto en píxeles. Debe enviarse junto con
height. Ambos tienen prioridad sobre size y resolution para texto a imagen.Ancho y alto deben ser al menos 768, con un máximo total de 2.359.296 píxeles. Use múltiplos de 32; de lo contrario, cada dimensión se redondea hacia abajo a un múltiplo de 32.Este parámetro no determina las dimensiones en imagen a imagen.integer
Alto exacto en píxeles. Debe enviarse con
width y seguir los límites anteriores. No determina las dimensiones en imagen a imagen.string[]
Lista de hasta 5 referencias. Omítala para texto a imagen; una imagen permite edición individual y varias permiten composición.Cada elemento admite una URL HTTP(S) de imagen accesible públicamente o una Data URL Base64 como
data:image/png;base64,....Admite JPEG y PNG; WEBP y GIF se convierten automáticamente a PNG. Las URL deben ser accesibles públicamente o la tarea fallará.En imagen a imagen, el modelo decide las dimensiones según las referencias, aproximadamente 1 millón de píxeles y una relación similar. size, resolution, width y height no pueden fijar esas dimensiones.boolean
predeterminado:"false"
Con
true, el modelo elige la relación según el prompt, equivalente a size: "auto".boolean
predeterminado:"false"
Con
true, consulta información en tiempo real antes de generar, útil para personas, lugares o eventos reales.integer
predeterminado:"1"
Solo admite
1. Envíe tareas separadas para varias imágenes. Los valores superiores a 1 devuelven HTTP 400.Dimensiones de texto a imagen
| Necesidad | Parámetros |
|---|---|
| Cuadrado predeterminado | Omitir tamaño: 1:1 + 1K, salida 1024×1024 |
| Resolución + relación de aspecto | size: "16:9", resolution: "2K" |
| Píxeles exactos | size: "1536x1024", o width: 1536, height: 1024 |
| Relación automática | size: "auto" o auto_aspect_ratio: true |
width / height → size en píxeles → size como relación combinado con resolution.
Niveles y relaciones de aspecto
| Relación de aspecto | 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. Se factura el uso de tokens correspondiente a los píxeles reales de salida.
Límites de píxeles exactos
- Ancho y alto deben ser al menos 768.
- Ancho × alto no debe superar 2.359.296 (1536 × 1536).
- Cada dimensión se redondea hacia abajo a un múltiplo de 32. Por ejemplo,
1000x1000produce992x992. Use múltiplos de 32 para dimensiones exactas.
1536x1024, 2048x1152 y 3072x768. 512x512 se rechaza por lados demasiado pequeños; 2048x2048 supera el total de píxeles.
El límite es de píxeles totales, no de 1536 por lado. Por tanto,
2048x1152 y 3072x768 son válidos, pero no se admite el nivel 4K. Estos ajustes solo se aplican a texto a imagen.Ejemplos de solicitudes
Píxeles exactos y búsqueda web
{
"model": "mai-image-2.6-flash",
"prompt": "La torre Eiffel de noche con fuegos artificiales, estilo póster de viajes",
"width": 2048,
"height": 1152,
"web_grounding": true
}
Edición individual
{
"model": "mai-image-2.6",
"prompt": "Haz que la bicicleta sea azul y añade un perro pequeño a su lado",
"image_urls": ["https://example.com/bicycle.png"]
}
Composición de varias imágenes
{
"model": "mai-image-2.6-flash",
"prompt": "Combina ambas imágenes de referencia en una foto de producto limpia y futurista",
"image_urls": [
"https://example.com/first.png",
"https://example.com/second.jpg"
]
}
Parámetros no admitidos
quality, style, background, output_format, response_format y mask_url no se admiten y se ignoran si se envían. La salida siempre es PNG. No se admite edición con 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": {
"id": "task_01K...",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://example.com/generated-image.png"]
}
]
}
}
}
| Estado | Acción |
|---|---|
pending | En cola; seguir consultando |
processing | Procesando; seguir consultando |
completed | Éxito; obtener enlaces del array data.result.images[0].url |
failed | Fallo; leer data.error.message y detener las consultas. Reembolso completo |
Facturación
Se factura el uso real de tokens de entrada y salida. Consulte los precios de los modelos.- Tokens de salida de imagen = ancho real × alto ÷ 1024. 1024×1024 corresponde a 1024 tokens y 1536×1536 a 2304 tokens.
- Tokens de entrada por referencia ≈ ancho × alto ÷ 1024. Los prompts de texto también cuentan como entrada.
- Al enviar se cobra un importe según el nivel; tras el éxito se ajusta al uso real mediante reembolso o cobro adicional.
- Las tareas fallidas reciben reembolso completo automático. Los errores de parámetros rechazados al enviar no crean tareas ni generan cargos.
Errores frecuentes
| HTTP | Causa y solución |
|---|---|
| 400 | resolution no admitida, como 4K; usar 1K o 2K |
| 400 | Ancho o alto inferior a 768, o más de 2.359.296 píxeles totales |
| 400 | Solo se envió width o height; deben enviarse juntos |
| 400 | Relación fuera de 1:4 a 4:1, o formato de size desconocido |
| 400 | n superior a 1 o más de 5 referencias |