Integration & Deployment
How to deploy your application to use Ingate. No infrastructure to manage. Just point your app at api.ingateai.com.
Overview
Ingate is fully managed cloud infrastructure. There is nothing to deploy, no containers to run, no databases to provision. Your only job is to point your application at the Ingate API endpoint.
# This is the only URL you need
https://api.ingateai.comEvery request you send to api.ingateai.com is routed through Ingate's global infrastructure. Logging, budgets, guardrails, caching, and provider routing are handled automatically based on your organization's configuration. You write application code. Ingate handles everything between your app and the LLM providers.
No self-hosting
Environment Setup
Set your Ingate API key as an environment variable in whatever platform runs your application. The key authenticates every request to the Ingate proxy.
Vercel
Add the key in Project Settings → Environment Variables, or via the CLI:
# Vercel CLI
vercel env add INGATE_API_KEY production
# Paste: sk-ingate-your-key-here
# Or set in vercel.json
# (Not recommended for secrets, use the dashboard or CLI instead)AWS Lambda
Set the variable in your function configuration or SAM/CDK template:
# AWS CLI
aws lambda update-function-configuration \
--function-name my-function \
--environment "Variables={INGATE_API_KEY=sk-ingate-your-key-here}"Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Environment:
Variables:
INGATE_API_KEY: !Ref IngateApiKeyParamDocker
Pass the key at runtime. Never bake secrets into images:
docker run -e INGATE_API_KEY=sk-ingate-your-key-here my-appRailway / Render
Both platforms have a Variables section in the service dashboard. Add INGATE_API_KEY there. It's injected at runtime and encrypted at rest.
One key per environment
SDK Configuration
Point your existing OpenAI or Anthropic SDK at Ingate by changing the base URL. No proprietary SDK required. Ingate is a drop-in proxy.
Python
import openai
client = openai.OpenAI(
base_url="https://api.ingateai.com/v1",
api_key="sk-ingate-your-key-here", # or os.environ["INGATE_API_KEY"]
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello from Ingate"}],
)
print(response.choices[0].message.content)import anthropic
client = anthropic.Anthropic(
base_url="https://api.ingateai.com",
api_key="sk-ingate-your-key-here",
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello from Ingate"}],
)
print(message.content[0].text)TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.ingateai.com/v1",
apiKey: process.env.INGATE_API_KEY,
});
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Hello from Ingate" }],
});
console.log(response.choices[0].message.content);import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.ingateai.com",
apiKey: process.env.INGATE_API_KEY,
});
const message = await client.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello from Ingate" }],
});
console.log(message.content[0].text);Provider auto-detection
/v1/chat/completions routes to OpenAI, /v1/messages routes to Anthropic. No extra headers needed.Coding Agent Setup
Route your AI coding tools through Ingate by setting environment variables. Ingate auto-detects the provider from the request path, so you only need to change the base URL with no extra headers or configuration required.
Claude Code
# Set in your shell profile (.bashrc, .zshrc, etc.)
export ANTHROPIC_BASE_URL=https://api.ingateai.com
export ANTHROPIC_API_KEY=sk-ingate-your-key-here
# Then launch Claude Code as normal
claudeCursor
In Cursor settings, configure the API endpoint for your model provider:
# For OpenAI models in Cursor
OPENAI_BASE_URL=https://api.ingateai.com
OPENAI_API_KEY=sk-ingate-your-key-here
# For Anthropic models in Cursor
ANTHROPIC_BASE_URL=https://api.ingateai.com
ANTHROPIC_API_KEY=sk-ingate-your-key-hereAider
# Route Aider through Ingate
export OPENAI_API_BASE=https://api.ingateai.com/v1
export OPENAI_API_KEY=sk-ingate-your-key-here
aider --model gpt-4oPi / GSD
# Set in your shell profile
export ANTHROPIC_BASE_URL=https://api.ingateai.com
export ANTHROPIC_API_KEY=sk-ingate-your-key-here
# Pi picks up the env vars automatically
piAuth passthrough mode
X-Ingate-Key alongside the tool's native auth header to enable this.Health & Status
Monitor Ingate availability from your application or infrastructure monitoring.
Health Endpoint
# Returns 200 when healthy, 503 when degraded
curl https://api.ingateai.com/healthz{
"status": "ok",
"timestamp": "2026-04-04T11:15:00Z"
}Use this endpoint in your deployment health checks to verify Ingate connectivity before your application starts accepting traffic:
# Startup check in your entrypoint script
until curl -sf https://api.ingateai.com/healthz > /dev/null; do
echo "Waiting for Ingate..."
sleep 2
done
echo "Ingate is reachable. Starting app."
exec node server.jsStatus Page
Real-time uptime, incident history, and scheduled maintenance are published at:
https://status.ingateai.comSubscribe to the status page for email or webhook notifications on incidents and maintenance windows.
SLA & Infrastructure
| Plan | Uptime SLA | Support | Infrastructure |
|---|---|---|---|
| Free | Best effort | Community | Shared, single region |
| Enterprise | 99.9% | Dedicated support + Slack channel | Multi-region, automatic failover |
Enterprise infrastructure runs across multiple regions with automatic failover. Requests are routed to the nearest healthy region. If a region goes down, traffic shifts to the next-closest region with no action required on your part.
Enterprise SLA
Migration from Direct API Calls
Switching from direct provider API calls to Ingate takes minutes. Here's the checklist:
Migration Checklist
- Create an Ingate account. sign up at
api.ingateai.comand note your API key - Change the base URL. point your SDK or HTTP client at
https://api.ingateai.cominstead of the provider's URL - Swap the API key. replace your provider API key with your Ingate key (or use auth passthrough to keep both)
- Remove provider-specific headers. Ingate detects the provider from the request path, so
X-Ingate-Provideris optional for standard OpenAI and Anthropic paths - Test in staging. verify that requests succeed and responses match your expected format
- Deploy to production. roll out the base URL and key change
- Verify in the Ingate dashboard. confirm requests appear in the audit log with correct provider routing
Before & After
# BEFORE: Direct OpenAI call
import openai
client = openai.OpenAI(
api_key="sk-openai-your-key",
# Uses default base_url: https://api.openai.com/v1
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}],
)# AFTER: Through Ingate (two lines changed)
import openai
client = openai.OpenAI(
api_key="sk-ingate-your-key-here", # Changed
base_url="https://api.ingateai.com/v1", # Added
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}],
)
# Response format is identical, no code changes needed downstreamZero response format changes
Auth Passthrough (Gradual Migration)
If you want to keep using your own provider API key while gaining Ingate's logging and guardrails, use auth passthrough. Send both your provider key and your Ingate key:
curl https://api.ingateai.com/v1/chat/completions \
-H "Authorization: Bearer sk-openai-your-provider-key" \
-H "X-Ingate-Key: sk-ingate-your-key-here" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'In passthrough mode, Ingate forwards your provider key to the upstream API while still applying your organization's budgets, guardrails, and audit logging. This lets you migrate incrementally. Start with observability, then optionally switch to Ingate-managed provider keys later.