The GDELT Project

Using Nano Banana Pro Programmatically Via The GCP Vertex API To Create Images

Creating images programmatically with Nano Banana Pro is trivial using the GCP Vertex API, but requires a few extra steps to extract and decode the image data from the response. Let's take a look at making a fun image of a golden retriever chasing a tennis ball on the moon.

First save the following configuration file to "NANO.json". Change the "text" field to the prompt you wish to use. You can also adjust the "imageSize": 2-4K yield the best results for text-heavy infographic-style images:

{
  "contents": {
    "parts": [
      {
        "text": "Make me an image of a golden retriever chasing a tennis ball on the moon with the blue marble earth in the background."
      }
    ],
    "role": "user"
  },
  "generationConfig": {
    "imageConfig": {
      "imageSize": "2K"
    },
    "responseModalities": [
      "IMAGE"
    ]
  }
}

Now we'll submit that config to Nano Banana Pro. It will return the image data as inline BASE64-encoded binary, so we use jq to parse and decode it into a standalone file:

time curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" "https://aiplatform.googleapis.com/v1/projects/[YOURPROJECTID]/locations/global/publishers/google/models/gemini-3-pro-image-preview:generateContent" -d @./NANO.json -o out.json
cat out.json | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > image.jpg

You can see the final image below: