curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Ancient castle under the starry sky, cinematic lighting, hyper-realistic style",
"size": "16:9",
"resolution": "2k",
"quality": "high",
"n": 1
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Snowy mountain sunrise panorama, extreme detail",
"size": "16:9",
"resolution": "4k",
"quality": "high",
"output_format": "jpeg",
"output_compression": 90
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Merge these two reference images into an illustrated poster, preserving the subject outlines",
"size": "1:1",
"quality": "high",
"image_urls": [
"https://example.com/input-a.png",
"https://example.com/input-b.png"
]
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Replace the background with a desert sunset",
"size": "1:1",
"quality": "medium",
"image_urls": ["https://example.com/photo.png"],
"mask_url": "https://example.com/mask.png"
}'
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-image-2-official',
prompt: 'Ancient castle under the starry sky, cinematic lighting, hyper-realistic style',
size: '16:9',
resolution: '2k',
quality: 'high',
n: 1
})
});
const task = await response.json();
console.log(task.id, task.status);
{
"id": "tsk_img_01KPTXXXXXXXXXXXXXXX",
"object": "generation.task",
"model": "gpt-image-2-official",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
GPT-Image-2
GPT-Image-2 Official Channel Image Generation
Generate images with the official OpenAI gpt-image-2-official model — text-to-image, image-to-image, and inpainting (mask) in one API, with 1K / 2K / 4K resolution tiers
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Ancient castle under the starry sky, cinematic lighting, hyper-realistic style",
"size": "16:9",
"resolution": "2k",
"quality": "high",
"n": 1
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Snowy mountain sunrise panorama, extreme detail",
"size": "16:9",
"resolution": "4k",
"quality": "high",
"output_format": "jpeg",
"output_compression": 90
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Merge these two reference images into an illustrated poster, preserving the subject outlines",
"size": "1:1",
"quality": "high",
"image_urls": [
"https://example.com/input-a.png",
"https://example.com/input-b.png"
]
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Replace the background with a desert sunset",
"size": "1:1",
"quality": "medium",
"image_urls": ["https://example.com/photo.png"],
"mask_url": "https://example.com/mask.png"
}'
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-image-2-official',
prompt: 'Ancient castle under the starry sky, cinematic lighting, hyper-realistic style',
size: '16:9',
resolution: '2k',
quality: 'high',
n: 1
})
});
const task = await response.json();
console.log(task.id, task.status);
{
"id": "tsk_img_01KPTXXXXXXXXXXXXXXX",
"object": "generation.task",
"model": "gpt-image-2-official",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
Note for users in mainland China: Please use
https://toapis.cn as the API endpoint (Base URL). Replace https://toapis.com with https://toapis.cn in the examples in this document.- Official OpenAI
gpt-image-2-officialmodel - Async processing — returns a task ID for subsequent polling
- Supports text-to-image, multi-reference image-to-image, and mask-based inpainting
- 13 aspect ratios with 1K / 2K / 4K resolution tiers
- Up to 4 images per request, up to 16 reference images
Authorizations
string
required
All endpoints require Bearer Token authenticationGet your API Key from the API Key Management PageAdd to request header:
Authorization: Bearer YOUR_API_KEY
Body
string
default:"gpt-image-2-official"
required
Image generation model nameUse
gpt-image-2-officialstring
required
Text prompt describing the image to generateSupports English and Chinese; detailed descriptions of scene, style, and composition are recommended
string
default:"1:1"
Aspect ratioPreset values, or pass
auto to let the upstream provider choose:1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 5:4 · 4:5 · 16:9 · 9:16 · 2:1 · 1:2 · 21:9 · 9:21You may also pass any ratio in width:height format, such as 1:3 or 7:4, subject to the custom-size limits below.With auto, the upstream provider determines the final aspect ratio and pixel dimensions, so a fixed output is not guaranteed.string
default:"1k"
Resolution tier
1k— 1024-base, fast and cost-effective (default)2k— 2048-base, suitable for posters and high-definition needs4k— 3840-base;highquality can take more than 120 seconds
Size Reference Table
| size | 1K | 2K | 4K |
|---|---|---|---|
1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
3:2 | 1536x1024 | 2048x1360 | 3520x2336 |
2:3 | 1024x1536 | 1360x2048 | 2336x3520 |
4:3 | 1024x768 | 2048x1536 | 3312x2480 |
3:4 | 768x1024 | 1536x2048 | 2480x3312 |
5:4 | 1280x1024 | 2560x2048 | 3216x2576 |
4:5 | 1024x1280 | 2048x2560 | 2576x3216 |
16:9 | 1536x864 | 2048x1152 | 3840x2160 |
9:16 | 864x1536 | 1152x2048 | 2160x3840 |
2:1 | 2048x1024 | 2688x1344 | 3840x1920 |
1:2 | 1024x2048 | 1344x2688 | 1920x3840 |
21:9 | 2016x864 | 2688x1152 | 3840x1648 |
9:21 | 864x2016 | 1152x2688 | 1648x3840 |
Custom Resolutions
In addition to the presets above, pass any ratio inwidth:height format through size. The service calculates pixel dimensions from the selected resolution tier. The resulting dimensions must meet all of these limits:
- Both sides must be multiples of 16 pixels
- The long edge can be at most 3,840 pixels (4K)
- The aspect ratio can be at most 3:1
- Total pixel count must be between 655,360 and 8,294,400
size: "1:3"withresolution: "2k"→1024x3072size: "7:4"withresolution: "1k"→1344x768
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "A simple red circle on a white background",
"size": "7:4",
"resolution": "1k",
"quality": "medium",
"n": 1
}'
string
default:"high"
Image quality
low— fast and economical, suitable for drafts/previewsmedium— balanced speed and qualityhigh— maximum detail, default value (4K + high can take 120s+)
string
default:"auto"
Background style of the generated image
auto— let the model decide (default)transparent— transparent backgroundopaque— opaque background
Transparent backgrounds are best paired with PNG output.
string
default:"png"
Output format
png— defaultjpeg— smaller file size (supports compression)
Azure OpenAI does not support
webp format.integer
default:100
JPEG compression level, range
0–100 (0 = no compression, 100 = maximum compression, default 100)Only applies when output_format is "jpeg"integer
default:1
Number of images to generateRange:
1 ~ 10string[]
Reference image URL array for image-to-image generation
- Maximum 16 images, must be publicly accessible stable URLs
- Use the Upload Image API to upload local files and get URLs
string
Mask image URL for inpaintingMust be used together with
image_urls. The mask must match the dimensions of the first reference image and include an Alpha channel (transparent areas indicate regions to be repainted)Response
string
Unique task identifier for status queries
string
Object type, always
generation.taskstring
Model name used
string
Task status
queued— waiting to be processedin_progress— processingcompleted— successfully completedfailed— failed
integer
Task progress percentage (0-100)
integer
Task creation timestamp (Unix timestamp)
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Ancient castle under the starry sky, cinematic lighting, hyper-realistic style",
"size": "16:9",
"resolution": "2k",
"quality": "high",
"n": 1
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Snowy mountain sunrise panorama, extreme detail",
"size": "16:9",
"resolution": "4k",
"quality": "high",
"output_format": "jpeg",
"output_compression": 90
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Merge these two reference images into an illustrated poster, preserving the subject outlines",
"size": "1:1",
"quality": "high",
"image_urls": [
"https://example.com/input-a.png",
"https://example.com/input-b.png"
]
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2-official",
"prompt": "Replace the background with a desert sunset",
"size": "1:1",
"quality": "medium",
"image_urls": ["https://example.com/photo.png"],
"mask_url": "https://example.com/mask.png"
}'
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-image-2-official',
prompt: 'Ancient castle under the starry sky, cinematic lighting, hyper-realistic style',
size: '16:9',
resolution: '2k',
quality: 'high',
n: 1
})
});
const task = await response.json();
console.log(task.id, task.status);
{
"id": "tsk_img_01KPTXXXXXXXXXXXXXXX",
"object": "generation.task",
"model": "gpt-image-2-official",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}