Skip to content
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Menu

Ecosystem

Last updated March 8, 2026

AI Gateway integrates with the AI development ecosystem you use. Whether you're building with LangChain, LlamaIndex, or other popular frameworks, connect through compatible APIs and get unified billing, observability, and model access.

These popular frameworks work through Chat Completions endpoints or native integrations:

FrameworkLanguageIntegration typeUse case
LangChainPython/JSChat CompletionsChains, agents, RAG pipelines
LlamaIndexPythonNative packageKnowledge assistants, document Q&A
MastraTypeScriptNativeAI workflows and agents
Pydantic AIPythonNativeType-safe agents, structured outputs
LiteLLMPythonNative prefixUnified LLM interface
LangfuseAnyObservabilityLLM analytics and tracing

Connect LangChain through the Chat Completions endpoint:

from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI(
    model="anthropic/claude-opus-4.6",
    api_key=os.getenv("AI_GATEWAY_API_KEY"),
    base_url="https://ai-gateway.vercel.sh/v1"
)
 
response = llm.invoke("Explain RAG in one sentence")

Use the dedicated llama-index-llms-vercel-ai-gateway package:

pip install llama-index-llms-vercel-ai-gateway
from llama_index.llms.vercel_ai_gateway import VercelAIGateway
 
llm = VercelAIGateway(
    model="anthropic/claude-opus-4.6",
    api_key=os.getenv("AI_GATEWAY_API_KEY")
)

Pydantic AI has a native VercelProvider for type-safe AI agents:

from pydantic_ai import Agent
from pydantic_ai.providers.vercel import VercelProvider
 
agent = Agent(
    VercelProvider(model="anthropic/claude-opus-4.6"),
    system_prompt="You are a helpful assistant"
)
 
result = agent.run_sync("What is the capital of France?")

See the Framework Integrations documentation for complete setup guides.

Stripe Billing integrates Stripe's metered billing with AI Gateway. Add two headers to your requests and the gateway automatically emits meter events for input and output tokens on every successful response.

const gateway = createGateway({
  headers: {
    'stripe-customer-id': process.env.STRIPE_CUSTOMER_ID,
    'stripe-restricted-access-key': process.env.STRIPE_RESTRICTED_ACCESS_KEY,
  },
});

Works with the AI SDK, OpenAI Chat Completions API, and Anthropic Messages API. See the Stripe Billing guide for full setup instructions.

App Attribution lets you identify your application in requests. When you include attribution headers, Vercel can feature your app—increasing visibility for your project.

Add attribution to your requests:

const response = await fetch('https://ai-gateway.vercel.sh/v1/chat/completions', {
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'X-Vercel-AI-App-Name': 'My AI App',
    'X-Vercel-AI-App-Url': 'https://myaiapp.com',
  },
  // ... request body
});

Attribution is optional—your requests work normally without these headers.


Was this helpful?

supported.