Key features
Making requests
Use the OpenAI SDK unchanged: chat, completions, embeddings, responses, streaming.
Anthropic Messages API
Call
/v1/messages in Anthropic format and serve it from any provider.Providers
Connect providers from OpenAI and Bedrock to vLLM and Ollama.
Virtual models
Expose a routing config under a model name your clients can call directly.
Routing and fallback
Fallback, load balancing, canary, conditional and latency-based routing.
Auto routing
Classify each turn’s complexity and send it to the right tier of model.
Caching
Exact and semantic response caching, keyed on the redacted request.
Async requests
Queue completions with
/v1/async/*, poll for the result or get a webhook.Access control
Roles, team model allow-lists and provider account access.
Rate limits
Request and token limits per minute, hour or day at every level.
Budgets
Spending caps in USD or tokens; the most restrictive one wins.
Guardrails
Validate and mutate inputs and outputs with built-in or custom checks.
PII redaction
Redact personal data before it reaches a provider, with an optional reversible vault.
Prompt injection
Score prompts for injection attempts and audit or block them.
Tracing
Send OpenTelemetry traces to your own collector per workspace.
Metrics
Prometheus metrics for requests, tokens, cache, policy and upstream health.
Self-hosting
Run the gateway, workspace and deployer services on your own infrastructure.
Supported providers
Each provider type has an adapter or an OpenAI-wire passthrough. Passthrough providers receive the request body unchanged, so the provider’s own API decides what it accepts. Register them in the console under Providers, or declare them ingateway.yaml when you self-host.
| Family | provider_type values |
|---|---|
| OpenAI and Azure OpenAI | openai, azure |
| Anthropic | anthropic, aws_claude_platform |
gemini, vertex | |
| Amazon | bedrock, bedrock_mantle, sagemaker |
| Data platforms | databricks, snowflake_cortex, cloudera |
| Other native adapters | cohere, typesafe |
| Hosted open-model inference (OpenAI wire) | mistral, groq, deepseek, together, perplexity, xai, fireworks, openrouter, deepinfra, baseten, cerebras, ai21, sambanova, wafer |
| Your own servers (vLLM, TGI, LM Studio, Ollama, …) | self_hosted, ollama |
| Speech only | elevenlabs, deepgram, cartesia, smallest |
For adapters that translate to a native API (such as Anthropic, Gemini, Vertex, Bedrock, Cohere and TypeSafe), the gateway checks each request parameter it cannot translate faithfully, such as
n, seed or response_format, and returns 400 unsupported_parameter naming that parameter. It never drops the parameter silently. TypeSafe requires response_format with a JSON schema.Supported APIs
On ManyLayers Cloud every endpoint lives underhttps://app.manylayers.io/v1 and accepts Authorization: Bearer <key>. A self-hosted gateway serves the same paths on your own host.
| Endpoint | Method | Notes |
|---|---|---|
/v1/chat/completions | POST | OpenAI Chat Completions, streaming supported |
/v1/completions | POST | Legacy text completions |
/v1/embeddings | POST | Embeddings |
/v1/responses | POST | OpenAI Responses API, stateless; translated to chat so it works with every chat provider |
/v1/messages | POST | Anthropic Messages format, including SSE, served by any chat provider |
/v1/models, /v1/models/{model} | GET | Models the caller can use |
/v1/async/chat/completions, /v1/async/completions | POST | Enqueue a job |
/v1/async/jobs/{id} | GET | Poll a queued job |
/v1/realtime | GET (WebSocket) | Realtime API, openai and azure only; pass ?model= |
/v1/images/generations, /edits, /variations | POST | openai and azure only |
/v1/audio/speech, /transcriptions | POST | openai, azure, elevenlabs, deepgram, cartesia, smallest |
/v1/audio/translations | POST | openai and azure only |
/v1/moderations | POST | Passthrough to openai/azure, built-in fallback otherwise |
/v1/rerank | POST | Translated for Cohere, passthrough for OpenAI-wire providers |
/v1/files, /v1/fine_tuning/jobs | GET, POST, DELETE | openai and azure only; pick the model with X-ManyLayers-Model or ?model= |
/v1/systemone | POST | TypeSafe’s native System One call |
/v1/kb, /v1/docsets | GET, POST, PUT, DELETE | Knowledge bases and document sets |
/v1/assistants, /v1/threads, /v1/vector_stores, /v1/conversations, /v1/containers, /v1/uploads, /v1/evals, /v1/organization) are refused with 404 unsupported_endpoint in the standard OpenAI error envelope, and so is any other unrouted path under /v1. The gateway also serves /health, /healthz, /ready, /readyz, /version and /metrics.
Next steps
Quick Start
Add a provider, create a key and send your first request.
Authentication
API keys, personal access tokens, virtual accounts and OIDC.
Providers
Configure each provider type in detail.