
GPT Image 2 API: 전체 가이드(Python, Node.js, Curl)
GPT Image 2 API 통합 가이드를 완료하세요. 인증, 매개변수, Python/Node.js 샘플, 이미지 편집, 배치 생성, 오류 처리, 비용 팁.
GPT Image 2를 자체 제품, 자동화 파이프라인 또는 배치 생성 워크플로에 통합하려는 경우 API가 유일한 방법입니다. 이 가이드에서는 인증, 매개변수, Python 및 Node.js에 대한 코드 샘플, 이미지 편집, 오류 처리, 비용 최적화 등 필요한 모든 것을 다룹니다.
결국에는 실제 프로덕션 트래픽을 처리하는 GPT Image 2 통합이 작동하게 됩니다.
전제 조건
시작하기 전에:
- OpenAI 개발자 계정 (platform.openai.com)
- 자금이 조달된 청구 계정(이미지 생성이 지불되고 새 계정에 평가판 크레딧이 제공될 수 있음)
- API 키 - platform.openai.com/api-keys에서 생성하세요.
- 사용하려는 SDK에 따라 Python 3.8+ 또는 Node.js 18+
프로덕션 팀을 위한 안정적인 API 액세스
팀이 직접 OpenAI 액세스가 불안정한 지역에 있거나 장애 조치, 청구 집계 및 SLA 보장을 처리하는 단일 릴레이가 필요한 경우support@gpt-image2.art에 이메일을 보내 관리형 GPT Image 2 API 키를 얻을 수도 있습니다. 계전기는 동일한 gpt-image-2 모델 이름, 아래 설명된 동일한 매개변수 및 동일한 응답 형식을 지원하므로 코드를 변경할 필요가 없습니다.
1단계: SDK 설치
Python
pip install openai pillowpillow는 선택 사항이며 반환된 이미지에 대해 사후 처리를 수행하려는 경우에만 필요합니다.
Node.js
npm install openai
# or
pnpm add openai2단계: API 키 구성
API 키를 하드 코딩하지 마십시오. 환경 변수를 사용하십시오.
.env 파일을 만듭니다.
OPENAI_API_KEY=sk-proj-your-key-here그런 다음 이를 코드에 로드합니다(Python는 python-dotenv를 사용하고, Node.js는 기본적으로 .env를 로드하거나 dotenv를 사용하여 로드합니다).
3단계: 첫 번째 이미지 생성
Python — 최소한의 작업 예
import os
from openai import OpenAI
import base64
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
result = client.images.generate(
model="gpt-image-2",
prompt="A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.",
size="1024x1024",
quality="medium",
n=1,
)
# Image is returned as base64
image_b64 = result.data[0].b64_json
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
print("Saved to output.png")Node.js — 최소한의 작업 예
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const result = await client.images.generate({
model: 'gpt-image-2',
prompt:
'A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.',
size: '1024x1024',
quality: 'medium',
n: 1,
});
const imageB64 = result.data[0].b64_json;
fs.writeFileSync('output.png', Buffer.from(imageB64, 'base64'));
console.log('Saved to output.png');Curl — 쉘 스크립트 및 빠른 테스트용
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A white stainless steel water bottle on a beige linen tablecloth.",
"size": "1024x1024",
"quality": "medium",
"n": 1
}'모든 매개변수 설명
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
model | 문자열 | 예 | 항상 gpt-image-2 |
prompt | 문자열 | 예 | 이미지 설명; 최대 32,000자 |
size | 문자열 | 아니 | 종횡비(1:1, 16:9, 9:16 등) 또는 명시적 픽셀(1024x1024, 1536x1024, 1024x1536) |
resolution | 문자열 | 아니 | 1K(~1 MP) / 2K(~4 MP) / 4K(~8 MP) — 명시적인 해상도 제어를 위해 일부 릴레이에서 사용 |
quality | 문자열 | 아니 | low, medium, high — 출력 토큰 수 및 비용에 영향을 미칩니다 |
n | 정수 | 아니 | 요청당 이미지 수, 1-10 |
image_urls | 배열 | 아니 | 이미지 편집/이미지 대 이미지 (each ≤50MB, JPEG / PNG / WEBP)를 위한 1-16개의 참조 이미지 |
output_format | 문자열 | 아니 | png(기본값), jpeg, webp |
output_compression | 정수 | 아니 | 0-100, jpeg/webp에만 해당 |
background | 문자열 | 아니 | 알파 채널이 있는 PNG용 transparent |
moderation | 문자열 | 아니 | 더 빠르고 더 엄격한 필터링을 위한 auto(기본값) 또는 low |
callback_url | 문자열 | 아니 | 완료 콜백을 수신하기 위한 HTTPS 엔드포인트(비동기 릴레이에서 사용) |
user | 문자열 | 아니 | OpenAI의 남용 모니터링을 위한 안정적인 사용자 ID |
이미지 편집 — 킬러 기능
GPT Image 2의 감독 편집은 확산 모델에 비해 API의 가장 큰 장점입니다. 기존 이미지와 변경할 내용을 설명하는 메시지를 업로드합니다.
Python
result = client.images.edit(
model="gpt-image-2",
image=open("original.png", "rb"),
prompt="Change the bottle's color from white to navy blue. Keep everything else identical.",
size="1024x1024",
quality="medium",
)
with open("edited.png", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))Node.js
import { toFile } from 'openai';
const result = await client.images.edit({
model: 'gpt-image-2',
image: await toFile(fs.createReadStream('original.png'), 'original.png'),
prompt:
"Change the bottle's color from white to navy blue. Keep everything else identical.",
size: '1024x1024',
quality: 'medium',
});프롬프트에서**"다른 모든 것을 동일하게 유지하세요"**라는 문구는 매우 중요합니다. 이 문구가 없으면 모델이 관련되지 않은 영역을 재생성할 수 있습니다.
속도 제한이 없는 동시성을 사용한 일괄 생성
순진하게 Promise.all() 100개의 요청을 처리하지 마십시오. 속도 제한에 도달하게 됩니다. 제한된 동시성을 사용합니다.
Python — 세마포어와 함께 asyncio 사용
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key=os.environ["OPENAI_API_KEY"])
async def generate_one(prompt: str, semaphore: asyncio.Semaphore):
async with semaphore:
result = await client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
async def batch_generate(prompts: list[str], concurrency: int = 5):
semaphore = asyncio.Semaphore(concurrency)
tasks = [generate_one(p, semaphore) for p in prompts]
return await asyncio.gather(*tasks)
results = asyncio.run(batch_generate(["prompt 1", "prompt 2", ...]))Node.js — p-limit 사용
import pLimit from 'p-limit';
const limit = pLimit(5); // 5 concurrent requests
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({
model: 'gpt-image-2',
prompt,
size: '1024x1024',
quality: 'medium',
});
return result.data[0].b64_json;
})
);
const results = await Promise.all(tasks);프로덕션 오류 처리
API는 여러 가지 독특한 방식으로 실패할 수 있습니다. 각각 처리:
from openai import OpenAI, APIError, RateLimitError, APIConnectionError, BadRequestError
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def safe_generate(prompt: str, max_retries: int = 3):
for attempt in range(max_retries):
try:
result = client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
except RateLimitError:
# 429 — wait and retry
wait = (2 ** attempt) * 5
print(f"Rate limited; waiting {wait}s")
time.sleep(wait)
except BadRequestError as e:
# 400 — usually a content policy violation, don't retry
print(f"Bad request: {e}")
return None
except APIConnectionError:
# network blip — retry
time.sleep(2 ** attempt)
except APIError as e:
# 500-level — retry with backoff
time.sleep(2 ** attempt)
return None비용 최적화 — 구체적인 전술
1. 적절한 품질 등급을 선택하세요.
| 계층 | 이미지당 비용(1024×1024) | 사용 시기 |
|---|---|---|
low | ~$0.011 | 초안, A/B 테스트, 신속한 반복 |
medium | ~$0.042 | 대부분의 프로덕션 사용 사례 |
high | ~$0.167 | 최종 히어로 이미지, 인쇄 해상도 자산 |
대부분의 팀은 high를 기본값으로 설정하여 초과 지불합니다. 작업의 ~95%에는 medium를 사용하세요.
2. images.generate가 아닌 images.edit로 반복합니다.
지시된 편집 비용은 한 세대와 동일하지만5번이 아닌 1번의 시도로 올바른 결과를 얻습니다. 다중 라운드 개선의 경우 비용이 5배 절감됩니다.
3. 프롬프트가 반복되면 결정적으로 캐시합니다.
동일한 프롬프트를 반복적으로 생성하는 경우(예: 사용자 대상 제품 미리보기) hash(prompt + size + quality)로 캐시하고 CDN에서 제공하세요.
4. 신속한 탐색을 위해 low를 사용한 후 업그레이드
일반적인 작업 흐름:
# Step 1: try 5 prompt variants at low quality ($0.05 total)
candidates = [generate(p, quality="low") for p in variants]
# Step 2: pick the best, regenerate at high quality
best_prompt = pick_winner(candidates)
final = generate(best_prompt, quality="high") # $0.167총 비용: 5개 변형을 모두 높은 수준으로 실행하는 경우 ~$0.84 대신 ~$0.22입니다.
5. OpenAI 대시보드에서 하드 지출 한도 설정
버그가 발생하지 않도록 코드를 신뢰하지 마십시오. platform.openai.com/account/billing/limits.에서 사용 한도를 설정하십시오.
스트리밍 생성 상태(선택 사항)
장기 실행 일괄 처리의 경우 진행 상황을 표시할 수 있습니다. 이미지 생성 엔드포인트는 스트리밍되지 않지만 비동기 진행 보고에서 배치를 래핑할 수 있습니다.
let completed = 0;
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({ /* ... */ });
completed++;
onProgress({ completed, total: prompts.length });
return result.data[0].b64_json;
})
);일반적인 통합 실수
| 실수 | 무슨 일이 일어나는가 | 수정 |
|---|---|---|
| 하드 코딩 API 키 | Git을 통한 키 유출 | 항상 환경 변수 사용 |
result.data[0].url에 저장 | 필드가 항상 존재하는 것은 아닙니다(response_format에 따라 다름) | b64_json를 사용하여 로컬로 디코딩 |
| 편집을 위해 대용량 이미지 보내기 | 느리고 비싸다 | 업로드하기 전에 1024×1024로 크기 조정 |
| 400 오류 무시 | Burns는 수정 불가능한 오류에 대해 재시도 | 4xx(재시도 안 함)와 5xx(재시도) 구별 |
| 속도 제한 없음 처리 | 버스트가 429 캐스케이드를 트리거합니다 | 세마포 제한 동시성 사용 |
| 일반 텍스트로 전체 프롬프트 로깅 | 사용자가 제공한 경우 개인정보 침해 | 로깅 전 해시 또는 수정 |
제작 준비 체크리스트
GPT Image 2 통합을 배송하기 전에:
- 환경 변수의 API 키, 코드나 로그에는 없음
- 사용 사례에 적합한 품질 계층(기본값은
medium) - 일괄 작업에 대한 제한된 동시성 (ZXQ1QXZ / ZXQ2QXZ)
- 오류 처리는 4xx와 5xx를 구별합니다.
- OpenAI 대시보드에 설정된 하드 지출 한도
- 콘텐츠 정책 위반으로 인해 사용자 입력이 삭제되었습니다.
- 자체 저장소에 저장된 출력(OpenAI URL에 의존하지 않음)
- 반복 프롬프트를 위한 캐시 레이어
- 이미지당 비용 및 오류율 모니터링
작업 폴링을 통한 비동기 생성(고동시성 설정용)
대용량 프로덕션 워크로드의 경우 일부 GPT Image 2 릴레이는비동기 작업 모델을 제공합니다. 즉, 요청을 제출하고 작업 ID를 즉시 돌려받으며 완료를 위해 폴링하거나 콜백을 받습니다. 이렇게 하면 대규모 배치에서 HTTP 시간 초과가 방지됩니다.
일반적인 비동기 흐름:
# 1. Submit request → get task_id
response = client.images.generate(
model="gpt-image-2",
prompt="...",
size="1024x1024",
quality="high",
callback_url="https://your-app.com/api/image-callback", # optional
)
task_id = response.id
# 2. Poll task status every few seconds
while True:
status = client.images.retrieve(task_id)
if status.status == "completed":
image_url = status.data[0].url
break
elif status.status == "failed":
raise Exception(status.error)
time.sleep(3)비동기 모드는 다음과 같은 경우에 이상적입니다.
- 하룻밤 사이에 수백 가지의 제품 변형을 생성하는 전자상거래 매장
- A/B 프롬프트 테스트를 실행하는 마케팅 팀
- 사용자가 이미지를 요청하고 나중에 다시 확인하는 앱(알림)
GPT Image 2 API FAQ
Q: GPT Image 2 API 모델명이 무엇인가요?
gpt-image-2. 모든 요청에 정확히 이 문자열을 사용하세요.
Q: GPT Image 2 API는 이미지 간/이미지 편집을 지원합니까?
그렇습니다. image 매개변수와 함께 images.edit를 사용하거나 이를 지원하는 릴레이에 image_urls(1-16 참조 이미지 배열)를 전달합니다. 참조 이미지는 캐릭터 일관성, IP 디자인, 제품 사진 촬영에 필수적입니다.
Q: GPT Image 2 API는 무료인가요? 아니요, 토큰 단위로 지급됩니다. 새로운 OpenAI 계정은 평가판 크레딧을 받을 수 있습니다. 일부 타사 릴레이는 무료 평가판 크레딧을 제공합니다.
Q: GPT Image 2 API의 이미지당 비용은 얼마입니까? 낮음/중간/고화질에서 1024×1024 이미지당 각각 약 $0.011 / $0.042 / $0.167입니다. 크기가 크고 참조 이미지가 클수록 비용이 더 많이 듭니다.
Q: 프롬프트의 최대 길이는 얼마입니까? 최대 32,000자입니다. 실제로 1,500자를 초과하는 프롬프트는 수익 감소를 보여줍니다.
Q: API를 사용하여 투명한 배경 PNG를 어떻게 생성합니까?
background: "transparent" 및 output_format: "png"를 설정합니다.
Q: GPT Image 2는 어떤 해상도를 지원합니까?
공통 사전 설정: 1024x1024, 1536x1024, 1024x1536. 일부 계전기는 명시적인 제어를 위해 1K / 2K / 4K 해상도 수준을 노출합니다.
Q: 비율 제한은 무엇입니까? OpenAI 등급에 따라 다릅니다. 무료 등급에는 가장 엄격한 제한이 있습니다. 사용 계층은 시간이 지남에 따라 확장됩니다. 한도 미만으로 유지하려면 제한된 동시성 (ZXQ0QXZ / ZXQ1QXZ)를 사용하세요.
Q: GPT Image 2 API 오류를 어떻게 처리합니까? 4xx(재시도하지 않음 - 일반적으로 콘텐츠 정책 위반)와 5xx(지수 백오프로 재시도)를 구별합니다. 위의 오류 처리 섹션을 참조하세요.
Q: 기내 GPT Image 2 API 요청을 취소할 수 있나요?
동기화 요청의 경우 연결을 닫는 것만 가능합니다. 비동기 가능 릴레이는 작업이 대기열에 있는 동안 작동하는 cancel 엔드포인트를 노출합니다.
Q: API는 스트리밍을 지원합니까? 이미지 생성 자체는 스트리밍되지 않습니다(마지막에 전체 이미지를 얻습니다). 진행률 UI의 경우 사용자 정의 진행률 보고자로 배치를 래핑합니다(위의 "스트리밍 생성 상태" 참조).
작동하는 예제 앱을 원하시나요?
전체 참조 구현(Next.js + GPT Image 2 + Stripe + 이미지 저장소)을 보려면 실제 출력을 보여주는 gpt-image2.art 및 탐색 페이지를 살펴보세요.
SLA와 함께 관리형 API 키가 필요합니까?
계정 설정, 청구, 지역 문제 및 속도 제한 조정을 건너뛰고 싶다면support@gpt-image2.art로 이메일을 보내 관리형 GPT Image 2 API 키를 구매할 수 있습니다. 우리는 다음을 제공합니다:
- 장애 조치 기능이 내장된 안정적인 API 엔드포인트 1개
- 현지 통화로 집계된 청구서(USD 전신 송금이 필요하지 않음)
- 비동기 작업 모드 + 즉시 사용 가능한 콜백 지원
- 10,000개 이상의 이미지를 생성하는 팀을 위한 볼륨 가격 /month
- 공식 API와 동일한
gpt-image-2모델 이름 및 매개변수 사양 — 드롭인 호환
추가 자료
images.generate가 아닌 images.edit로 반복합니다.3. 프롬프트가 반복되면 결정적으로 캐시합니다.4. 신속한 탐색을 위해 low를 사용한 후 업그레이드5. OpenAI 대시보드에서 하드 지출 한도 설정스트리밍 생성 상태(선택 사항)일반적인 통합 실수제작 준비 체크리스트작업 폴링을 통한 비동기 생성(고동시성 설정용)GPT Image 2 API FAQ작동하는 예제 앱을 원하시나요?SLA와 함께 관리형 API 키가 필요합니까?추가 자료더 많은 게시물

GPT Image 2 프롬프트 작성 가이드: 90% 적중률을 위한 7가지 규칙
200+ 세대를 위한 실용적인 GPT Image 2 프롬프트 작성 가이드입니다. 원샷 성공을 위한 7가지 규칙, 구조, 키워드, 안티 패턴.

GPT Image 2 vs Nano Banana 2 vs Midjourney v7 (2026)
GPT Image 2 vs Nano Banana 2 vs Midjourney v7 — 텍스트, 포스터, 사진, 컨셉 아트를 위한 최고의 AI 이미지 생성 모델은? 2026년 실무자를 위한 가이드.

GPT Image 2 상업적 이용 가능할까? 저작권 가이드
GPT Image 2 상업적 이용을 위한 완벽 가이드 — 저작권 소유권, Amazon/Etsy/Shopify/TikTok 정책 및 AI 이미지를 안전하게 활용하는 방법을 확인하세요.
Generate your first image with GPT Image 2 — right now
Reliable non-Latin text rendering, directed editing, and 50+ ready-to-use prompts. No downloads — just open in your browser.