Providers
The model providers Sentisec carries traffic for, how to connect one, and how Sentisec picks a provider for each request.
Sentisec sits between your agent and the model provider it already talks to. You bring your own provider key, change one base URL, and every request runs through the integrity engine on its way upstream — in the provider's own wire format, returning the provider's own response shape.
Six providers carry traffic today.
Anthropic
Claude on the Anthropic Messages API. Claude Code works unchanged.
OpenAI
GPT and the o-series on Chat Completions.
Amazon Bedrock
The Bedrock catalogue with a Bedrock API key and a region.
Google Gemini
Gemini with an AI Studio API key. Routes automatically.
Google Vertex AI
Gemini on Vertex with a Google Cloud service account.
Kimi (Moonshot K2)
Moonshot's K2 family on the OpenAI-compatible wire.
If you use Claude Code or Codex on a subscription rather than an API key, you do not need a provider credential at all — see subscription mode.
What each provider gives you
| Provider | Client wire format | Upstream | Typical model ids |
|---|---|---|---|
| Anthropic | Anthropic Messages | api.anthropic.com | claude-opus-4-7, claude-sonnet-4, claude-haiku-4 |
| OpenAI | OpenAI Chat Completions | api.openai.com | gpt-5.6-terra, gpt-5.6-sol, gpt-5.6-luna |
| Amazon Bedrock | Anthropic Messages or OpenAI Chat Completions | bedrock-mantle.<region>.api.aws | anthropic.claude-sonnet-5, openai.gpt-oss-120b, qwen.qwen3-235b-a22b-2507 |
| Google Gemini | OpenAI Chat Completions | generativelanguage.googleapis.com | gemini-3.6-flash, gemini-2.5-flash-image |
| Google Vertex AI | OpenAI Chat Completions | <region>-aiplatform.googleapis.com (your project) | google/gemini-2.5-flash, google/gemini-2.5-pro |
| Kimi (Moonshot K2) | OpenAI Chat Completions | api.moonshot.ai/v1 | kimi-k2.7-code, kimi-k3, kimi-k2.6 |
Streaming and tool calling work on every one of them. The response body your client receives is the upstream provider's native shape — Sentisec does not rewrite it, except when a tool call is blocked (what a block looks like).
On the OpenAI wire, both /v1/chat/completions and /v1/responses
evaluate tool calls; embeddings are relayed and recorded. See
OpenAI.
Connect a provider
Get a provider key from the vendor — an Anthropic or OpenAI API key, a Bedrock API key, a Google AI Studio key, a Google Cloud service account, or a Moonshot key.
Store it in your workspace. In the dashboard, open Settings → Providers and, under Provider keys, choose Add … key on the provider's card. The key is encrypted at the dashboard before it is stored, so the plaintext never lands in the database or in a log; it is decrypted only inside the request path — see keys management.
Mint a Sentisec API key. Settings → API keys → Issue key. Format:
sk_sentisec_<8>_<32>. This is the key your client sends to
Sentisec; your provider key never leaves the workspace.
Point your client at your workspace endpoint.
# Anthropic-shaped clients
https://api.sentisec.ch/ws/<your-workspace-id>
# OpenAI-shaped clients (note the /v1 suffix)
https://api.sentisec.ch/ws/<your-workspace-id>/v1Adding a credential takes effect on the next request. There is no restart and no waiting period.
How Sentisec picks a provider for a request
For each request, Sentisec resolves an upstream provider from three inputs. The header always wins; the other two apply when it is absent.
-
The
X-Sentisec-Upstream-Providerheader, if you set one. Accepted values for the live providers:anthropic,openai,bedrock,gemini,vertex,kimi. This header is consumed by Sentisec and stripped before the request is forwarded upstream — the provider never sees it. -
Your workspace's default provider, if one is configured for you. It applies only to providers that serve the wire format the request arrived on, so an Anthropic default never captures an OpenAI-shaped call.
-
The model id, by prefix:
Model id starts with Provider claude-Anthropic gpt-,o1,o3OpenAI anthropic.,openai.,qwen.,mistral.,google.,amazon.,nvidia.,writer.,minimax.,zai., and theeu./us./global.inference-profile formsAmazon Bedrock, when the workspace holds a Bedrock credential gemini-Google Gemini kimi-,moonshot-Kimi
Rules 2 and 3 are weighed in a different order on the two wire formats: an OpenAI-shaped request consults the workspace default first, an Anthropic-shaped request consults the prefix table first. Setting the header is always safe, outranks both on every route, and is the right answer whenever your model id is an alias, a name the prefix table does not cover, or a Bedrock id on a workspace that also holds the vendor's own key.
Discovering models
GET https://api.sentisec.ch/ws/<your-workspace-id>/v1/models lists the
catalogue for the providers Sentisec carries. Model ids outside that
catalogue still dispatch when the prefix routes them — the catalogue is
a discovery aid for model pickers, not an allowlist.
Embeddings
POST .../v1/embeddings is available on OpenAI and Google
Gemini (gemini-embedding-001). It is a capture-only passthrough:
the request relays verbatim and the usage is recorded, because an
embedding is not an action there is anything to gate. Any other
provider returns 404 embeddings_not_supported_for_provider.
Errors you may see
| Response | Meaning | Fix |
|---|---|---|
503 provider_unavailable | Sentisec does not carry traffic for that provider. | Use one of the six above, or tell us what you need. |
401 / 402 no_upstream_credential | The provider is available, but this workspace has no key stored for it. | Open the request under Requests: its row shows No provider key with an Add … key action (for example Add Kimi K2 key) that opens Settings → Providers with that provider selected under Provider keys. The direct link is /w/<workspace-id>/settings/upstreams?provider=<provider> — for example ?provider=kimi. |
400 upstream_provider_header_invalid | The X-Sentisec-Upstream-Provider value is not a known provider name. | Check the spelling against the list above. |
400 bedrock_credential_missing | The model id is an Amazon Bedrock id, but this workspace has no Bedrock credential and no other key that could serve it. | Add a Bedrock API key and its region under Settings → Providers, in Provider keys — see Amazon Bedrock. |
404 embeddings_not_supported_for_provider | That vendor has no OpenAI-shaped embeddings endpoint. | Use OpenAI or Gemini for embeddings. |
The full diagnostic walkthrough is in Provider unavailable.
Not available yet
Azure OpenAI does not carry traffic today. If it is a requirement for your deployment, get in touch — see Azure OpenAI.
What every provider gets
Whichever provider serves a request:
- The integrity engine runs on the request and on any tool calls inside an agent loop, before they reach your tools.
- The session, the verdict, and any forensic evidence land in your workspace record and stream to the dashboard live.
- Your workspace's protection mode applies — shadow records what would have happened, enforce blocks it.
Sentisec scores what the session is doing, not which model produced it, so switching providers does not change what is protected.
Related
- Quickstart — first protected call in 60 seconds
- Integrations — framework-level wiring
- CLI agents — Claude Code, Codex, Cursor, opencode
- Keys management — how credentials are stored
- Dashboard — sessions, verdicts, forensic evidence
Sentisec vs. the alternatives
Where Sentisec overlaps LLM gateways, content filters, and API gateways — where it does not, and what you give up by picking one over another.
Anthropic
Point any Anthropic-shaped client at Sentisec. Claude Code, the Anthropic SDKs, custom clients — all work with one base-URL change.