GPT Image 1.5 Image API
Generate or process images with GPT Image 1.5 through the PixMind API.
OpenAI image generation and editing with up to sixteen reference images.
Provider
OpenAIModel ID
gpt-image-1.5Endpoint
POST /api-platform/v1/generationsAuthentication
Base URL: https://aihub-admin.aimix.pro. Send Authorization: Bearer <PIXMIND_API_KEY> on both creation and polling requests, and Content-Type: application/json when submitting JSON. Keep your key in a server environment variable.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Stable PixMind model ID. Use `gpt-image-1.5`. Allowed values: |
prompt | string | Yes | Natural-language generation or editing instructions. |
aspectRatio | string | No | Requested output aspect ratio. Allowed values: Default: |
referenceImages | string[] (URI) | No | Reference image URLs used for editing, composition, subject, or style guidance. |
n | integer | No | Number of images to generate in this request. Allowed values: Default: |
Request example
curl --request POST 'https://aihub-admin.aimix.pro/api-platform/v1/generations' \
-H "Authorization: Bearer $PIXMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-1.5",
"prompt": "Create a polished campaign image while preserving the supplied subject",
"aspectRatio": "1:1",
"referenceImages": [
"https://example.com/reference.png"
]
}'// Node.js 20+. Keep the API key on your server.
const apiKey = process.env.PIXMIND_API_KEY;
if (!apiKey) throw new Error("PIXMIND_API_KEY is required");
const response = await fetch("https://aihub-admin.aimix.pro/api-platform/v1/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "gpt-image-1.5",
"prompt": "Create a polished campaign image while preserving the supplied subject",
"aspectRatio": "1:1",
"referenceImages": [
"https://example.com/reference.png"
]
}),
signal: AbortSignal.timeout(30_000)
});
const task = await response.json();
if (!response.ok || task.code !== 1000) {
throw new Error(task.message ?? task.error?.message ?? `HTTP ${response.status}`);
}
console.log(task);Accepted task response
Generation is asynchronous. Save taskId and poll GET /api-platform/v1/tasks/{taskId} until status is ready or failed.
{
"code": 1000,
"data": {
"id": "img_44160",
"taskId": 44160,
"type": "image",
"model": "gpt-image-1.5",
"status": "processing"
}
}Query the task and retrieve results
Replace 44160 with data.taskId from the accepted response, using a key belonging to the same user. pending and processing are non-terminal; ready and failed are terminal. On ready, read images (images) or videoUrl (videos); on failed, read errorMessage. The example stops after 60 queries. If it times out, save taskId and query again later instead of creating a duplicate task. Example result URLs are placeholders.
curl 'https://aihub-admin.aimix.pro/api-platform/v1/tasks/44160' \
-H "Authorization: Bearer $PIXMIND_API_KEY"// Continue after the request example above.
const taskId = task.data?.taskId;
if (!Number.isInteger(taskId)) throw new Error("Missing numeric taskId");
async function waitForTask(taskId) {
for (let attempt = 0; attempt < 60; attempt++) {
await new Promise(resolve => setTimeout(resolve, Math.min(2000 * 1.5 ** attempt, 10000)));
const response = await fetch(`https://aihub-admin.aimix.pro/api-platform/v1/tasks/${taskId}`, {
headers: { Authorization: `Bearer ${apiKey}` },
signal: AbortSignal.timeout(30_000)
});
const result = await response.json();
if (!response.ok || result.code !== 1000) {
throw new Error(result.message ?? `HTTP ${response.status}`);
}
const data = result.data;
if (data.status === "ready") return data;
if (data.status === "failed") {
throw new Error(data.errorMessage ?? "Generation failed");
}
if (!["pending", "processing"].includes(data.status)) {
throw new Error(`Unexpected task status: ${data.status}`);
}
}
throw new Error(`Polling timed out; save taskId ${taskId} to query again later`);
}
const result = await waitForTask(taskId);
console.log(result.images);{
"code": 1000,
"data": {
"taskId": 44160,
"type": "image",
"model": "gpt-image-1.5",
"status": "ready",
"progress": 100,
"images": [
"https://example.com/result.png"
]
}
}