Autoscaling Report: Production databases on Neon use 2.4x less compute and 50% less cost than if they were running on a provisioned platform.
/AI Gateway/Gemini API

Gemini API

Use the Google Gemini API with Neon AI Gateway

Private Preview

This feature is in private preview: it's not ready for production use, and it may be briefly unavailable as we deploy updates. To get access, sign up here.

The Gemini endpoint exposes the Google Gemini API through Neon AI Gateway. Use it when you're already working with the google-genai SDK and want to keep your existing code. For most use cases, the chat completions endpoint is simpler to set up and works with Gemini models via the OpenAI SDK.

Supported actions: :generateContent and :streamGenerateContent

Endpoint pattern: https://<branch-host>/ai-gateway/gemini/v1beta/models/<model>:<action>

note

Only generateContent and streamGenerateContent are supported. Requests to other actions (such as countTokens) return 404 unsupported gemini action.

Supported models

This endpoint accepts Google models only:

Model IDNotes
gemini-3-5-flash
gemini-3-1-pro
gemini-3-1-flash-lite
gemini-3-pro
gemini-3-flash
gemini-2-5-pro
gemini-2-5-flash

Sending a non-Google model ID returns 400 model is not available on this endpoint. Use the chat completions endpoint if you want to call Gemini models alongside other providers from the same code.

Basic request

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({
  apiKey: process.env.NEON_AI_GATEWAY_TOKEN,
  httpOptions: {
    baseUrl: `${process.env.NEON_AI_GATEWAY_BASE_URL}/ai-gateway/gemini`,
  },
});

const response = await client.models.generateContent({
  model: 'gemini-2-5-flash',
  contents: [{ role: 'user', parts: [{ text: 'What is Neon?' }] }],
});

console.log(response.text);

Streaming

const stream = await client.models.generateContentStream({
  model: 'gemini-2-5-flash',
  contents: [{ role: 'user', parts: [{ text: 'Explain database branching.' }] }],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.text ?? '');
}

URL structure

The gateway uses the model ID and action directly in the URL path. The google-genai SDK constructs this automatically from the base URL and model parameter:

base_url: https://<branch-host>/ai-gateway/gemini
model:    gemini-2-5-flash
action:   generateContent or streamGenerateContent

→ https://<branch-host>/ai-gateway/gemini/v1beta/models/gemini-2-5-flash:generateContent
→ https://<branch-host>/ai-gateway/gemini/v1beta/models/gemini-2-5-flash:streamGenerateContent

When calling the REST API directly, the model ID and action must appear in the path as shown above.

Error handling

StatusMessageCause
400 Bad Requestunknown modelModel ID not in the catalog
400 Bad Requestmodel is not available on this endpointNon-Google model sent to this endpoint
400 Bad Requestmissing or invalid modelNo model field in request body
404 Not Foundunsupported gemini actionAction other than generateContent or streamGenerateContent in URL
404 Not Foundinvalid gemini model pathMalformed model:action segment in URL

For authentication, quota, and upstream errors, see Troubleshooting.

Next steps

Need help?

Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.

Was this page helpful?
Edit on GitHub