본문으로 건너뛰기
API 사용법이미지 생성

이미지 생성

POST /v1/images/generations — 프롬프트로 이미지를 만듭니다.

호출하기

프롬프트로 이미지를 만듭니다. OpenAI 이미지 엔드포인트와 같은 형식입니다. size 와 quality 는 선택이라, 안 보내면 모델 기본값으로 만들어집니다.

curl https://ai.cubion.kr/v1/images/generations \
  -H "Authorization: Bearer $GATEWAY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-1","prompt":"노을 지는 바다, 수채화","size":"1024x1024"}'

응답은 URL 이 아니라 base64

data[0].url 은 없습니다

응답은 { data: [{ b64_json }] } 입니다. b64_json 은 base64 로 인코딩된 이미지 바이트라서, <img src> 에 그대로 넣거나 디코딩해 파일로 저장해야 합니다. URL 이 올 거라 생각하고 data[0].url 을 읽으면 undefined 가 나옵니다.

응답
{
  "data": [
    { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }
  ]
}

브라우저에서 바로 보여 줄 때는 데이터 URL 로 감싸면 됩니다.

브라우저에 표시
img.src = "data:image/png;base64," + data[0].b64_json;

Gemini 이미지 모델도 같은 형태로 변환돼 옵니다 — 모델을 바꿔도 응답을 읽는 코드는 그대로 둘 수 있습니다.

크기와 품질

쓸 수 있는 사이즈·종횡비는 모델마다 다릅니다. 손으로 적어 두지 말고 모델 목록 에서 받아 선택 버튼을 만드세요 — mode 가 image_generation 인 항목에 image.sizes 가 함께 옵니다.

curl https://ai.cubion.kr/v1/models -H "Authorization: Bearer $GATEWAY_KEY"
# → data[] 중 mode:"image_generation" 인 항목에 image.sizes 가 들어 있습니다

알아 둘 점

  • size·quality 는 선택입니다. 확신이 없으면 빼고 부르세요 — 모델이 지원하지 않는 값을 넣는 것보다 안전합니다.
  • 목록에 없는 모델을 부르면 403 model_not_allowed 입니다. 모델명은 앱에 박아 두지 말고 GET /v1/models 로 채우세요.
  • 이미지 생성은 채팅보다 한 번 호출의 비용이 큽니다. 같은 프롬프트를 반복해 부르지 말고 만든 이미지를 저장해 두세요. 차감 내역은 사용량 에서 확인할 수 있습니다.
  • 막힌 요청의 상태 코드와 본문 형태는 오류 처리 를 보세요.