ZuploZuplo
LoginStart for Free
  • Documentation
  • API Reference
Introduction
Getting Started
    Develop in the portal
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth4 - Deploy5 - Dynamic Rate LimitingDynamic MCP Server - Quickstart
    Develop locally with the CLI
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth4 - Deploy5 - Dynamic Rate LimitingDynamic MCP Server - Quickstart
Concepts
Development
Policies
Handlers
API Keys
Rate Limiting
Caching
MCP Server
MCP Gateway
AI Gateway
    IntroductionGetting StartedSource ControlUniversal API
    Providers
    Teams
    Apps
    Policies
    Cookbooks
    Integrations
Developer Portal
Monetization
GraphQL
Deploying & Source Control
Analytics
Observability
Networking & Infrastructure
Account Management
Programming API
Build with AI
Zuplo CLI
Migration Guides
Platform LimitsVersion Support PolicySecuritySupportTrust & ComplianceChangelog
powered by Zudoku
AI Gateway

AI Gateway Universal API

Zuplo AI Gateway provides a universal API that standardizes interactions with various AI providers. This API follows the OpenAI API specification, making it easy to integrate with existing apps that already use OpenAI's API.

Using the Universal API

Every AI Gateway app serves the Universal API. The app page in the portal shows each app's API URL, which ends in the app's ID—for example https://my-gateway-main-2e18f50.zuplo.app/config_fe0a04972d2848e0a94ae4b8bcd1497e. Client libraries expect a base URL ending in /v1, so append that suffix. When the gateway runs the authentication policy, send the app's API key as a bearer token.

Models are referenced as providerName/model, where providerName is the provider name configured in your gateway. This is how the gateway knows which provider to route each request to—and it means one app can use models from several providers through the same endpoint.

If you are using an SDK or library that supports custom base URLs, you can configure it to use your app's URL. For example, with the OpenAI Node.js SDK, you can set the baseURL option:

Code
import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.ZUPLO_APP_API_KEY, baseURL: "https://my-gateway-main-2e18f50.zuplo.app/config_fe0a04972d2848e0a94ae4b8bcd1497e/v1", }); const response = await client.chat.completions.create({ model: "openai/gpt-5-mini", messages: [ { role: "user", content: "Write a one-sentence bedtime story about a unicorn.", }, ], }); console.log(response.choices[0].message.content);

If the app's Model Filtering policy has an allow list, a request that omits model uses the first model in the list—so clients that can't set a model still work.

Supported endpoints

EndpointNotes
/v1/chat/completionsChat completions for every provider
/v1/embeddingsEmbeddings for every provider except Anthropic
/v1/responsesOpenAI Responses API, for OpenAI-backed providers
/v1/messagesAnthropic Messages API, for Anthropic-backed providers
Edit this page
Last modified on August 18, 2026
Source ControlOverview
On this page
  • Using the Universal API
  • Supported endpoints
TypeScript