Providers

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.

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

ProviderClient wire formatUpstreamTypical model ids
AnthropicAnthropic Messagesapi.anthropic.comclaude-opus-4-7, claude-sonnet-4, claude-haiku-4
OpenAIOpenAI Chat Completionsapi.openai.comgpt-5.6-terra, gpt-5.6-sol, gpt-5.6-luna
Amazon BedrockAnthropic Messages or OpenAI Chat Completionsbedrock-mantle.<region>.api.awsanthropic.claude-sonnet-5, openai.gpt-oss-120b, qwen.qwen3-235b-a22b-2507
Google GeminiOpenAI Chat Completionsgenerativelanguage.googleapis.comgemini-3.6-flash, gemini-2.5-flash-image
Google Vertex AIOpenAI Chat Completions<region>-aiplatform.googleapis.com (your project)google/gemini-2.5-flash, google/gemini-2.5-pro
Kimi (Moonshot K2)OpenAI Chat Completionsapi.moonshot.ai/v1kimi-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>/v1
Warning
The workspace id in the URL is load-bearing

Use the workspace-scoped base URL. It is the form that guarantees your workspace's own policy travels with every request, on every transport. Your workspace id is on the dashboard next to your API key.

Adding 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.

  1. The X-Sentisec-Upstream-Provider header, 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.

  2. 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.

  3. The model id, by prefix:

    Model id starts withProvider
    claude-Anthropic
    gpt-, o1, o3OpenAI
    anthropic., openai., qwen., mistral., google., amazon., nvidia., writer., minimax., zai., and the eu. / us. / global. inference-profile formsAmazon Bedrock, when the workspace holds a Bedrock credential
    gemini-Google Gemini
    kimi-, moonshot-Kimi
Info
Vertex is never inferred from the model id

Vertex model ids are publisher-prefixed (google/gemini-2.5-flash), a shape that overlaps other providers' naming, so Sentisec will not guess. Pin it explicitly with X-Sentisec-Upstream-Provider: vertex. Full detail on the Vertex page.

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

ResponseMeaningFix
503 provider_unavailableSentisec does not carry traffic for that provider.Use one of the six above, or tell us what you need.
401 / 402 no_upstream_credentialThe 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_invalidThe X-Sentisec-Upstream-Provider value is not a known provider name.Check the spelling against the list above.
400 bedrock_credential_missingThe 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_providerThat 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.

Protected docs