Nano Banana 2
The main choice for most tasks: draws from a description, edits your photos and writes clean text on pictures.
Good for: people, landscapes, photo edits, pictures with lettering
How to get a better result
"Replace the background with a beach", "make it a watercolor".
The AI keeps everything else better: the face, the pose, the clothes.
Sharp, not blurry, so the person or object is clearly visible.
Pass this model in the request nano-banana-2
1. Create a task POST /api/v1/jobs/createTask
curl -X POST https://mixmedia.tech/api/v1/jobs/createTask \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-123" \
-d '{
"model": "nano-banana-2",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A small robot watering flowers on a windowsill, watercolor, morning light",
"image_input": [],
"aspect_ratio": "auto",
"resolution": "1K",
"output_format": "jpg"
}
}'import time, requests
API = "https://mixmedia.tech/api/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
task = requests.post(f"{API}/jobs/createTask", headers=HEADERS, json={
"model": "nano-banana-2",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A small robot watering flowers on a windowsill, watercolor, morning light",
"image_input": [],
"aspect_ratio": "auto",
"resolution": "1K",
"output_format": "jpg"
}
}).json()
task_id = task["data"]["taskId"]
while True:
info = requests.get(f"{API}/jobs/recordInfo", headers=HEADERS, params={"taskId": task_id}).json()["data"]
if info["state"] in ("success", "fail"):
break
time.sleep(4)
print(info["state"], info.get("resultJson") or info.get("failMsg"))const API = "https://mixmedia.tech/api/v1";
const headers = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const { data } = await fetch(`${API}/jobs/createTask`, {
method: "POST", headers,
body: JSON.stringify({
"model": "nano-banana-2",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A small robot watering flowers on a windowsill, watercolor, morning light",
"image_input": [],
"aspect_ratio": "auto",
"resolution": "1K",
"output_format": "jpg"
}
}),
}).then((r) => r.json());
let info;
do {
await new Promise((r) => setTimeout(r, 4000));
info = (await fetch(`${API}/jobs/recordInfo?taskId=${data.taskId}`, { headers }).then((r) => r.json())).data;
} while (!["success", "fail"].includes(info.state));
console.log(info.state, info.resultJson ?? info.failMsg);Response: data.taskId. callBackUrl and Idempotency-Key are optional.
2. Status and result GET /api/v1/jobs/recordInfo
curl "https://mixmedia.tech/api/v1/jobs/recordInfo?taskId=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
data.state: waiting, queuing, generating, success, fail. On success data.resultJson is a JSON string with resultUrls.
3. Upload a file POST /api/v1/files/upload
curl -X POST https://mixmedia.tech/api/v1/files/upload \
-H "Authorization: Bearer YOUR_API_KEY" -F "file=@photo.jpg"
The response has data.url. Pass that URL in the file field. Any public https URL works too.
Input fields
| Field | What to send |
|---|---|
prompt * | text, up to 20000 characters |
image_input | list of URLs, up to 10 |
aspect_ratio | auto · 1:1 · 2:3 · 3:2 · 3:4 · 4:3 · 4:5 · 5:4 · 9:16 · 16:9 · 21:9 · 1:4 · 4:1 · 1:8 · 8:1 · default auto |
resolution | 0.5K · 1K · 2K · 4K · default 1K |
output_format | jpg · png · default jpg |
About the model
Nano Banana 2 is Google's main image model. It keeps faces and characters recognisable, writes readable text on pictures, understands long detailed descriptions and can use up to 10 of your photos to edit, combine or copy a style.
1K is faster, 2K gives more detail. A picture usually takes 1–2.5 minutes.


