curl --request POST \
--url https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"aspect_ratio": "1:1",
"num_images": 1,
"output_format": "png",
"quality": "medium",
"reference_images": [
"<string>"
],
"resolution": "1K"
}
'import requests
url = "https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare"
payload = {
"prompt": "<string>",
"aspect_ratio": "1:1",
"num_images": 1,
"output_format": "png",
"quality": "medium",
"reference_images": ["<string>"],
"resolution": "1K"
}
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({
prompt: '<string>',
aspect_ratio: '1:1',
num_images: 1,
output_format: 'png',
quality: 'medium',
reference_images: ['<string>'],
resolution: '1K'
})
};
fetch('https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare', 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.budgetpixel.com/v1/images/gpt-image-2.5-flare",
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([
'prompt' => '<string>',
'aspect_ratio' => '1:1',
'num_images' => 1,
'output_format' => 'png',
'quality' => 'medium',
'reference_images' => [
'<string>'
],
'resolution' => '1K'
]),
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.budgetpixel.com/v1/images/gpt-image-2.5-flare"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\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.budgetpixel.com/v1/images/gpt-image-2.5-flare")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare")
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 \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\n}"
response = http.request(request)
puts response.read_body{
"id": "img_a1b2c3d4e5f6",
"message": "<string>",
"model": "<string>",
"status": "pending"
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Generate image with GPT Image 2.5 Flare
OpenAI GPT Image 2.5 Flare — the fast, everyday GPT Image model: high-quality generation with natural text rendering and reliable edits at lower latency than Sunburst. Text-to-image and image editing with up to 9 reference images, 1K/2K/4K output and five quality tiers. Billing: per output image, quality × resolution — at 1K: low 30, medium 40, high 80, xhigh 130, max 250 credits; 2K doubles and 4K triples those. Reference images: the first is free, each additional one adds 5 credits. Default quality medium (40 credits at 1K).
Asynchronous. Returns a job id (the image is not in this response). Poll GET /v1/images/{id} until status is succeeded — the generated image URLs are in that response’s images array (each { url, position }).
Examples, sample output and pricing: GPT Image 2.5 Flare
curl --request POST \
--url https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"aspect_ratio": "1:1",
"num_images": 1,
"output_format": "png",
"quality": "medium",
"reference_images": [
"<string>"
],
"resolution": "1K"
}
'import requests
url = "https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare"
payload = {
"prompt": "<string>",
"aspect_ratio": "1:1",
"num_images": 1,
"output_format": "png",
"quality": "medium",
"reference_images": ["<string>"],
"resolution": "1K"
}
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({
prompt: '<string>',
aspect_ratio: '1:1',
num_images: 1,
output_format: 'png',
quality: 'medium',
reference_images: ['<string>'],
resolution: '1K'
})
};
fetch('https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare', 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.budgetpixel.com/v1/images/gpt-image-2.5-flare",
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([
'prompt' => '<string>',
'aspect_ratio' => '1:1',
'num_images' => 1,
'output_format' => 'png',
'quality' => 'medium',
'reference_images' => [
'<string>'
],
'resolution' => '1K'
]),
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.budgetpixel.com/v1/images/gpt-image-2.5-flare"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\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.budgetpixel.com/v1/images/gpt-image-2.5-flare")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/images/gpt-image-2.5-flare")
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 \"prompt\": \"<string>\",\n \"aspect_ratio\": \"1:1\",\n \"num_images\": 1,\n \"output_format\": \"png\",\n \"quality\": \"medium\",\n \"reference_images\": [\n \"<string>\"\n ],\n \"resolution\": \"1K\"\n}"
response = http.request(request)
puts response.read_body{
"id": "img_a1b2c3d4e5f6",
"message": "<string>",
"model": "<string>",
"status": "pending"
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Authorizations
API key as a bearer token: Authorization: Bearer bpx_live_xxx
Body
Text description of the image to generate.
Output aspect ratio.
1:1, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21, 2:1, 1:2 Number of images to generate.
1 <= x <= 4Output image format.
png, jpeg Rendering quality. Per image at 1K: low 30, medium 40, high 80, xhigh 130, max 250 credits (scaled by resolution).
low, medium, high, xhigh, max Optional reference images (up to 9) for image editing and composition. Each item is a public image URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. Omit for text-to-image. The first reference is free; each additional one adds 5 credits per generated image.
9Output resolution tier. 2K bills 2× and 4K 3× the 1K price of the chosen quality.
1K, 2K, 4K