저자 주: Nano Banana 2 이미지 생성 API에서 발생하는 "not supported model for image generation" 오류의 근본 원인과 OpenAI 형식에서 Google 네이티브 generateContent 형식으로 올바르게 전환하는 방법을 상세히 설명합니다.
Nano Banana 2로 이미지를 생성할 때 not supported model for image generation 오류가 발생하시나요? 이는 현재 개발자가 가장 자주 접하는 Gemini 이미지 API 호출 문제 중 하나입니다. 이 글에서는 오류의 근본 원인과 올바른 호출 방식을 소개하여 Nano Banana 2 이미지 API 오류를 빠르게 해결하는 데 도움을 드립니다.
핵심 가치: 이 글을 읽고 나면 Gemini 이미지 모델과 Imagen 모델의 API 호출 차이를 이해하고, generateContent 엔드포인트의 올바른 사용법을 익히며, 3단계로 오류 문제를 해결할 수 있게 됩니다.

Nano Banana 2 이미지 API 오류 핵심 원인
| 요점 | 설명 | 해결책 |
|---|---|---|
| 오류 메시지 | not supported model for image generation, only imagen models are supported | generateContent 엔드포인트로 전환 |
| 근본 원인 | OpenAI 형식 엔드포인트는 Imagen 모델만 지원하며, Gemini 이미지 모델은 지원하지 않음 | Google 네이티브 API 형식 사용 |
| 올바른 엔드포인트 | /v1beta/models/{MODEL}:generateContent |
/v1/images/generations 대체 |
| 필수 매개변수 | responseModalities: ["TEXT", "IMAGE"] |
generationConfig에서 설정 |
Nano Banana 2 이미지 API 오류 상세 설명
OpenAI 호환 형식의 /v1/images/generations 엔드포인트를 사용하여 Nano Banana 2(gemini-3.1-flash-image-preview) 또는 Nano Banana Pro(gemini-3-pro-image-preview)를 호출할 때 시스템은 다음 오류를 반환합니다:
not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500
이 오류의 핵심 원인은 다음과 같습니다: Gemini 이미지 모델과 Imagen 모델은 완전히 다른 아키텍처를 가진 모델입니다.
- Imagen 모델 (예:
imagen-3.0-generate-001)은 전용 이미지 생성 모델로,/v1/images/generations또는:predict엔드포인트를 사용합니다. - Gemini 이미지 모델 (Nano Banana 시리즈)은 멀티모달 언어 모델로, 텍스트와 이미지를 동시에 출력할 수 있으며, 반드시
:generateContent엔드포인트를 사용해야 합니다.
간단히 말해서, 여러분이 "텍스트-이미지 변환 전용 채널"을 사용하여 "멀티모달 대화 모델"을 호출했기 때문에 형식이 맞지 않아 오류가 발생한 것입니다.

Nano Banana 2 이미지 API 올바른 호출 형식
잘못된 호출 vs 올바른 호출 비교
| 비교 항목 | ❌ 잘못된 방식 (OpenAI 형식) | ✅ 올바른 방식 (generateContent 형식) |
|---|---|---|
| API 엔드포인트 | /v1/images/generations |
/v1beta/models/{MODEL}:generateContent |
| 요청 구조 | prompt + size + n 매개변수 |
contents + generationConfig 구조 |
| 응답 형식 | 이미지 URL | 인라인 Base64 이미지 데이터 |
| 지원 모델 | DALL-E, Imagen 시리즈 | Gemini 이미지 모델 (Nano Banana 시리즈) |
| 출력 내용 | 이미지만 | 텍스트 + 이미지 (멀티모달 출력) |
Nano Banana 2 이미지 API 잘못된 요청 예시
다음은 오류를 발생시키는 잘못된 호출 방식입니다:
# ❌ 잘못됨: OpenAI 형식으로 Nano Banana 2 호출
curl -X POST https://api.apiyi.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이",
"size": "1024x1024",
"n": 1
}'
# 반환: not supported model for image generation
Nano Banana 2 이미지 API 올바른 요청 예시
다음은 올바른 generateContent 형식 호출 방식입니다:
# ✅ 올바름: Google 네이티브 generateContent 형식 사용
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이"}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
🎯 기술 팁: APIYI apiyi.com 플랫폼을 통해 Nano Banana 2를 호출하면 별도의 Google Cloud 계정 설정 없이, 통합 API 키를 사용해 generateContent 엔드포인트를 직접 호출할 수 있습니다.
Nano Banana 2 이미지 API 빠른 시작
Nano Banana 2 이미지 API 오류를 3단계로 수정하기
1단계: API 엔드포인트 변경
요청 주소를 OpenAI 형식에서 generateContent 형식으로 전환하세요:
# 잘못된 엔드포인트
https://api.apiyi.com/v1/images/generations
# 올바른 엔드포인트 (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent
# 올바른 엔드포인트 (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent
2단계: 요청 본문 구조 수정
OpenAI의 prompt + size 매개변수에서 Google 네이티브의 contents + generationConfig 구조로 변경하세요. 핵심 매개변수:
contents.parts.text: 이미지 설명 텍스트generationConfig.responseModalities: 반드시["TEXT", "IMAGE"]로 설정해야 합니다
3단계: 응답 데이터 처리
generateContent가 반환하는 이미지는 URL이 아닌 Base64로 인코딩된 인라인 데이터입니다. 응답에서 이미지를 추출하고 디코딩해야 합니다.
초간단 Python 예시
import requests
import base64
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com" # APIYI 통합 인터페이스
response = requests.post(
f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이"}]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
}
)
result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open("output.png", "wb") as f:
f.write(img_data)
print("이미지가 output.png로 저장되었습니다")
elif "text" in part:
print("모델 설명:", part["text"])
전체 구현 코드 보기 (오류 처리 및 화면비율 설정 포함)
import requests
import base64
import os
from typing import Optional
def generate_image(
prompt: str,
model: str = "gemini-3.1-flash-image-preview",
aspect_ratio: str = "1:1",
output_path: str = "output.png",
api_key: Optional[str] = None
) -> dict:
"""
Nano Banana 2 generateContent 엔드포인트를 사용하여 이미지 생성
Args:
prompt: 이미지 설명
model: 모델 이름
aspect_ratio: 화면비율 (1:1, 16:9, 9:16, 4:3, 3:4)
output_path: 출력 파일 경로
api_key: API 키
Returns:
파일 경로와 모델 설명을 포함한 딕셔너리
"""
api_key = api_key or os.getenv("APIYI_API_KEY")
base_url = "https://api.apiyi.com" # APIYI 통합 인터페이스
response = requests.post(
f"{base_url}/v1beta/models/{model}:generateContent",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": prompt}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": aspect_ratio}
}
},
timeout=60
)
if response.status_code != 200:
raise Exception(f"API 요청 실패: {response.status_code} - {response.text}")
result = response.json()
candidates = result.get("candidates", [])
if not candidates:
raise Exception("유효한 결과가 반환되지 않았습니다")
output = {"text": "", "image_path": ""}
for part in candidates[0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open(output_path, "wb") as f:
f.write(img_data)
output["image_path"] = output_path
elif "text" in part:
output["text"] = part["text"]
return output
# 사용 예시
result = generate_image(
prompt="먹물 스타일의 산수화, 멀리 안개가 자욱한 산맥이 보임",
model="gemini-3.1-flash-image-preview",
aspect_ratio="16:9",
output_path="landscape.png"
)
print(f"이미지가 저장되었습니다: {result['image_path']}")
print(f"모델 설명: {result['text']}")
권장사항: APIYI apiyi.com에서 API 키를 획득하세요. 플랫폼은 무료 테스트 한도를 제공하며, Nano Banana 2와 Nano Banana Pro 두 가지 Gemini 이미지 모델의 generateContent 호출을 지원합니다.
Nano Banana 2 이미지 API 모델 비교
다른 이미지 생성 모델의 API 호출 방식 차이를 이해하면 다음과 같은 형식 오류를 피하는 데 도움이 됩니다:
| 모델 | 코드명 | API 엔드포인트 | 호출 형식 | 사용 가능 플랫폼 |
|---|---|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | :generateContent |
Google 네이티브 형식 | APIYI 등 플랫폼 |
| Nano Banana Pro | gemini-3-pro-image-preview | :generateContent |
Google 네이티브 형식 | APIYI 등 플랫폼 |
| Imagen 3 | imagen-3.0-generate-001 | /v1/images/generations 또는 :predict |
OpenAI 호환 형식 | APIYI 등 플랫폼 |
| DALL-E 3 | dall-e-3 | /v1/images/generations |
OpenAI 형식 | APIYI 등 플랫폼 |
Nano Banana 2 이미지 API 주요 매개변수 설명

generateContent 엔드포인트는 다양한 이미지 생성 매개변수를 지원합니다:
| 매개변수 | 설명 | 필수 여부 | 예시 값 |
|---|---|---|---|
contents.parts.text |
이미지 설명 프롬프트 | ✅ 필수 | "햇살 아래 주황색 고양이" |
responseModalities |
응답 모달리티 설정 | ✅ 필수 | ["TEXT", "IMAGE"] |
imageConfig.aspectRatio |
이미지 종횡비 | 선택 사항 | "1:1", "16:9", "9:16" |
contents.parts.inlineData |
참조 이미지 (이미지-이미지 변환) | 선택 사항 | Base64 이미지 데이터 |
💡 중요 참고사항:
responseModalities는 반드시"TEXT"와"IMAGE"를 모두 포함해야 합니다.["IMAGE"]만 설정하면 요청이 실패합니다. 이는 Gemini 이미지 모델이 멀티모달 모델로, 항상 텍스트 설명과 이미지를 동시에 출력하기 때문입니다.
자주 묻는 질문
Q1: Nano Banana 2는 왜 OpenAI 형식으로 호출할 수 없나요?
Nano Banana 2(gemini-3.1-flash-image-preview)는 Gemini 기반의 멀티모달 언어 모델입니다. 이 모델의 이미지 생성 능력은 전용 "텍스트-이미지 변환 API"가 아니라 "대화 생성"을 통해 구현됩니다. OpenAI 형식의 /v1/images/generations 엔드포인트는 DALL-E나 Imagen 같은 전용 이미지 생성 모델을 위해 설계되었으며, Gemini 모델의 멀티모달 요청 구조를 처리할 수 없습니다. APIYI apiyi.com 플랫폼을 통해 호출할 때는 모델 유형에 맞는 엔드포인트 형식을 선택해야 합니다.
Q2: Nano Banana 2와 Nano Banana Pro 이미지 API의 차이점은 무엇인가요?
두 모델 모두 generateContent 엔드포인트를 사용하며, 호출 형식은 완전히 동일합니다. 주요 차이점은 다음과 같습니다:
- Nano Banana 2 (Flash 버전): 생성 속도가 더 빠르며(약 3-5초), 대량 생성이나 빠른 프로토타이핑에 적합합니다.
- Nano Banana Pro: 이미지 품질이 더 높고, 텍스트 렌더링 정확도가 94%에 달해 정밀한 디자인이나 상업적 용도에 적합합니다.
APIYI apiyi.com 플랫폼에서 두 모델 모두 사용 가능하며, 엔드포인트 URL에서 모델 이름만 변경하면 됩니다.
Q3: generateContent가 반환한 이미지 데이터는 어떻게 처리하나요?
OpenAI 형식이 이미지 URL을 반환하는 것과 달리, generateContent는 Base64로 인코딩된 인라인 이미지 데이터를 반환합니다. 처리 단계는 다음과 같습니다:
- 응답 JSON의
candidates[0].content.parts에서inlineData를 포함하는 부분을 찾습니다. inlineData.data필드의 Base64 문자열을 가져옵니다.base64.b64decode()를 사용해 디코딩한 후 이미지 파일로 저장합니다.inlineData.mimeType필드에서 이미지 형식(보통image/png)을 확인할 수 있습니다.
요약
Nano Banana 2 이미지 API 오류의 핵심 포인트입니다:
- 오류 원인 명확:
/v1/images/generations(OpenAI 형식)을 사용해 Gemini 이미지 모델을 호출하면 "not supported model" 오류가 발생합니다. - generateContent로 전환: 올바른 엔드포인트는
/v1beta/models/gemini-3.1-flash-image-preview:generateContent입니다. - responseModalities 설정: generationConfig에 반드시
["TEXT", "IMAGE"]를 포함해야 하며, 그렇지 않으면 이미지를 생성할 수 없습니다.
Nano Banana 2 API 오류를 만났을 때 핵심은 한 마디로 요약됩니다: OpenAI의 이미지 생성 엔드포인트를 Google 네이티브의 generateContent 엔드포인트로 교체하세요.
Google Cloud 계정 설정 없이 generateContent 형식을 직접 호출할 수 있는 APIYI apiyi.com 플랫폼을 통해 Nano Banana 2와 Nano Banana Pro를 빠르게 테스트해 보시기 바랍니다. 플랫폼은 무료 사용량을 제공합니다.
📚 참고 자료
-
Google Gemini 이미지 생성 문서: Gemini API 공식 이미지 생성 가이드
- 링크:
ai.google.dev/gemini-api/docs/image-generation - 설명: generateContent 엔드포인트의 완전한 매개변수 설명과 예제를 포함합니다.
- 링크:
-
Google generateContent API 참조: Gemini API 콘텐츠 생성 인터페이스 문서
- 링크:
ai.google.dev/api/generate-content - 설명: generateContent 엔드포인트의 요청 및 응답 구조에 대한 상세 설명입니다.
- 링크:
-
Google Gemini OpenAI 호환성 문서: Gemini와 OpenAI 형식의 호환성 설명
- 링크:
ai.google.dev/gemini-api/docs/openai - 설명: 어떤 기능이 OpenAI 호환 형식을 지원하고, 어떤 기능이 네이티브 형식이 필요한지 확인할 수 있습니다.
- 링크:
저자: APIYI 기술 팀
기술 교류: Nano Banana 2 이미지 API 호출 문제에 대해 댓글에서 토론해 주세요. 더 많은 자료는 APIYI docs.apiyi.com 문서 센터에서 확인하실 수 있습니다.
