🍌 Google Nanobanana Image Generation
Premium feature. Google Nanobanana and Nanobanana Pro are reserved for accounts that have purchased any iApp credit (IC) package at least once. Free signup credits do not unlock them — buy a one-time package to access all premium APIs.
Generate stunning, high-quality images from text descriptions using Google's latest Gemini AI models. Perfect for creating marketing materials, infographics, charts, product visualizations, and artistic content.
Available Models
| Model | Endpoint | Cost | Best For |
|---|---|---|---|
| Nanobanana (gemini-2.5-flash-image) | /v3/image/generation/google/nanobanana/generate | 3 IC | Fast generation, simple graphics, quick prototypes |
| Nanobanana Pro (gemini-3-pro-image-preview) | /v3/image/generation/google/nanobananapro/generate | 8 IC | High-quality output, complex scenes, detailed artwork, 4K resolution, correct Thai text in images |
Try Demo
Try Our AI Demo
Login or create a free account to use this AI service demo and explore our powerful APIs.
Get 100 Free Credits (IC) when you sign up!
Offer ends December 31, 2025
Key Features
Text-to-Image Generation
Transform your text descriptions into stunning visuals. Simply describe what you want, and the AI will generate it.
High-Fidelity Text Rendering
Accurately generates legible text within images - perfect for infographics, charts, and marketing materials.
Multi-Turn Refinement
Iteratively adjust and refine generated images through conversation - ask for changes and the AI will update accordingly.
Thai Context Optimization
Optimized for Thai-specific content including temples, food, festivals, and cultural elements.
Use Cases
Marketing & Advertising
- Social media graphics
- Banner ads and promotional materials
- Product visualizations
- Campaign imagery
Business & Data Visualization
- Infographics and data charts
- Presentation slides
- Report illustrations
- Process diagrams
E-Commerce
- Product mockups
- Lifestyle photography
- Category banners
- Promotional graphics
Content Creation
- Blog post illustrations
- YouTube thumbnails
- Podcast covers
- Article headers
Getting Started
-
Prerequisites
- An API key from iApp Technology
- Text prompt describing the image you want to generate
-
Quick Start
- Choose between Nanobanana (fast, 3 IC) or Nanobanana Pro (high-quality, 8 IC)
- Send a POST request with your prompt
- Receive base64-encoded image in response
-
Best Practices
- Be descriptive: "A Thai temple at sunset with golden spires" works better than "temple"
- Specify style: "minimalist", "photorealistic", "watercolor", etc.
- Include context: colors, lighting, composition, mood
Please visit API Key Management page to view your existing API key or request a new one.
API Endpoints
| Endpoint | Method | Description | Cost |
|---|---|---|---|
/v3/image/generation/google/nanobanana/generate | POST | Fast image generation (gemini-2.5-flash-image) | 3 IC per request |
/v3/image/generation/google/nanobananapro/generate | POST | High-quality image generation (gemini-3-pro-image-preview) | 8 IC per request |
Request Format
Headers
| Name | Type | Description |
|---|---|---|
| apikey | String | Your iApp API Key |
| Content-Type | String | application/json |
Request Body
{
"contents": [
{
"parts": [
{
"text": "Your image description prompt here"
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}
Response Format
{
"candidates": [
{
"content": {
"parts": [
{
"inlineData": {
"mimeType": "image/png",
"data": "base64_encoded_image_data..."
}
}
]
}
}
]
}
Code Examples
- cURL
- Python
- JavaScript
- PHP
- Swift
- Kotlin
curl -X POST 'https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate' \
-H 'apikey: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"contents": [
{
"parts": [
{
"text": "Create a beautiful Thai temple at sunset with golden spires"
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
import requests
import base64
url = "https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate"
headers = {
"apikey": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"contents": [
{
"parts": [
{
"text": "Create a beautiful Thai temple at sunset with golden spires"
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
# Extract and save the image
if result.get("candidates"):
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
image_data = base64.b64decode(part["inlineData"]["data"])
with open("generated_image.png", "wb") as f:
f.write(image_data)
print("Image saved as generated_image.png")
const axios = require('axios');
const fs = require('fs');
const url = 'https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate';
const payload = {
contents: [
{
parts: [
{
text: 'Create a beautiful Thai temple at sunset with golden spires'
}
]
}
],
generationConfig: {
responseModalities: ['TEXT', 'IMAGE']
}
};
axios.post(url, payload, {
headers: {
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
})
.then(response => {
const candidates = response.data.candidates;
if (candidates && candidates[0]) {
for (const part of candidates[0].content.parts) {
if (part.inlineData) {
const imageBuffer = Buffer.from(part.inlineData.data, 'base64');
fs.writeFileSync('generated_image.png', imageBuffer);
console.log('Image saved as generated_image.png');
}
}
}
})
.catch(error => console.error(error));
<?php
$url = 'https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate';
$payload = json_encode([
'contents' => [
[
'parts' => [
[
'text' => 'Create a beautiful Thai temple at sunset with golden spires'
]
]
]
],
'generationConfig' => [
'responseModalities' => ['TEXT', 'IMAGE']
]
]);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'apikey: YOUR_API_KEY',
'Content-Type: application/json'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
if (isset($result['candidates'][0]['content']['parts'])) {
foreach ($result['candidates'][0]['content']['parts'] as $part) {
if (isset($part['inlineData'])) {
$imageData = base64_decode($part['inlineData']['data']);
file_put_contents('generated_image.png', $imageData);
echo "Image saved as generated_image.png\n";
}
}
}
?>
import Foundation
let url = URL(string: "https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let payload: [String: Any] = [
"contents": [
[
"parts": [
["text": "Create a beautiful Thai temple at sunset with golden spires"]
]
]
],
"generationConfig": [
"responseModalities": ["TEXT", "IMAGE"]
]
]
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else { return }
if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
let candidates = json["candidates"] as? [[String: Any]],
let content = candidates.first?["content"] as? [String: Any],
let parts = content["parts"] as? [[String: Any]] {
for part in parts {
if let inlineData = part["inlineData"] as? [String: Any],
let base64String = inlineData["data"] as? String,
let imageData = Data(base64Encoded: base64String) {
// Save or use the image data
print("Image data received: \(imageData.count) bytes")
}
}
}
}
task.resume()
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
import org.json.JSONObject
import java.io.File
import java.util.Base64
val client = OkHttpClient()
val payload = JSONObject().apply {
put("contents", org.json.JSONArray().apply {
put(JSONObject().apply {
put("parts", org.json.JSONArray().apply {
put(JSONObject().apply {
put("text", "Create a beautiful Thai temple at sunset with golden spires")
})
})
})
})
put("generationConfig", JSONObject().apply {
put("responseModalities", org.json.JSONArray().apply {
put("TEXT")
put("IMAGE")
})
})
}
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/image/generation/google/nanobanana/generate")
.addHeader("apikey", "YOUR_API_KEY")
.addHeader("Content-Type", "application/json")
.post(payload.toString().toRequestBody("application/json".toMediaType()))
.build()
client.newCall(request).execute().use { response ->
val json = JSONObject(response.body?.string() ?: "")
val candidates = json.getJSONArray("candidates")
if (candidates.length() > 0) {
val parts = candidates.getJSONObject(0)
.getJSONObject("content")
.getJSONArray("parts")
for (i in 0 until parts.length()) {
val part = parts.getJSONObject(i)
if (part.has("inlineData")) {
val base64Data = part.getJSONObject("inlineData").getString("data")
val imageBytes = Base64.getDecoder().decode(base64Data)
File("generated_image.png").writeBytes(imageBytes)
println("Image saved as generated_image.png")
}
}
}
}
Prompt Tips
Be Descriptive
Instead of: "a cat" Try: "A fluffy orange tabby cat sitting on a windowsill, warm afternoon sunlight, cozy home interior"
Specify Style
- "photorealistic" - for photo-like images
- "watercolor painting" - for artistic styles
- "minimalist flat design" - for clean graphics
- "3D rendered" - for dimensional look
- "vintage poster style" - for retro aesthetics
Include Context
- Lighting: "golden hour", "studio lighting", "neon glow"
- Composition: "close-up", "wide angle", "bird's eye view"
- Mood: "peaceful", "energetic", "dramatic"
- Colors: "blue and gold color scheme", "pastel colors", "high contrast"
Thai-Specific Prompts
- Reference Thai landmarks: Wat Arun, Grand Palace, Phi Phi Islands
- Include Thai elements: lotus flowers, elephants, Thai patterns
- Mention Thai festivals: Loy Krathong, Songkran, Thai New Year
- Use Thai food: Tom Yum, Pad Thai, Mango Sticky Rice
Pricing
| Model | Cost | Best For |
|---|---|---|
| Nanobanana | 3 IC per request | Quick prototypes, simple graphics, high volume |
| Nanobanana Pro | 8 IC per request | High-quality output, complex scenes, professional use, correct Thai text in images |
Limitations
- Maximum prompt length: 32,000 characters
- Response time: 5-30 seconds depending on complexity
- Output format: PNG or JPEG (base64 encoded)
- Content policy: No adult content, violence, or copyrighted material
Security & Compliance
- GDPR and PDPA compliant
- No data retention after processing
- SynthID watermarking on all generated images
- Content filtering for inappropriate requests
Related APIs
- Remove Background - Remove backgrounds from photos
- Face Detection - Detect faces in images
- Thai Document OCR - Extract text from images