# Crea este valor una vez por cada nueva operación de generación; conserva el original al reintentar la misma operación.
IDEMPOTENCY_KEY="$(uuidgen)"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-APIMart-Response-Version: 2026-07-27' \
--header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
--data '{
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1
}'
import uuid
import requests
# Crea una vez por cada nueva operación de generación; reutiliza los headers y el payload originales al reintentar.
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": str(uuid.uuid4()),
}
payload = {
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1,
}
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers=headers,
json=payload,
)
print(response.status_code, response.json())
// Crea una vez por cada nueva operación de generación; reutiliza los headers y el body originales al reintentar.
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": crypto.randomUUID(),
};
const body = JSON.stringify({
model: "gpt-image-2.5-ext",
version: "flare",
prompt: "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
size: "1:1",
resolution: "1K",
n: 1,
});
const response = await fetch(
"https://api.apimart.ai/v1/images/generations",
{ method: "POST", headers, body },
);
console.log(response.status, await response.json());
{
"code": 202,
"request_id": "req_example",
"data": {
"id": "task_01EXAMPLE",
"object": "generation.task",
"type": "image",
"status": "pending",
"progress": 0,
"poll_url": "/v1/tasks/task_01EXAMPLE"
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01EXAMPLE"
}
]
}
{
"error": {
"message": "n must be an integer between 1 and 4",
"type": "invalid_request_error",
"param": "",
"code": "invalid_request_error"
}
}
GPT-Image-2.5 Ext
GPT-Image-2.5 Ext — Generación de imágenes
- Usa gpt-image-2.5-ext y selecciona Flare o Sunburst mediante version
- Procesamiento asíncrono: consulta los resultados con el ID de tarea después del envío
- Admite generación a partir de texto y de imágenes con hasta 16 imágenes de referencia
- Admite 10 relaciones de aspecto y auto, con resoluciones 1K / 2K / 4K
- Genera de 1 a 4 imágenes por solicitud, con facturación según la versión, la resolución y el número de imágenes realmente entregadas
POST
/
v1
/
images
/
generations
# Crea este valor una vez por cada nueva operación de generación; conserva el original al reintentar la misma operación.
IDEMPOTENCY_KEY="$(uuidgen)"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-APIMart-Response-Version: 2026-07-27' \
--header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
--data '{
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1
}'
import uuid
import requests
# Crea una vez por cada nueva operación de generación; reutiliza los headers y el payload originales al reintentar.
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": str(uuid.uuid4()),
}
payload = {
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1,
}
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers=headers,
json=payload,
)
print(response.status_code, response.json())
// Crea una vez por cada nueva operación de generación; reutiliza los headers y el body originales al reintentar.
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": crypto.randomUUID(),
};
const body = JSON.stringify({
model: "gpt-image-2.5-ext",
version: "flare",
prompt: "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
size: "1:1",
resolution: "1K",
n: 1,
});
const response = await fetch(
"https://api.apimart.ai/v1/images/generations",
{ method: "POST", headers, body },
);
console.log(response.status, await response.json());
{
"code": 202,
"request_id": "req_example",
"data": {
"id": "task_01EXAMPLE",
"object": "generation.task",
"type": "image",
"status": "pending",
"progress": 0,
"poll_url": "/v1/tasks/task_01EXAMPLE"
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01EXAMPLE"
}
]
}
{
"error": {
"message": "n must be an integer between 1 and 4",
"type": "invalid_request_error",
"param": "",
"code": "invalid_request_error"
}
}
# Crea este valor una vez por cada nueva operación de generación; conserva el original al reintentar la misma operación.
IDEMPOTENCY_KEY="$(uuidgen)"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-APIMart-Response-Version: 2026-07-27' \
--header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
--data '{
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1
}'
import uuid
import requests
# Crea una vez por cada nueva operación de generación; reutiliza los headers y el payload originales al reintentar.
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": str(uuid.uuid4()),
}
payload = {
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
"size": "1:1",
"resolution": "1K",
"n": 1,
}
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers=headers,
json=payload,
)
print(response.status_code, response.json())
// Crea una vez por cada nueva operación de generación; reutiliza los headers y el body originales al reintentar.
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
"X-APIMart-Response-Version": "2026-07-27",
"Idempotency-Key": crypto.randomUUID(),
};
const body = JSON.stringify({
model: "gpt-image-2.5-ext",
version: "flare",
prompt: "Un rincón de lectura acogedor junto a una ventana en un día lluvioso, una lámpara de mesa de luz cálida, iluminación cinematográfica",
size: "1:1",
resolution: "1K",
n: 1,
});
const response = await fetch(
"https://api.apimart.ai/v1/images/generations",
{ method: "POST", headers, body },
);
console.log(response.status, await response.json());
{
"code": 202,
"request_id": "req_example",
"data": {
"id": "task_01EXAMPLE",
"object": "generation.task",
"type": "image",
"status": "pending",
"progress": 0,
"poll_url": "/v1/tasks/task_01EXAMPLE"
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01EXAMPLE"
}
]
}
{
"error": {
"message": "n must be an integer between 1 and 4",
"type": "invalid_request_error",
"param": "",
"code": "invalid_request_error"
}
}
Autenticación y encabezados
string
requerido
Los endpoints de generación y consulta de tareas usan una API Key de la plataforma para la autenticación Bearer Token. Obtén una clave en la página de gestión de API Keys.Para consultar la tarea, usa una API Key que pertenezca al mismo usuario de la plataforma.
Authorization: Bearer YOUR_API_KEY
string
requerido
Usa
application/json al enviar la solicitud. Tanto la generación a partir de texto como la basada en imágenes utilizan un cuerpo de solicitud JSON.Selección de versión
| Nombre mostrado | model | version |
|---|---|---|
| Flare (predeterminado) | gpt-image-2.5-ext | flare |
| Sunburst | gpt-image-2.5-ext | sunburst |
Parámetros de la solicitud
string
requerido
Valor fijo:
gpt-image-2.5-ext.string
predeterminado:"flare"
Versión del modelo. Opciones:
flare, sunburst.string
requerido
Prompt para generar o editar imágenes. No puede quedar vacío después de eliminar los espacios al principio y al final.Para generar a partir de imágenes, describe qué elementos de las referencias deben conservarse y cuáles deben cambiarse.
string
predeterminado:"1K"
Nivel de resolución de salida. Opciones:
1K, 2K, 4K.string
predeterminado:"auto"
Relación de aspecto de salida. Elige
auto o una de las siguientes 10 relaciones:1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9.integer
predeterminado:"1"
Número de imágenes que se generarán por solicitud. Debe ser un entero entre
1 y 4.string[]
Array de hasta
16 imágenes de referencia. Sin referencias, se genera a partir de texto; con referencias, se genera a partir de imágenes. Las referencias no tienen un cargo adicional.Formatos de entrada admitidos:- URL de imágenes accesibles
- Data URL:
data:image/...;base64,...
Ejemplos de uso
Los siguientes ejemplos son cuerpos de solicitud JSON paraPOST /v1/images/generations. Usa la autenticación y los encabezados recomendados anteriormente. Sustituye las direcciones de referencia de los ejemplos por URL de imágenes reales y accesibles.
Generación a partir de texto
{
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un jardín elevado en una ciudad futurista, ligera niebla al amanecer, fotografía de arquitectura",
"size": "16:9",
"resolution": "2K",
"n": 1
}
Generación a partir de imágenes con Sunburst
{
"model": "gpt-image-2.5-ext",
"version": "sunburst",
"prompt": "Conserva el producto y el texto del embalaje, sustituye el fondo por un estudio de tono blanco crema suave y añade una sombra proyectada natural",
"size": "1:1",
"resolution": "2K",
"n": 1,
"image_urls": [
"https://example.com/product.png"
]
}
Varias imágenes de referencia y de salida
{
"model": "gpt-image-2.5-ext",
"version": "sunburst",
"prompt": "Usa el producto de la primera imagen como sujeto, toma como referencia el escenario de la segunda imagen y genera una imagen publicitaria horizontal",
"size": "16:9",
"resolution": "2K",
"n": 2,
"image_urls": [
"https://example.com/product.png",
"https://example.com/set.jpg"
]
}
Relación de aspecto automática y resolución 4K
{
"model": "gpt-image-2.5-ext",
"version": "flare",
"prompt": "Un visual principal minimalista para el lanzamiento de un producto, con una relación de aspecto de la composición adecuada al contenido de la imagen",
"size": "auto",
"resolution": "4K",
"n": 1
}
Consultar los resultados de la tarea
Usa el ID de tarea para llamar al endpoint de consulta de tareas:curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01EXAMPLE \
--header 'Authorization: Bearer <token>'
Tarea completada correctamente
El ID de tarea, las marcas de tiempo, las URL y los importes siguientes solo ilustran la estructura de la respuesta. No representan una tarea real ni precios efectivos.{
"code": 200,
"data": {
"id": "task_01EXAMPLE",
"status": "completed",
"progress": 100,
"created": 1788912000,
"completed": 1788912045,
"actual_time": 45,
"estimated_time": 300,
"cost": 0.2,
"credits_cost": 2,
"result": {
"images": [
{
"url": [
"https://example.com/output-1.png",
"https://example.com/output-2.png"
],
"expires_at": 1788998445
}
]
}
}
}
Respuesta
integer
Código de estado de la respuesta. Un envío correcto en el formato unificado devuelve
200.string
Identificador de esta solicitud, utilizado para diagnosticar problemas.
object
La tarea asíncrona aceptada.
Mostrar Campos de la tarea
Mostrar Campos de la tarea
string
Identificador único de la tarea para consultar su estado y las imágenes resultantes.
string
Tipo de objeto. El valor es
generation.task.string
Tipo de tarea. El valor es
image.string
El estado inicial es
pending, lo que indica que la tarea ha sido aceptada.integer
Progreso actual, inicialmente
0.string
Ruta relativa para consultar la tarea, por ejemplo
/v1/tasks/task_01EXAMPLE.