Beta
The Neon AI Gateway is in Beta. Share your feedback on Discord or via the Neon Console.
To set up Neon AI Gateway with an AI coding assistant, install the Neon Platform (neon) and Neon AI Gateway skills:
npx skills add neondatabase/agent-skills -s neon -s neon-ai-gatewayCreate a credential
In the Neon Console, select your branch, click Credentials under APP BACKEND, then click Create credential and check ai_gateway:invoke. Copy the credential before closing — it's shown only once.
Or use the API:
curl -X POST "https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/credentials" \ -H "Authorization: Bearer $NEON_API_KEY" \ -H "Content-Type: application/json" \ -d '{"scopes": ["ai_gateway:invoke"], "principal_type": "user"}'Using neon.ts?If your project has a
neon.tsfile, declarepreview: { aiGateway: true }and runneon deploy. Credentials are provisioned and pulled into your local.envautomatically — no manual creation needed. See Authentication for details.Store the credential as an environment variable:
export NEON_AI_GATEWAY_TOKEN=nt_live_...Find your branch host
Your branch's AI Gateway host is available in the Neon Console on the AI Gateway page, or via the Neon API. It follows this format:
br-<name>-api.ai.<cell>.<region>.aws.neon.techFor example:
export NEON_AI_GATEWAY_BASE_URL=https://br-winter-pond-aptw82ef-api.ai.c-2.us-east-2.aws.neon.techThis is different from your database connection string.
Make your first request
The chat completions endpoint is OpenAI-compatible. Set
baseURLto your branch host andapiKeyto your credential. No other changes needed.import OpenAI from 'openai'; import 'dotenv/config'; const client = new OpenAI({ apiKey: process.env.NEON_AI_GATEWAY_TOKEN, baseURL: `${process.env.NEON_AI_GATEWAY_BASE_URL}/v1`, }); const response = await client.chat.completions.create({ model: 'gpt-5-mini', messages: [{ role: 'user', content: 'Hello!' }], }); console.log(response.choices[0].message.content);Stream a response
Add
stream: trueto receive a streamed response. Your existing streaming code works without changes. The gateway forwardstext/event-streamresponses from the upstream provider.import OpenAI from 'openai'; import 'dotenv/config'; const client = new OpenAI({ apiKey: process.env.NEON_AI_GATEWAY_TOKEN, baseURL: `${process.env.NEON_AI_GATEWAY_BASE_URL}/v1`, }); const stream = await client.chat.completions.create({ model: 'gpt-5-mini', messages: [{ role: 'user', content: 'Write a haiku about serverless databases.' }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? ''); }Swap models
Change the
modelfield to use a different provider. No other code changes required.// OpenAI model: 'gpt-5-mini' // Google model: 'gemini-3-flash' // Alibaba model: 'qwen3-next-80b-a3b-instruct'See Models for the full list of available model IDs.
Using the AI SDK?For TypeScript apps and agents, use
@neon/ai-sdk-providerwith the Vercel AI SDK. It readsNEON_AI_GATEWAY_BASE_URLandNEON_AI_GATEWAY_TOKEN, then routes each catalog model to the best AI Gateway endpoint for that provider.
Next steps
- Models: full model catalog and which endpoint to use per provider
- Chat completions: detailed reference for the unified endpoint
- Authentication: credential scopes, branch binding, and rotation
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.








