Pop-cam NanoBanana Skill
Generate images with the Pop-cam NanoBanana API. The model supports any visual style — photorealistic, cinematic, cartoon, illustration, watercolor, 3D render, and anything else you can describe in a prompt.
This skill supports two modes:
- Image-to-image: send a base64-encoded photo and a prompt describing how to transform it.
- Text-to-image: send only a
promptfield (noimage) to generate an image from scratch.
Both modes cost 1 credit per generation and use the same endpoint.
Authentication
All generation requests require a Pop-cam API token (pk_ prefix) in the Authorization header.
If the user does not have a token yet, walk them through these steps in order:
- Sign up at https://www.pop-cam.com/sign-up (skip if they already have an account).
- Sign in at https://www.pop-cam.com/sign-in.
- Create an API token at https://www.pop-cam.com/developer — label it "OpenClaw". Copy the token immediately; it is only shown once.
Store the token and send it on every request:
Authorization: Bearer pk_YOUR_TOKEN
If unsure whether the user is signed in, call the auth-status endpoint first:
curl https://www.pop-cam.com/api/openclaw/auth-status
The response tells you whether sign-in is needed and provides the relevant URLs.
Skill Definition JSON
For a machine-readable version of this entire skill (features, endpoints, schemas, examples), call:
curl https://www.pop-cam.com/api/openclaw/skill
Generation Endpoint
POST https://www.pop-cam.com/api/v1/nanobanana
Headers
| Header | Value |
|---|---|
| Authorization | Bearer pk_YOUR_TOKEN |
| Content-Type | application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
image | string | No | Base64 data URL of the source image (data:image/png;base64,...). Omit entirely for text-to-image. |
prompt | string | No | Generation prompt. Required when image is omitted. Optional for image-to-image (a default prompt is used if omitted). |
webhook_url | string | No | HTTPS URL to receive the result asynchronously. Omit for synchronous mode. |
Image-to-Image Example
Transform an existing photo:
curl -X POST https://www.pop-cam.com/api/v1/nanobanana \
-H "Authorization: Bearer $POPCAM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"image": "data:image/png;base64,iVBOR...",
"prompt": "Enhance this photo with cinematic lighting and shallow depth of field"
}'
Text-to-Image Example
Generate an image from a text prompt only — no source photo needed:
curl -X POST https://www.pop-cam.com/api/v1/nanobanana \
-H "Authorization: Bearer $POPCAM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A photorealistic portrait of a man in a leather jacket standing on a city rooftop at golden hour, natural lighting, shallow depth of field"
}'
Synchronous Response (200)
{
"job_id": "a1b2c3d4-...",
"image_url": "https://cdn.pop-cam.com/generated/user_id/a1b2c3d4.png",
"download_url": "https://...r2.cloudflarestorage.com/...?X-Amz-Signature=...",
"used_prompt": "A photorealistic portrait of a man in a leather jacket standing on a city rooftop at golden hour, natural lighting, shallow depth of field",
"credits_remaining": 22,
"mode": "text-to-image"
}
Important: Use download_url to fetch the generated image. It is a presigned URL valid for 1 hour that works regardless of storage bucket privacy settings. The image_url is the permanent stored reference but may not be directly accessible if the bucket is private.
The mode field is "text-to-image" or "image-to-image" depending on which path was used.
Webhook / Async Mode
Include webhook_url to get an immediate HTTP 202 response with a job_id. Pop-cam POSTs the result to your URL when generation completes (retries up to 3 times with exponential backoff).
Initial response (202):
{
"job_id": "a1b2c3d4-...",
"status": "processing",
"message": "Your image is being generated. Results will be POSTed to your webhook_url."
}
Webhook delivery payload includes download_url (presigned, 1-hour expiry) for fetching the image.
Error Handling
| Status | Meaning | Action |
|---|---|---|
| 401 | Invalid or missing token | Ask the user to create or refresh their token at https://www.pop-cam.com/developer |
| 402 | Insufficient credits | Direct the user to buy credits at https://www.pop-cam.com/checkout |
| 403 | Account not synced | Ask the user to sign in via the web app first |
| 400 | Bad request (e.g. missing prompt for text-to-image, invalid image format) | Check the request body and fix the issue |
Credits
- Each generation (both modes) costs 1 credit.
- New accounts receive starter credits for free.
- Every response includes
credits_remaining. - Purchase more at https://www.pop-cam.com/checkout.
Prompt Tips
The model is not limited to any single style. The output depends entirely on your prompt. Here are example styles you can request:
| Style | Example prompt snippet |
|---|---|
| Photorealistic | "photorealistic photo, natural lighting, 85mm lens" |
| Cinematic | "cinematic still frame, anamorphic lens flare, moody color grading" |
| Cartoon | "colorful cartoon style, bold outlines, flat shading" |
| Illustration | "editorial illustration, clean vector style" |
| Oil painting | "oil painting on canvas, visible brushstrokes, impressionist style" |
| Watercolor | "delicate watercolor painting, soft washes, paper texture" |
| 3D render | "3D rendered scene, volumetric lighting, octane render" |
| Pencil sketch | "detailed pencil sketch on white paper, crosshatching" |
| Anime | "anime style, Studio Ghibli-inspired, vibrant colors" |
For the most realistic output, include details like lighting conditions, camera lens, depth of field, and environment in your prompt.
Quick Reference
| Task | How |
|---|---|
| Transform a photo | Send image + optional prompt |
| Generate from text | Send prompt only, no image field |
| Download the result | Use download_url from the response (presigned, 1-hour expiry) |
| Async processing | Add webhook_url to the request body |
| Check auth state | GET /api/openclaw/auth-status |
| Full skill JSON | GET /api/openclaw/skill |
| Buy credits | https://www.pop-cam.com/checkout |
| Create token | https://www.pop-cam.com/developer |