Focused server-side examples for building with nano-banana-pro and nano-banana-pro-edit on PoYo.
Model Page | Docs | Get API Key | Pricing | Main Examples
Nano Banana Pro is useful when image workflows need stronger reasoning, cleaner composition, higher-detail output, web-aware prompts, or multi-reference editing for production creative tools.
Sample output: PoYo model page sample.
This is an official PoYo model page sample, not a file generated by this repo.
- Text-to-image with
nano-banana-pro - Image editing with
nano-banana-pro-edit - cURL and Node.js backend examples
- Async task flow: submit, store
data.task_id, poll status, retrieve files - Webhook receiver notes for production callbacks
- Prompt examples and production integration notes
cp .env.example .env
# Edit .env and set POYO_API_KEYRun the Node.js example:
cd node
npm startKeep POYO_API_KEY on the server. Do not expose it in browser code, mobile apps, screenshots, or public logs.
Submit an image task:
POST https://api.poyo.ai/api/generate/submit
Authorization: Bearer <POYO_API_KEY>
Content-Type: application/jsonStore the returned data.task_id, then poll:
GET https://api.poyo.ai/api/generate/status/{task_id}
Authorization: Bearer <POYO_API_KEY>For production queues, pass callback_url during submit and use a webhook receiver for terminal task updates.
{
"model": "nano-banana-pro",
"input": {
"prompt": "A premium campaign visual for a modular desk lamp, warm interior scene, accurate product geometry, soft shadows, tasteful negative space for headline text",
"size": "auto",
"resolution": "2K",
"output_format": "png",
"enable_web_search": false,
"n": 1
}
}Use nano-banana-pro-edit when the request includes one or more source images.
{
"model": "nano-banana-pro-edit",
"callback_url": "https://example.com/api/poyo/webhook",
"input": {
"prompt": "Preserve the source subject, improve the scene composition, and keep the result realistic and production-ready",
"size": "auto",
"resolution": "2K",
"output_format": "png",
"enable_web_search": false,
"n": 1,
"image_urls": [
"https://example.com/source-product.png"
]
}
}| Path | What it covers |
|---|---|
curl/generate.md |
Copy-paste submit and status requests. |
node/ |
Native Node.js submit and poll flow. |
webhooks/express-webhook/ |
Minimal Express receiver for PoYo callbacks. |
docs/prompt-examples.md |
Practical prompts for product workflows and creative tests. |
docs/production-notes.md |
Security and reliability notes before launch. |
{
"code": 200,
"data": {
"task_id": "task-unified-example",
"status": "not_started",
"created_time": "2026-05-23T08:00:00"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-example",
"status": "finished",
"progress": 100,
"files": [
{
"file_url": "https://storage.poyo.ai/generated/image.png",
"file_type": "image"
}
],
"error_message": null
}
}- Keep
POYO_API_KEYserver-side only. - Validate prompts and source media URLs before submit.
- Store
data.task_idbefore polling or waiting for webhooks. - Treat
finishedandfailedas terminal states. - Log task IDs and status transitions, not API keys or private prompts.
- Make webhook handlers idempotent.
- Download returned files before they expire.
- Check current model availability and cost on the PoYo model page.
make checkOn Windows:
./scripts/check.ps1MIT