API 안내
GPT Image 2 VIP API
YingTu가 현재 사용하는 API 설정을 보여 줍니다. 실제 Key는 코드에 포함되지 않습니다.
빠른 시작
- 1
LaoZhang API Key를 만들거나 선택합니다.
- 2
현재 모델 ID와 Python 예시를 복사합니다.
- 3
작은 요청을 한 번 실행하고 응답을 확인합니다.
요청 정보
- 생성 엔드포인트
- POST /v1/images/generations
- 편집 엔드포인트
- POST /v1/images/edits
- Base URL
- https://api2.laozhang.ai
- 인증
- Bearer API Key
- 요청 유형
- OpenAI Images
- 참고 이미지
- 지원
- 참고 이미지 수
- YingTu에서 최대 5장 선택 가능(제공자 최대값 아님)
- 확인 상태
- 아직 확인되지 않음 — 확인 가능한 날짜 기록이 없습니다.
Python 예시
자리표시자 Key와 자신의 프롬프트를 바꾸세요.
텍스트 이미지 생성 예시
cURL
export LAOZHANG_API_KEY="replace-with-your-key"
curl --fail-with-body --max-time 500 \
-X POST 'https://api2.laozhang.ai/v1/images/generations' \
-H "Authorization: Bearer ${LAOZHANG_API_KEY}" \
-H "Content-Type: application/json" \
--data '{"model":"gpt-image-2-vip","prompt":"A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.","size":"2048x2048","quality":"high"}'
# The JSON response can contain base64 image data or an image URL.
# If this request times out, check request and billing logs before retrying.참조 이미지 편집 예시
gpt-image-2-vip · edit
import base64
import mimetypes
import os
import sys
import requests
API_KEY = os.environ.get("LAOZHANG_API_KEY")
if not API_KEY:
raise RuntimeError("Set the LAOZHANG_API_KEY environment variable before running this example.")
REQUEST_TIMEOUT_SECONDS = 500
headers = {"Authorization": f"Bearer {API_KEY}"}
def extension_for_mime(mime_type):
return {
"image/jpeg": "jpg",
"image/png": "png",
"image/webp": "webp",
"image/gif": "gif",
}.get(mime_type, "bin")
def decode_base64_image(value, fallback_mime="image/png"):
mime_type = fallback_mime
encoded = value
if value.startswith("data:"):
header, encoded = value.split(",", 1)
mime_type = header[5:].split(";", 1)[0] or fallback_mime
return base64.b64decode(encoded, validate=True), mime_type
def parse_json_response(response):
try:
result = response.json()
except ValueError as error:
print("API returned a non-JSON response.", file=sys.stderr)
raise SystemExit(1) from error
if not isinstance(result, dict):
print("API returned an unexpected JSON shape.", file=sys.stderr)
raise SystemExit(1)
return result
def extract_image(result):
if not isinstance(result, dict):
return None
images = result.get("data") or []
first_image = images[0] if images and isinstance(images[0], dict) else {}
encoded = first_image.get("b64_json")
if isinstance(encoded, str) and encoded:
return decode_base64_image(encoded)
image_url = first_image.get("url")
if isinstance(image_url, str) and image_url:
image_response = requests.get(image_url, timeout=REQUEST_TIMEOUT_SECONDS)
image_response.raise_for_status()
mime_type = image_response.headers.get("Content-Type", "image/png").split(";", 1)[0]
return image_response.content, mime_type
return None
def save_result_image(result):
extracted = extract_image(result)
if not extracted:
keys = sorted(result.keys()) if isinstance(result, dict) else []
print(f"No image data in response. Top-level keys: {keys}", file=sys.stderr)
raise SystemExit(1)
image_bytes, mime_type = extracted
output_path = f"output.{extension_for_mime(mime_type)}"
with open(output_path, "wb") as output_file:
output_file.write(image_bytes)
print(f"Image saved: {output_path} ({mime_type})")
API_URL = "https://api2.laozhang.ai/v1/images/edits"
data = {
"model": "gpt-image-2-vip",
"prompt": "A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.",
"size": "2048x2048",
"quality": "high"
}
opened_files = []
files = []
image_1_path = "image_1.jpg" # Replace with your reference image path
image_1_mime = mimetypes.guess_type(image_1_path)[0] or "image/jpeg"
image_1_file = open(image_1_path, "rb")
opened_files.append(image_1_file)
files.append(("image", (image_1_path, image_1_file, image_1_mime)))
try:
try:
response = requests.post(
API_URL,
headers=headers,
data=data,
files=files,
timeout=REQUEST_TIMEOUT_SECONDS,
)
except requests.Timeout as error:
print(
"Request timed out after 500 seconds. The result status may be unknown; "
"check call and billing logs before retrying.",
file=sys.stderr,
)
raise SystemExit(1) from error
finally:
for image_file in opened_files:
image_file.close()
if response.status_code != 200:
print(f"API error {response.status_code}: {response.text}", file=sys.stderr)
raise SystemExit(1)
save_result_image(parse_json_response(response))
실제 사용 전 LaoZhang 계정에서 최신 가격, 잔액, 권한을 확인하세요.
요청 파라미터
현재 YingTu 클라이언트와 코드 예시에 맞춘 필드입니다.
파라미터전송 방식
- model
- 필수. 이 페이지의 정확한 모델 ID를 사용합니다.
- prompt
- 필수. 이미지 지시를 보내며 API Key는 포함하지 않습니다.
- 출력 설정
size는 모델 레지스트리에 구성된 정확한 크기에서 고릅니다.- quality
- 선택 사항. 이 경로에 구성된 품질 단계를 사용합니다.
- 참고 이미지
- 선택 사항. YingTu 브라우저에서는 최대 5장을 multipart
image필드로 편집 엔드포인트에 보냅니다.
응답 및 시간 제한
- 이미지 응답
data[0].b64_json(data URL 포함)을 디코딩하거나data[0].url을 다운로드합니다.- 이미지가 아닌 응답
b64_json또는url이 없으면 성공으로 처리하지 않고 API 메시지가 있으면 표시합니다.
클라이언트 500초 제한
500초 후 YingTu 클라이언트는 대기를 중단합니다. 이때 결과와 청구 상태는 알 수 없을 수 있습니다.
자동 재시도 없음
YingTu는 자동 재시도하지 않습니다. 다시 유료 호출하기 전에 요청 및 청구 로그를 확인하세요.
일반적인 오류
- 인증
- 환경 변수의 Key와 Bearer 인증 헤더를 확인하세요.
- 권한 또는 잔액
- LaoZhang에서 모델 권한, 잔액, 청구 및 계정 제한을 확인하세요.
- 요청 제한
- 동시 실행 수를 낮추고 반환된 상위 또는 계정 메시지를 확인하세요.
- 이미지 없음
- 차단/종료 이유, API 메시지 및 response ID를 확인하세요.
- 시간 초과
- 최종 상태가 불명확할 수 있으므로 재시도 전에 호출 및 청구 로그를 확인하세요.
알려진 제한
생성 결과를 사용하기 전에 다음 내용을 확인하세요.
- 다운로드한 파일의 실제 크기를 확인하세요.
- 보이는 모든 문자, 숫자, 문장 부호를 검토하세요.
- 정체성, 로고, 포장, 색상과 작은 세부 사항을 확인하세요.
- 사용 가능 여부와 대기 시간은 달라질 수 있습니다.
- 가격, 잔액, 권한 및 청구는 LaoZhang에서 확인하세요.
API FAQ
API Key는 어디에 저장하나요?
코드 예시의 환경 변수를 사용하고 코드, 로그, 프롬프트에 전체 Key를 남기지 마세요.
시간 초과는 실패인가요?
항상 그렇지는 않습니다. 500초 후에도 결과나 청구가 불명확할 수 있으므로 로그를 확인하세요.
참고 이미지 수는 제공자 최대값인가요?
아닙니다. 모델 레지스트리에 있는 현재 YingTu 브라우저 제한입니다.
가격과 권한은 어디서 확인하나요?
최신 가격, 잔액, 권한과 청구는 LaoZhang 계정에서 확인하세요.
가격 및 청구
페이지에는 참고 가격이 표시됩니다. 최신 가격, 잔액, 권한, 청구는 LaoZhang 계정에서 확인하세요.
모델 정보
- 모델 ID
- gpt-image-2-vip
- 참고 가격
- $0.03/회
- 출력 크기
- 1K / 2K / 4K
- 정확한 출력 크기
- 선택 가능한 크기 30개
- 품질 단계
- low / medium / high
- API 형식
- OpenAI Images
스튜디오에서 이 모델 테스트
현재 이미지 스튜디오에서 사용할 수 있는 설정입니다.
YingTuLaoZhang