Nano Banana Pro API: 이미지당 가격과 동작하는 코드
Nano Banana Pro는 이미지 속 읽기 쉬운 텍스트와 여러 입력 이미지를 하나로 결합하는 것으로 알려진 Google의 Gemini 3 Pro Image 모델입니다. 무엇을 받는지, 이미지당 비용은 얼마인지, 어떻게 호출하는지 안내합니다.
Nano Banana Pro가 잘하는 것
Google은 2025년 11월에 Gemini 3 Pro Image 모델인 Nano Banana Pro를 출시했습니다. 이미지에 글자를 담거나 여러 소스를 결합해야 할 때 사용하세요.
- 이미지 속 텍스트. 헤드라인이 읽기 쉬워야 하는 포스터, 패키지, 메뉴, 인포그래픽, 인터페이스 목업.
- 하나의 이미지에 여러 입력. 최대 14장의 입력 이미지: 제품, 로고, 모델, 장소, 스타일 참조를 한 번의 요청에 모두 넣을 수 있습니다.
- 정밀한 편집. 나머지 이미지는 그대로 두고 배경, 한 사물의 색상, 시간대를 바꿀 수 있습니다.
- 큰 출력. 1K, 2K, 4K를 10가지 화면 비율로.
텍스트에 완벽한 이미지 모델은 없습니다. 짧은 헤드라인이 가장 안정적이며, 긴 문단과 작은 글씨는 더 어렵습니다. 게시하기 전에 모든 이미지를 교정하세요.
입력과 제한
| 옵션 | Nano Banana Pro |
|---|---|
| 모델 id | nano-banana-pro |
| 작업 | 텍스트 투 이미지, 이미지 편집 |
| 해상도 | 1K, 2K, 4K |
| 화면 비율 | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9 |
| 입력 이미지 | 편집할 이미지 1장은 image_url로, 또는 최대 14장은 image_urls |
| 경로 | 경로 1개 |
요청 형식은 영상 모델과 같으며 duration와 audio는 제외합니다. 모델이 지원하지 않는 값은 요금이 청구되기 전에 422로 거부됩니다.
Nano Banana Pro 가격 (2026년 10월)
Nano Banana Pro는 생성된 이미지당 청구됩니다. 2026년 10월 카탈로그 가격은 다음과 같습니다.
| 해상도 | 이미지당 | 이미지 100장 | 이미지 1,000장 |
|---|---|---|---|
| 1K | $0.04 | $4.00 | $40.00 |
| 2K | $0.04 | $4.00 | $40.00 |
| 4K | $0.08 | $8.00 | $80.00 |
작업을 제출하면 금액이 선불 잔액에서 보류되고, 이미지가 전달된 경우에만 청구됩니다. 작업이 실패하면 보류가 해제됩니다. 실제 청구 금액은 cost_usd로 반환됩니다. 크레딧 팩은 $10부터 시작하며 요금 페이지를 참고하세요. 이는 2K에서 Google 자체 Gemini API보다 70% 저렴한 수준이며, Nano Banana Pro 가격 비교에 모든 판매처의 가격이 있습니다.
그 밖의 Nano Banana 모델
Google의 경량 Nano Banana 모델도 같은 키로 Revana에서 사용할 수 있습니다. Nano Banana 2는 2026년 2월에 출시된 Gemini 3.1 Flash Image이고, 오리지널 Nano Banana는 Gemini 2.5 Flash Image입니다.
| 모델 | 해상도 | 화면 비율 | 시작가 / 이미지 | 경로 |
|---|---|---|---|---|
| Nano Banana Pro | 1K, 2K, 4K | 10 | $0.04 | 경로 1개 |
| Nano Banana 2 | 0.5K, 1K, 2K, 4K | 14 | $0.03 | 경로 2개 |
| Nano Banana 2.1 | 1K, 2K, 4K | 14 | $0.03 | 경로 3개 |
| Nano Banana 2 Lite | 1K | 10 | $0.02 | 경로 2개 |
| Nano Banana | 표시 없음 | 표시 없음 | $0.03 | 경로 1개 |
Nano Banana Pro로 이미지 생성하기
"model": "nano-banana-pro"와 프롬프트를 담아 POST /v1/generations를 보내세요. 이미지 작업은 보통 몇 초 안에 끝나지만 흐름은 영상과 같습니다. 제출하면 id가 있는 202를 받고, 그다음 폴링합니다. 이 2K 포스터는 $0.04입니다.
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"input": {
"prompt": "A minimalist concert poster for a jazz night. Large headline at the top in a bold condensed sans-serif: \"BLUE HOUR SESSIONS\". Below it, smaller: \"Friday 8 PM, Harbour Hall\". A saxophone drawn in thin gold lines on a deep navy background.",
"resolution": "2K",
"aspect_ratio": "4:5"
},
"max_cost_usd": 0.1
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JBX7Q2M4 \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "nano-banana-pro",
"input": {
"prompt": "A minimalist concert poster for a jazz night. Large headline at the top in a bold condensed sans-serif: \"BLUE HOUR SESSIONS\". Below it, smaller: \"Friday 8 PM, Harbour Hall\". A saxophone drawn in thin gold lines on a deep navy background.",
"resolution": "2K",
"aspect_ratio": "4:5",
},
"max_cost_usd": 0.1,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "nano-banana-pro",
input: {
prompt: "A minimalist concert poster for a jazz night. Large headline at the top in a bold condensed sans-serif: \"BLUE HOUR SESSIONS\". Below it, smaller: \"Friday 8 PM, Harbour Hall\". A saxophone drawn in thin gold lines on a deep navy background.",
resolution: "2K",
aspect_ratio: "4:5",
},
max_cost_usd: 0.1,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);완료된 생성 결과의 이미지 링크는 output.urls에 있습니다. 출력 링크는 만료되므로 바로 다운로드하세요.
{
"id": "gen_01JC3PZK8R",
"model": "nano-banana-pro",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JC3PZK8R/0.png"
]
},
"cost_usd": 0.04,
"attempts": 1,
"error": null,
"created_at": "2026-10-19T14:02:11Z",
"completed_at": "2026-10-19T14:02:29Z"
}이미지 한 장 편집하기
변경할 이미지를 image_url로 전달하고, 그대로 유지해야 할 것을 포함해 편집 내용을 설명하세요.
{
"model": "nano-banana-pro",
"input": {
"prompt": "Change the season to winter: snow on the ground and the rooftops, a pale grey sky. Keep the house, the car and the composition exactly as they are.",
"image_url": "https://example.com/house.jpg",
"resolution": "2K",
"aspect_ratio": "16:9"
},
"max_cost_usd": 0.1
}여러 이미지 결합하기
최대 14장의 이미지를 image_urls로 보내고 위치로 각각을 지칭하세요. 이 4K 제품 컷은 $0.08입니다.
{
"model": "nano-banana-pro",
"input": {
"prompt": "Place the perfume bottle from the first image on the marble shelf from the second image, styled like the third image: soft window light, muted greens. Keep the label text on the bottle exactly as it is.",
"image_urls": [
"https://example.com/bottle.jpg",
"https://example.com/shelf.jpg",
"https://example.com/style.jpg"
],
"resolution": "4K",
"aspect_ratio": "1:1"
},
"max_cost_usd": 0.1
}Nano Banana Pro 프롬프트 팁
- 정확한 문구를 따옴표로 인용하세요. 모든 텍스트를 따옴표로 묶고 어디에 들어가는지 말하세요. "상단의 헤드라인", "오른쪽 하단의 작은 글씨"처럼요.
- 서체를 묘사하세요. "굵고 좁은 산세리프", "손글씨 스크립트", "타자기체" 같은 표현이 글자의 느낌을 이끕니다.
- 페이지를 구성하세요. 포스터와 인포그래픽은 스타일보다 먼저 위에서 아래로 구조를 설명하세요.
- 입력에 번호를 매기세요. "세 번째 이미지의 로고"는 명확하지만, 여러 이미지를 보낼 때 "로고"는 그렇지 않습니다.
- 유지할 것을 말하세요. 편집에서는 바꿀 것만큼 바뀌면 안 되는 것(얼굴, 라벨, 구도)도 분명히 지정하세요.
- 단계별로 편집하세요. 요청당 변경 하나가 다섯 개보다 제어하기 쉽고, 잘못된 단계는 저렴하게 다시 할 수 있습니다.
라우팅과 폴백
Nano Banana Pro는 현재 Revana에서 경로가 하나 있습니다. 모델에 경로가 둘 이상이면 라우터가 가장 저렴한 경로를 먼저 시도하고 실패하면 작업을 다음으로 넘기며, 항상 표시된 가격이 적용됩니다. 경로가 하나뿐이면 폴백할 곳이 없으므로, 실패하면 작업은 failed로 끝나며 요금은 없습니다.
failed 작업은 앱에서 처리하세요. 예를 들어 나중에 재시도하거나, 경로가 두 개 있는 Nano Banana 2 같은 두 번째 모델을 제공할 수 있습니다.
모델 페이지에서 모든 이미지 모델을, 문서에서 필드 레퍼런스를 확인하거나, API 키를 받아 샘플을 실행해 보세요.
자주 묻는 질문
Nano Banana Pro API는 얼마인가요?
2026년 10월 기준 Nano Banana Pro는 1K에서 이미지당 $0.04, 2K에서 $0.04, 4K에서 $0.08입니다. 2K 이미지 100장 배치는 $4.00입니다.
Nano Banana Pro란 무엇인가요?
Google이 Gemini 3 Pro Image를 부르는 이름으로, 2025년 11월에 출시된 이미지 생성 및 편집 모델입니다. 이미지 속 읽기 쉬운 텍스트와 여러 입력 이미지의 결합으로 알려져 있습니다.
Nano Banana Pro에 입력 이미지를 몇 장 보낼 수 있나요?
image_urls로 최대 14장입니다. 편집할 이미지가 한 장이면 image_url을 사용하세요.
Nano Banana Pro는 어떤 화면 비율을 지원하나요?
카탈로그에는 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9가 있습니다.
Nano Banana Pro와 Nano Banana 2는 어떻게 다른가요?
Nano Banana 2는 Gemini 3.1 Flash Image입니다. Revana에서는 매우 넓거나 매우 긴 비율을 포함해 14가지 화면 비율을 지원하고 이미지당 $0.03부터 시작하며, Nano Banana Pro는 10가지를 지원하고 $0.04부터 시작합니다.
이미지가 실패해도 요금이 청구되나요?
아니요. 제출할 때 금액이 보류되고, 작업이 실패하면 보류가 해제됩니다. 전달된 이미지에만 요금을 냅니다.