Platform

Which AI providers does Cognocient support?

Cognocient proxies 10 provider types through a single base_url — including AWS Bedrock, Google Vertex AI, and any OpenAI-compatible server (Ollama, vLLM). Change the model name to switch providers — no separate SDK, no re-authentication, no new keys.

In the app: Settings → AI Providers · every planOpen in app →No account? Start free

Cognocient proxies 10 provider types — OpenAI, Anthropic, Google Gemini, Mistral, Groq, Together AI, Azure OpenAI, AWS Bedrock, Google Vertex AI, and any OpenAI-compatible server as a custom endpoint — through a single base_url. Change the model name to switch providers with no separate SDK, no re-authentication, and no new keys.

Beyond chat: other endpoints and providers

Cognocient also proxies these OpenAI-compatible endpoints, with the same budgets, guardrails, freeze and cost tracking as chat:

EndpointProvidersDocs
/v1/chat/completions, /v1/responsesAll chat providers aboveResponses API
/v1/embeddings, /v1/images/generationsOpenAI, Azure, Gemini (see above)
/v1/audio/transcriptions, /v1/audio/translations, /v1/audio/speechOpenAI, GroqAudio and rerank
/v1/rerankCohere, Jina, VoyageAudio and rerank
/v1/files, /v1/batchesOpenAI (Growth plan)Batch API
/mcp/<server>Your MCP servers (Business plan)MCP gateway

Cohere, Jina and Voyage are added like any provider under Settings → AI Providers and are used only for reranking.

Growth and above can add extra keys per provider for multi-key balancing, and Business can keep keys in AWS Secrets Manager, Vault or Azure Key Vault.

Provider overview

ProviderSupported modelsModel name prefix
OpenAIGPT-4o, GPT-4o-mini, o1, o3gpt-, o1, o3
AnthropicClaude 3.5 Haiku, Sonnet, Claude 4 familyclaude-
Google GeminiGemini 1.5, 2.0 Flash, 2.5 Progemini-
Mistral AILarge, Nemo, Codestral, Mixtral 8x22Bmistral-, open-
GroqLlama 3.1/3.3 70B, Gemma 2, Mixtralllama, mixtral, gemma (via Groq)
Together AILlama 3.1, DeepSeek, Qwen, 100+ OSS modelsFull Together AI model names
Azure OpenAIGPT-4o, GPT-4 via Azure deploymentsConfigured via deployment name in Settings
AWS BedrockClaude, Amazon Nova, Llama, Mistral (Bedrock-hosted)Vendor-namespaced IDs, e.g. anthropic.claude-..., amazon.nova-...
Google Vertex AIGemini (Vertex-hosted)vertex/ prefix, e.g. vertex/gemini-2.0-flash-001
Custom (OpenAI-compatible)Ollama, vLLM, LM Studio, llama.cpp, any OpenAI-compatible servercustom/ prefix, e.g. custom/llama3.1

One client, all providers

All providers use the same base_url. Cognocient detects the provider from the model name and handles any format translation automatically. Switch from GPT-4o to Claude by changing one string.

Quick setup

Replace your api_key and base_url — that's the only change needed.

Image generation

/v1/images/generations is proxied the same way as chat and embeddings — same base URL, same proxy key, full budget/velocity/attribution coverage. Unlike chat and embeddings, image models are priced per-image rather than per-token (see Guardrails → Dollar-denominated velocity for why that needed its own velocity check).

response = client.images.generate(
    model="dall-e-3",
    prompt="a watercolor fox in a forest",
    size="1024x1024",
    quality="standard",
    n=1,
)
ProviderModelsNotes
OpenAIdall-e-3, dall-e-2, gpt-image-1Full support
Google Geminiimagen-3, imagen-4Request/response translation to Imagen's native API — newer than the rest of this proxy's Gemini support and not yet exercised against high production volume

Cognocient's own free/trial cost caps track image spend the same as everything else — a handful of hd-quality images can outweigh a large batch of small chat calls, since pricing here is per-image, not per-token.

Native Anthropic SDK

If you use the Anthropic Python or TypeScript SDK directly (not via the OpenAI SDK), the base URL is slightly different — omit /v1:

The /v1 suffix applies to the OpenAI SDK route. For the native Anthropic SDK, use https://api.cognocient.com without a path suffix. Both routes work for routing to Anthropic models.

Switching providers at runtime

All providers share the same client — switch by changing the model name:

from openai import OpenAI
 
client = OpenAI(api_key="sk-cog-YOUR-KEY", base_url="https://api.cognocient.com/v1")
 
def call_ai(prompt: str, model: str = "gpt-4o-mini"):
    return client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        extra_headers={"X-Cost-Feature": "ai-router"}
    )
 
# Route to any provider dynamically
call_ai("Hello", model="gpt-4o-mini")            # OpenAI
call_ai("Hello", model="claude-sonnet-4-6")       # Anthropic
call_ai("Hello", model="gemini-2.0-flash")        # Google

AWS Bedrock

Add your AWS Access Key ID and Secret Access Key (plus the region your model access is enabled in) in Settings → AI Providers. Bedrock is detected automatically from the model ID — no prefix needed:

# Bedrock — detected from the vendor-namespaced model ID
response = client.chat.completions.create(
    model="anthropic.claude-3-5-sonnet-20241022-v2:0",
    messages=[{"role": "user", "content": "Hello"}],
)
 
response = client.chat.completions.create(
    model="amazon.nova-pro-v1:0",
    messages=[{"role": "user", "content": "Hello"}],
)

Requests are signed with AWS Signature Version 4 and sent to Bedrock's Converse API — tool/function calling is supported.

Streaming (stream: true) works too: Cognocient calls Bedrock's ConverseStream API, decodes AWS's binary event-stream, and returns standard OpenAI-format server-sent events, including streamed tool calls and a final usage chunk.

Google Vertex AI

Add your GCP service-account JSON key (plus your project ID and region) in Settings → AI Providers. Unlike Bedrock, Vertex AI's Gemini model IDs look identical to direct Gemini API model IDs, so a vertex/ prefix tells Cognocient which key to bill against:

# Vertex AI — the vertex/ prefix routes here instead of a direct Gemini key
response = client.chat.completions.create(
    model="vertex/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Hello"}],
)

Vertex AI's own OpenAI-compatible endpoint handles the request, so no request/response translation is needed — streaming and tool calling both work the same as the direct Gemini and OpenAI routes.

Custom OpenAI-compatible endpoints

Route to any server that speaks the OpenAI chat-completions API: Ollama, vLLM, LM Studio, llama.cpp's server, a LiteLLM gateway, or another vendor's OpenAI-compatible API. Add it in Settings → AI Providers → Custom:

FieldNotes
Base URLe.g. https://llm.example.com/v1. Cognocient appends /chat/completions (a URL already ending in it is used as-is).
API keyOptional. Many self-hosted servers don't authenticate; leave it blank and no Authorization header is sent.
$ / 1M input, outputOptional. Your own effective rates (for example amortised GPU cost).

Send custom/<model> as the model. The custom/ prefix selects your endpoint and is removed before the request is forwarded:

response = client.chat.completions.create(
    model="custom/llama3.1",   # sent to your server as "llama3.1"
    messages=[{"role": "user", "content": "Hello"}],
)

Streaming works. Cognocient asks the server for a final usage chunk (stream_options.include_usage) so tokens can be counted; servers that don't send one are tracked without token counts.

Cost tracking

Self-hosted models have no list price, so calls are recorded at $0 unless you enter your own per-1M-token rates. They still appear everywhere else: volume, latency, features, departments, budgets by count. Cognocient does not apply its generic fallback price to them, so a free local model never shows invented spend. Waste and model-mismatch detection don't apply to custom endpoints, since there are no price tiers to compare.

Your endpoint must be public HTTPS

Cognocient calls your endpoint from its cloud servers, so it has to be reachable from the internet over https://. To protect against server-side request forgery, URLs that resolve to localhost, private networks (10.x, 192.168.x, 172.16-31.x), link-local or cloud-metadata addresses, or that contain embedded credentials are rejected: when you save, and again on every request. To use a model running on your own machine or network, expose it through a tunnel (Cloudflare Tunnel, ngrok, Tailscale Funnel) or a reverse proxy with TLS, and protect it with an API key.

You can configure one custom endpoint per account. Its model names are yours to choose, so run several models behind the one endpoint (Ollama and vLLM both serve many).

Adding your provider API keys

Your provider keys are stored encrypted in Cognocient. Configure them once in Settings → AI Providers:

  1. Go to Settings → AI Providers
  2. Click Add another provider for each additional provider
  3. Paste your provider API key — it is encrypted before being stored
  4. All requests to that provider now use this key automatically

You only need to configure each provider once. To rotate a key, paste the new one and the old is replaced immediately.

Keys are not recoverable after saving

Cognocient does not re-expose stored provider keys. Store your provider keys in a secrets manager independently of Cognocient.

Azure OpenAI: tell us the underlying model if your deployment name doesn't match it

Azure resolves which model actually answers a call purely from your deployment name in the URL — the model field your application sends in the request body is not authoritative, and Azure itself effectively ignores it for routing.

If you named your deployment something like my-prod-deployment rather than the model name itself, Cognocient has no way to know which real model that maps to unless you tell it. When adding or editing your Azure key in Settings → AI Providers, fill in the Underlying Model field (e.g. gpt-4o) — Cognocient uses that value for cost calculation instead of trusting whatever string your application happens to send.

Leave it blank if your deployment name already matches the model name exactly — Cognocient falls back to the request's own model field in that case, same as before.

Frequently asked questions