GPT Image 2.5를 처음 도입한다면 gpt-image-2.5-flare로 생성 작업을 시작하고, 수정 정확도가 중요한 작업에서 gpt-image-2.5-sunburst를 비교하는 것이 합리적입니다. 두 모델 모두 이미지 생성과 편집을 지원합니다. Flare가 생성 전용이고 Sunburst가 편집 전용인 것은 아닙니다.
OpenAI는 2026년 9월 8일 두 모델을 공개했습니다. Flare는 일상적인 이미지 제작과 빠른 응답, Sunburst는 정밀한 편집에 초점을 둡니다. 아래 요금은 2026년 9월 9일 확인한 OpenAI 직접 API의 표준 달러 요금입니다. 코드와 계산법은 공식 문서를 바탕으로 작성했으며, 유료 API를 호출한 실측 결과는 아닙니다. 공식 변경 내역
Flare와 Sunburst, 어떤 작업에 쓰면 좋을까
상품 사진의 배경을 여러 버전으로 만들거나 콘텐츠용 시안을 빠르게 반복하는 서비스라면 Flare부터 검토할 수 있습니다. 이미 고른 이미지에서 특정 부분을 수정하고, 참고 이미지의 특징을 유지하는 일이 더 중요하다면 Sunburst도 같은 입력으로 비교해 보세요. 이 구분은 공식 제품 설명에 따른 출발점이며 모든 프롬프트에서의 우열을 의미하지 않습니다.
| 비교 항목 | GPT Image 2.5 Flare | GPT Image 2.5 Sunburst | 기존 GPT Image 2 |
|---|---|---|---|
| API 모델 ID | gpt-image-2.5-flare | gpt-image-2.5-sunburst | gpt-image-2 |
| 공식적으로 강조하는 용도 | 대부분의 앱과 일상적인 이미지 제작 | 정밀 편집과 참고 이미지 충실도 | 기존 이미지 생성·편집 작업의 비교 기준 |
| 생성·편집 지원 | 모두 지원 | 모두 지원 | 모두 지원 |
| 속도에 관한 설명 | OpenAI는 GPT Image 2 대비 지연 시간 50% 감소를 발표 | 더 정밀한 작업에 초점을 두며 생성 시간이 더 길 수 있음 | Flare 속도 발표의 비교 대상 |
quality 옵션 | low, medium, high, xhigh, max, auto | low, medium, high, xhigh, max, auto | low, medium, high, auto |
| 표준 token 단가 | 아래 표와 동일 | 아래 표와 동일 | 아래 표와 동일 |
지연 시간 50% 감소는 OpenAI의 발표 수치입니다. 여러분의 서비스에서 같은 개선이 나온다는 보장은 없으며, 이미지 크기와 품질, 입력 이미지, 서버 상황에 따라 달라질 수 있습니다. 기존 GPT Image 2를 운영 중이라면 대표 요청을 고정하고 채택 가능한 결과 비율, 실제 응답 시간, 채택한 이미지 한 장의 총비용을 함께 비교하는 편이 좋습니다. 공식 출시 소개, Flare 모델 문서, Sunburst 모델 문서
참고 이미지를 더 잘 유지한다는 설명도 모든 픽셀이나 인물의 특징을 완벽하게 고정한다는 뜻은 아닙니다. 로고, 작은 글자, 복잡한 배치가 있는 결과물은 실제 사용 전에 확인해야 합니다. 다른 회사 모델까지 선택 범위를 넓히고 있다면 Nano Banana Pro와 GPT Image 2 비교에서 별도의 선택 기준을 볼 수 있습니다.
API 가격은 얼마인가: 단가와 장당 비용을 구분하기
두 GPT Image 2.5 모델과 기존 GPT Image 2의 표준 API 단가는 아래와 같습니다. 모두 100만 token당 미국 달러 기준이며, 이미지 한 장의 정액 가격표가 아닙니다. OpenAI 공식 가격표
| 과금 항목 | 100만 token당 요금 |
|---|---|
| 텍스트 입력 | $5.00 |
| 캐시된 텍스트 입력 | $1.25 |
| 이미지 입력 | $8.00 |
| 캐시된 이미지 입력 | $2.00 |
| 이미지 출력 | $30.00 |
GPT Image 2.5에는 과금되는 텍스트 출력 항목이 없습니다. 다만 Responses API로 별도의 언어 모델과 이미지 생성 도구를 함께 사용하면 그 언어 모델의 사용료는 추가됩니다. ChatGPT 구독료와 API 사용료도 별도이므로, ChatGPT에서 이미지 생성이 된다는 이유로 API 잔액이나 접근 권한이 있다고 판단하면 안 됩니다.

같은 단가인데 왜 한 장의 가격은 달라질까
실제 요청에는 프롬프트의 텍스트 token, 편집에 넣은 이미지 token, 출력 이미지 token이 들어갑니다. 품질과 크기, 입력 구성에 따라 사용량이 달라지므로 모델들의 단가가 같아도 청구 금액은 달라질 수 있습니다. 여러 번 다시 만들어 최종 한 장을 고른다면 그 과정의 요청 비용도 포함해야 합니다.
다음은 비용 계산법을 설명하기 위한 가상의 사용량입니다. 특정 해상도나 품질에서 실제로 이만큼 소비된다는 의미는 아닙니다.
| 서로 겹치지 않는 사용량 항목 | 가정한 token 수 | 비용 |
|---|---|---|
| 캐시되지 않은 텍스트 입력 | 800 | $0.00400 |
| 캐시된 텍스트 입력 | 200 | $0.00025 |
| 캐시되지 않은 이미지 입력 | 1,500 | $0.01200 |
| 캐시된 이미지 입력 | 500 | $0.00100 |
| 이미지 출력 | 4,000 | $0.12000 |
| 합계 | — | $0.13725 |
이 예시에서 텍스트 입력 총량은 1,000 token, 이미지 입력 총량은 2,000 token입니다. 캐시 사용량이 이 총량의 일부로 표시된다면 먼저 캐시분을 빼야 합니다. 총 입력에 일반 요금을 전부 적용한 다음 캐시 비용을 더하면 같은 입력을 두 번 과금한 계산이 됩니다.
text비용(USD) = ( 캐시되지 않은 텍스트 입력 × 5 + 캐시된 텍스트 입력 × 1.25 + 캐시되지 않은 이미지 입력 × 8 + 캐시된 이미지 입력 × 2 + 이미지 출력 × 30 ) / 1,000,000
견적을 잡을 때는 공식 문서의 계산기에서 정확한 2.5 모델을 선택하세요. GPT Image 2용 계산 결과나 기존 장당 가격표를 그대로 옮기면 안 됩니다. 최종 판단에는 실제 응답의 사용량과 계정 청구 내역을 사용하고, 공개되지 않은 캐시 세부 항목은 임의로 추정하지 않는 것이 좋습니다. 비용과 지연 시간 안내
Python으로 생성하고, 저장한 이미지를 다시 편집하기

이미지 작업만 필요하다면 Images API가 직접적인 출발점입니다. 생성 요청의 model에 이미지 모델 ID를 넣고, 응답의 data[0].b64_json을 디코딩해 파일로 저장합니다. HTTP 요청이 성공했다는 사실과 사용할 수 있는 이미지 파일을 얻었다는 사실을 구분해야 합니다. 공식 이미지 생성 가이드
아래 예제는 OpenAI Python SDK를 사용합니다. 먼저 python -m pip install --upgrade openai로 SDK를 설치하고, 실행 환경에 OPENAI_API_KEY를 설정하세요. 키는 소스 코드나 브라우저에 전달하는 코드에 넣지 않습니다. 조직 인증이 필요할 수 있으며, 실제 사용 가능 여부는 해당 계정과 프로젝트에서 확인해야 합니다.
다음 코드를 image_workflow.py로 저장한 뒤 python image_workflow.py로 실행하면, Flare로 제품 이미지를 만들고 그 파일을 Sunburst의 편집 입력으로 사용합니다. 실행 시 생성과 편집, 두 번의 유료 요청이 발생합니다. 응답의 사용량은 별도 JSON 파일에 보관합니다.
pythonimport base64 import json from pathlib import Path from openai import OpenAI client = OpenAI(timeout=180.0, max_retries=0) out_dir = Path("image_results") out_dir.mkdir(exist_ok=True) def save_result(response, name): if not response.data or not response.data[0].b64_json: raise RuntimeError("응답에 저장할 이미지 데이터가 없습니다.") raw = base64.b64decode(response.data[0].b64_json, validate=True) if not raw.startswith(b"\x89PNG\r\n\x1a\n"): raise RuntimeError("요청한 PNG 형식의 응답인지 확인하세요.") image_path = out_dir / f"{name}.png" image_path.write_bytes(raw) usage = getattr(response, "usage", None) usage_data = usage.model_dump() if usage is not None else None metadata = { "request_id": getattr(response, "_request_id", None), "usage": usage_data, "bytes_saved": len(raw), } (out_dir / f"{name}.json").write_text( json.dumps(metadata, ensure_ascii=False, indent=2), encoding="utf-8", ) print(f"저장 완료: {image_path.resolve()} ({len(raw)} bytes)") return image_path generated = client.images.generate( model="gpt-image-2.5-flare", prompt=( "아이보리색 세라믹 머그컵 하나를 촬영한 상품 사진. " "밝은 회색 배경, 부드러운 자연광, 정면보다 조금 위에서 본 구도. " "컵에는 글자나 로고를 넣지 마세요." ), size="1536x1024", quality="medium", output_format="png", ) original_path = save_result(generated, "mug_original") with original_path.open("rb") as image_file: edited = client.images.edit( model="gpt-image-2.5-sunburst", image=image_file, prompt=( "머그컵의 모양과 색상, 손잡이와 촬영 구도는 유지하세요. " "배경만 차분한 연녹색 스튜디오 배경으로 바꿔 주세요." ), size="1536x1024", quality="high", output_format="png", ) save_result(edited, "mug_edited")
실행 후 image_results/mug_original.png와 image_results/mug_edited.png를 직접 열어보세요. 예제의 PNG 헤더 검사는 잘못된 데이터를 이미지 확장자로 저장하는 일을 줄여 주지만, 파일 전체의 정상 디코딩이나 편집 품질을 보장하는 검사는 아닙니다. 편집 결과에서는 배경 변경과 함께 컵의 형태가 어느 정도 유지됐는지 확인할 수 있습니다.
SDK가 반환한 usage를 그대로 기록하는 이유는 응답 형식에 없는 세부 값을 임의로 만들어 계산하지 않기 위해서입니다. 요청 시각, 모델, 크기, 품질도 함께 기록하면 설정별 비용을 비교하기 쉽습니다. 예제의 180초 timeout은 클라이언트 설정일 뿐 처리 시간 보장이 아닙니다.
Responses API를 쓰는 경우 모델을 어디에 넣을까
대화나 여러 도구를 사용하는 흐름 안에서 이미지를 생성한다면 Responses API를 선택할 수 있습니다. 이때 최상위 model에는 지원되는 주 모델을, 이미지 모델은 image_generation 도구 설정에 넣습니다. 아래 코드는 앞 예제의 client와 out_dir를 그대로 사용하는 별도 호출 예입니다.
pythonresponse = client.responses.create( model="gpt-6-astra", input="숲속 작은 서점의 외관을 따뜻한 수채화로 그려 주세요.", tools=[{ "type": "image_generation", "model": "gpt-image-2.5-flare", }], ) images = [ item.result for item in response.output if item.type == "image_generation_call" ] if not images: raise RuntimeError("응답에 이미지 생성 결과가 없습니다.") for index, encoded in enumerate(images, start=1): (out_dir / f"bookshop_{index}.png").write_bytes( base64.b64decode(encoded, validate=True) )
Images API의 data[0].b64_json과 Responses API의 image_generation_call.result는 결과를 꺼내는 위치가 다릅니다. 두 형식을 섞어 처리하면 요청이 성공해도 파일을 저장하지 못할 수 있습니다. Responses 예제는 기본 PNG 출력을 사용하며, 주 모델의 token 비용은 앞서 제시한 이미지 비용에 추가됩니다. 두 API의 사용 방식
품질과 해상도는 따로 정해야 한다
quality="max"는 품질 설정입니다. 자동으로 가장 큰 이미지를 받는 옵션이 아니므로 출력 크기는 size로 별도 지정합니다. 처음 비교할 때는 1536x1024처럼 동일한 크기를 고정하고 품질을 바꿔 보세요. 크기와 품질을 동시에 바꾸면 비용이나 지연 시간 차이의 원인을 구분하기 어렵습니다.
두 2.5 모델의 기본 품질은 auto입니다. 문서가 권장하는 크기는 1024x1024, 1536x1024, 1024x1536이며, 사용자 지정 크기는 다음 조건을 만족해야 합니다.
- 가로와 세로가 각각 16의 배수여야 합니다.
- 가로세로 비율은 1:3부터 3:1 사이여야 합니다.
- 각 변은 최대 3,840픽셀이며, 전체 픽셀 수는 655,360부터 8,294,400 사이여야 합니다.
예를 들어 1024x576은 16:9이지만 총 589,824픽셀로 최소 픽셀 수에 못 미칩니다. 비율이 맞는다고 허용 크기가 되는 것은 아닙니다. 공식 문서는 2560x1440보다 큰 출력을 실험적 기능으로 안내하므로 큰 원본이 필요한 작업은 결과 품질과 처리 시간을 별도로 확인하세요. 출력 크기와 품질 설정
투명 배경이 필요하면 background="transparent"와 함께 output_format="png" 또는 "webp"를 사용합니다. JPEG는 투명도를 보존하지 않습니다. 출력 형식을 변경했다면 저장 파일의 확장자와 예제의 PNG 검증 코드도 그 형식에 맞게 바꿔야 합니다.
도입 전 확인할 것은 실제 결과와 사용량이다
첫 비교에서는 동일한 프롬프트, 입력 이미지, 크기, 품질을 유지하고 Flare와 Sunburst의 결과를 열어보는 것이 좋습니다. 기존 GPT Image 2를 교체하려면 기존 모델이 지원하는 품질 옵션을 공통 조건으로 사용하세요. 필요한 수정이 반영됐는지, 유지해야 할 부분이 달라졌는지, 최종 결과 한 장을 얻기까지 몇 번 요청했는지를 기록하면 선택 근거가 분명해집니다.
오류가 발생하면 상태 코드와 오류 메시지, 요청 ID부터 남기세요. 인증·접근 권한·잔액·입력 내용 문제는 같은 요청을 반복해도 해결되지 않을 수 있습니다. timeout이나 네트워크 오류가 난 요청은 서버에서 이미 처리됐을 가능성도 있으므로, 곧바로 여러 번 재전송하면 중복 작업과 추가 비용이 생길 수 있습니다. 공식 가이드는 복잡한 프롬프트에서 최대 2분이 걸릴 수 있다고 설명하지만 이는 SLA가 아닙니다. 제약 사항
빠른 시안 반복이 중요한지, 특정 부분의 수정 정확도가 중요한지 먼저 정하고 실제 사용량으로 판단하세요. Flare의 공식 속도 설명이나 Sunburst의 정밀 편집 포지셔닝은 후보를 좁히는 근거이고, 최종 선택은 여러분의 입력에서 얻은 이미지와 비용으로 확인할 수 있습니다.



