GPT Image 2.5 Ext Sunburst
curl --request POST \
--url https://api.freemodel.app/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"version": "<string>",
"resolution": "<string>",
"size": "<string>",
"n": 123,
"image_urls": [
"<string>"
]
}
'import requests
url = "https://api.freemodel.app/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"version": "<string>",
"resolution": "<string>",
"size": "<string>",
"n": 123,
"image_urls": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
version: '<string>',
resolution: '<string>',
size: '<string>',
n: 123,
image_urls: ['<string>']
})
};
fetch('https://api.freemodel.app/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.freemodel.app/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'version' => '<string>',
'resolution' => '<string>',
'size' => '<string>',
'n' => 123,
'image_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.freemodel.app/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.freemodel.app/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.freemodel.app/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyImage Series
GPT Image 2.5 Ext Sunburst
Select Sunburst GPT Image 2.5 Ext with gpt-image-2.5-ext-sunburst.
POST
/
v1
/
images
/
generations
GPT Image 2.5 Ext Sunburst
curl --request POST \
--url https://api.freemodel.app/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"version": "<string>",
"resolution": "<string>",
"size": "<string>",
"n": 123,
"image_urls": [
"<string>"
]
}
'import requests
url = "https://api.freemodel.app/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"version": "<string>",
"resolution": "<string>",
"size": "<string>",
"n": 123,
"image_urls": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
version: '<string>',
resolution: '<string>',
size: '<string>',
n: 123,
image_urls: ['<string>']
})
};
fetch('https://api.freemodel.app/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.freemodel.app/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'version' => '<string>',
'resolution' => '<string>',
'size' => '<string>',
'n' => 123,
'image_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.freemodel.app/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.freemodel.app/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.freemodel.app/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"version\": \"<string>\",\n \"resolution\": \"<string>\",\n \"size\": \"<string>\",\n \"n\": 123,\n \"image_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodygpt-image-2.5-ext-sunburst is the Sunburst alias for GPT Image 2.5 Ext. It maps to the same Ext contract and prices as gpt-image-2.5-ext. Use this ID when a client can send only model and not version.
| Property | Value |
|---|---|
| Model ID | gpt-image-2.5-ext-sunburst |
| Version | Sunburst (version must be sunburst if sent) |
| Resolutions | 1K, 2K, 4K (default 1K) |
| Size | auto (default) or a supported ratio |
| Count | integer n from 1 to 4 (default 1) |
| Price | Same as Ext: $0.0085 / $0.014 / $0.021 per delivered 1K / 2K / 4K image |
version: "flare" with this model ID. Billing, references, async headers, and response shapes are identical to the canonical Ext page.
string
required
Set to
gpt-image-2.5-ext-sunburst.string
required
Describe the subject, composition, lighting, and style.
string
default:"sunburst"
Omit this field or set it to
sunburst.string
default:"1K"
Use
1K, 2K, or 4K.string
default:"auto"
Use
auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, or 21:9.integer
default:"1"
Request 1 to 4 images.
string[]
Optional. Up to 16 public image URLs or PNG/JPEG/WebP Data URLs. References do not change the price.
Request
curl https://api.freemodel.app/v1/images/generations \
-H "Authorization: Bearer $FREEMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-ext-sunburst",
"prompt": "Preserve the product and replace the background with warm linen",
"resolution": "2K",
"size": "4:5",
"n": 1,
"image_urls": ["https://example.com/product.png"]
}'
data[].url. Send Prefer: respond-async and poll GET /v1/tasks/{id} when you want a gateway task immediately. See GPT Image 2.5 Ext for the full parameter and billing rules.
Open the model playground
Run Ext from the FreeModel model page. Choose Sunburst there or send this model ID.