GPT-Image-2.6 · 텍스트-이미지
curl --request POST \
--url https://api.gravitex.ai/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.gravitex.ai/v1/images/generations"
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'}
};
fetch('https://api.gravitex.ai/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.gravitex.ai/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_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/images/generations"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
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.gravitex.ai/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_bodyimage-2.6
GPT-Image-2.6 · 텍스트-이미지
GPT-Image-2.6 Flare / Sunburst · POST /v1/images/generations
POST
/
v1
/
images
/
generations
GPT-Image-2.6 · 텍스트-이미지
curl --request POST \
--url https://api.gravitex.ai/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.gravitex.ai/v1/images/generations"
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'}
};
fetch('https://api.gravitex.ai/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.gravitex.ai/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_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/images/generations"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
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.gravitex.ai/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_body소개
GPT-Image-2.6은 빠른 반복 작업을 위한 Flare와 정밀한 시각 작업을 위한 Sunburst로 구성된 OpenAI 이미지 모델 시리즈입니다.POST /v1/images/generations를 사용해 텍스트 설명으로 포스터, 상품 이미지, 브랜드 일러스트, 아이콘 및 인포그래픽을 생성할 수 있습니다.
두 모델은 PNG, JPEG, WebP 정적 이미지뿐 아니라 GIF 애니메이션과 SVG 벡터 출력도 지원합니다. 사용 가능 여부는 프로젝트 권한과 채널에 따라 다릅니다. GIF는 반복 동작에, SVG는 크기 조절이나 경로·색상 편집이 필요한 아이콘 및 일러스트에 적합합니다.
quality는 렌더링 품질을, 별개의 complexity는 렌더링 전 계획 수준을 제어합니다. 크기와 배경을 설정한 뒤 텍스트, 레이아웃 및 세부 표현을 확인하며 조정하세요. 응답 속도가 우선이면 Flare, 복잡한 구성과 세부 표현이 중요하면 Sunburst를 선택할 수 있습니다.
모델 선택
| 모델 ID | 권장 용도 |
|---|---|
gpt-image-2.6-flare | 빠른 반복 작업과 대화형 생성 |
gpt-image-2.6-sunburst | 세부 묘사 및 복잡한 레이아웃 |
인증
string
필수
Bearer $GRAVITEX_API_KEY
string
필수
application/json
요청 매개변수
| 매개변수 | 유형 | 설명 |
|---|---|---|
model | string | 필수: gpt-image-2.6-flare 또는 gpt-image-2.6-sunburst |
prompt | string | 필수 생성 이미지 설명, 최대 32,000자 |
quality | string | auto / low / medium / high / xhigh / max; 기본 auto |
complexity | string | low / medium / high; 기본 high. quality와 별개인 렌더링 전 계획 수준 |
size | string | auto 또는 WxH, 너비와 높이는 16의 배수. 모델 크기와 픽셀 제한 적용 |
n | integer | 1–10; SVG는 1 |
background | string | auto / opaque / transparent; 투명 래스터 출력은 png 또는 webp |
output_format | string | png / jpeg / webp / gif; 생성 엔드포인트는 svg도 지원 |
output_compression | integer | jpeg/webp만 0–100; GIF/SVG 미지원 |
moderation | string | auto / low; 기본 auto |
safety_identifier | string | 안정적인 해시 사용자 식별자, 최대 128자; user 대체 |
stream | boolean | 기본 false. true이면 단일 JSON 대신 SSE 이벤트를 읽습니다. GIF 미지원; SVG 미지원 |
partial_images | integer | 래스터 스트리밍 전용, 0–3, 기본 0. 요청한 미리보기 수보다 적게 반환될 수 있습니다. GIF 미지원; SVG 미지원 |
frame_count | integer | GIF 전용: 2–16, 기본 9 |
frame_duration_ms | integer | GIF 전용: 기본 200; 가이드 권장 20–2000ms, 10ms 단위 반올림 |
svg | object | SVG 생성 시 필수 객체: 작성 model 및 선택 reasoning |
요청 예시
예시는 터미널 환경 변수 GRAVITEX_API_KEY에서 플랫폼 토큰을 읽습니다. 업로드 시 curl -F가 Content-Type과 boundary를 자동 생성하므로 multipart/form-data 헤더를 직접 고정하지 마세요.기본 생성
curl https://api.gravitex.ai/v1/images/generations \
-H "Authorization: Bearer $GRAVITEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-flare",
"prompt": "A clean botanical poster with precise typography",
"quality": "medium",
"complexity": "high",
"size": "1024x1024"
}'
GIF 애니메이션
curl https://api.gravitex.ai/v1/images/generations \
-H "Authorization: Bearer $GRAVITEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-flare",
"prompt": "A fox mascot waving, seamless looping animation",
"output_format": "gif",
"frame_count": 9,
"frame_duration_ms": 200,
"size": "auto"
}'
SVG 출력
이 채널에서 SVG 생성 시 svg.model이 필수이며 생략하면 missing_required_parameter를 반환합니다. gpt-6.1-sol과 reasoning.effort=low는 2026-11-09 테스트에 성공했습니다. 다른 작성 모델은 채널 지원 여부를 확인하세요.
SVG 작성 모델 지정
예시는 2026-11-09 이 채널에서 SVG 작성에 성공한 gpt-6.1-sol을 사용합니다. 다른 채널이나 프로젝트에서는 사용 가능한 작성 모델로 바꾸세요.curl https://api.gravitex.ai/v1/images/generations \
-H "Authorization: Bearer $GRAVITEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-flare",
"prompt": "A simple botanical logo with editable paths",
"output_format": "svg",
"n": 1,
"quality": "medium",
"complexity": "high",
"svg": {
"model": "gpt-6.1-sol",
"reasoning": {
"effort": "low"
}
}
}'
필드 설명
| 필드 | 역할 |
|---|---|
model | 참조 이미지를 렌더링하는 이미지 모델. 이 페이지의 2.6 모델 ID 사용 |
prompt | 최종 SVG의 내용, 텍스트, 레이아웃 및 스타일 |
output_format | svg로 설정 |
n | SVG는 1로 고정 |
quality | 참조 이미지의 렌더링 품질. 예시는 medium |
complexity | 참조 이미지 생성 전 이미지 모델의 계획 수준. 예시는 high |
svg.model | SVG 작성 모델. SVG 생성 시 필수 |
svg.reasoning.effort | complexity와 별개인 작성 모델의 추론 수준. 선택한 모델이 지원할 때만 low 사용. reasoning을 생략하면 기본값 사용 |
2.6 이미지 모델을 SVG 작성 모델 대신 지정하지 마세요. 사용 가능한 작성 모델과 effort 값은 프로젝트와 선택한 모델에 따라 다릅니다.
스트리밍
curl --no-buffer https://api.gravitex.ai/v1/images/generations \
-H "Authorization: Bearer $GRAVITEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-flare",
"prompt": "A simple green botanical illustration",
"quality": "medium",
"size": "1024x1024",
"stream": true,
"partial_images": 1
}'
제한 및 참고 사항
GIF size는 프레임별 크기입니다. 프레임 수, n 및 모델 픽셀 예산을 함께 고려하며 auto를 우선 사용하세요. GIF는 미리보기 접근 권한이 필요합니다. mask, stream, partial_images, 사용자 지정 output_compression은 지원하지 않습니다. 프레임 수, 크기와 n은 요청 픽셀 예산을 공유하므로 초과 시 줄이거나 size=auto를 사용하세요. SVG는 생성 엔드포인트에서만 사용하며 프로젝트 접근 권한이 필요합니다. n=1로 설정하고 stream, partial_images, output_compression, prompt_rewriter를 생략하세요. 이 채널은 svg.model이 필수입니다. complexity는 별도 수수료가 없지만 지연과 결과에 영향을 줄 수 있습니다. 낮은 complexity가 고정 응답 시간이나 이미지별 비용을 보장하지는 않습니다.응답 예시
다음은 비스트리밍 응답 구조 예시입니다. 이미지 데이터와 토큰 수는 실제 생성 결과가 아닙니다. b64_json을 디코딩하여 해당 형식으로 저장하고 Base64 텍스트를 이미지 파일로 직접 저장하지 마세요.{
"created": 1794268800,
"data": [
{
"b64_json": "<BASE64_IMAGE_DATA>"
}
],
"usage": {
"input_tokens": 100,
"output_tokens": 824,
"total_tokens": 924
}
}
응답 및 과금
비스트리밍 예시는 b64_json으로 이미지를 반환합니다. response_format=url로 이미지 링크를 기대하지 마세요. 같은 토큰 단가가 이미지당 같은 비용을 뜻하지 않으므로 실제 usage를 확인하세요. data[].b64_json을 디코딩하여 선택한 형식으로 저장합니다. usage는 토큰 사용량입니다. SVG는 별도 과금되는 작성 모델의 svg_usage도 반환할 수 있습니다. 아래는 OpenAI 표준 가격이며 GravitexAI 요금은 콘솔 기준입니다.| 유형 | USD / 1M tokens |
|---|---|
| 텍스트 입력 | $5.00 |
| 캐시 텍스트 입력 | $1.25 |
| 이미지 입력 | $8.00 |
| 캐시 이미지 입력 | $2.00 |
| 이미지 출력 | $30.00 |
