google/gemini-3.1-flash-lite-imageNano Banana 2 Lite (Gemini 3.1 Flash Lite Image) is Google's fastest, most cost-efficient Gemini image model, built for high-velocity developer pipelines and rapid-fire visual exploration. It delivers text-to-image generation...
Billing follows the provider's own reported cost rather than the catalogue price — cached input is cheaper, and reasoning tokens bill as output. Your usage page is the record of what you actually paid.
Every model goes through the same endpoint — just use this page's ID as model.
curl https://macdecloud.com/v1/chat/completions \
-H "Authorization: Bearer dcld-sk-..." \
-H "Content-Type: application/json" \
-d '{"model":"google/gemini-3.1-flash-lite-image","messages":[{"role":"user","content":"Hello"}]}'Add "stream": true for token-by-token output over standard SSE.
curl -N https://macdecloud.com/v1/chat/completions \
-H "Authorization: Bearer dcld-sk-..." \
-H "Content-Type: application/json" \
-d '{"model":"google/gemini-3.1-flash-lite-image","stream":true,"messages":[{"role":"user","content":"hi"}]}'This is a reasoning model: it produces a thinking pass before answering, and those tokens are billed as output — often far more of them than the answer itself. Two consequences. Too small a max_tokens gets consumed during reasoning and returns finish_reason: "length" with a null content, which looks like a failure but is just an exhausted budget (2000+ is a safer floor). And cost runs well above a non-reasoning model at the same headline price.
Make content an array mixing text and image_url parts. The image can be a public URL or a data: base64 payload.
{
"model": "google/gemini-3.1-flash-lite-image",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}]
}