The Guard API is the fourth option when none of these fit: you send the text, PromptGuard returns a decision, and your code calls the model.
LLM providers
OpenAI
Anthropic
Google Gemini
Azure OpenAI
AWS Bedrock
Mistral AI
Groq
DeepSeek
Cohere
Hugging Face
OpenRouter, Together, xAI and other OpenAI-compatible hosts
Ollama (self-hosted PromptGuard)
vLLM (self-hosted PromptGuard)
How the proxy picks a provider
The proxy reads themodel in your request body and nothing else. There is no provider parameter.
- A vendor namespace wins. A model id that starts with a namespace a provider owns, such as
azure/,bedrock/oropenrouter/, goes to that provider. The namespace is removed before the request is forwarded, because the vendor does not know it. - Otherwise the first provider that recognises the model family gets it.
claude-goes to Anthropic,gemini-to Gemini,gpt-and the o-series to OpenAI. Each provider page lists the families it claims. - A model no provider recognises is refused before anything is forwarded. It is never sent to OpenAI as a guess.
meta-llama/ model ids go to Groq, not Hugging Face.
Which credential is sent
On every proxy route,X-API-Key carries your PromptGuard key and Authorization carries the provider’s key, which PromptGuard forwards. If you have stored a provider key for the project, PromptGuard sends that one instead and your Authorization header is ignored. Each provider page shows the header the provider itself expects, so you do not need to translate it.