Claude API SSO: Single Sign-On Setup Guide
If you're searching for "Claude API SSO single sign-on setup," you're probably trying to do one of two things: let your team log into Anthropic's Console with your company identity provider, or centrally control who can call the Claude API without handing out raw keys one by one. These are different problems with different solutions, and understanding the distinction will save you hours of searching for a setting that doesn't exist.
The short answer: the Claude API itself authenticates with API keys, not SSO. There's no OAuth/SAML login flow for making API calls — every request needs an x-api-key header or equivalent bearer token. SSO (SAML/OIDC) exists at the human-login layer, specifically for Anthropic Console access on Enterprise plans, and separately, for any dashboard or gateway you put in front of the API yourself. Below is how each piece actually works and how to build the access-control setup most teams are really after.
SSO in the Anthropic Console (human login, not API auth)
If your organization is on an Anthropic Enterprise agreement, you can typically configure SAML or OIDC-based SSO so employees log into the Console with your identity provider (Okta, Azure AD, Google Workspace, etc.) instead of individual passwords. This controls:
- Who can view billing and usage in the Console
- Who can create or revoke organization-level API keys
- Admin role assignment within the organization
This is identity governance for the people who manage the account, not a mechanism your application uses when it calls api.anthropic.com. Setup is done through Anthropic's enterprise onboarding process — it's not a self-service toggle in a free or pay-as-you-go account, and it has nothing to do with how your backend authenticates requests.
Why SSO doesn't extend to API keys
This is the part that trips people up. Even with Console SSO fully configured, your application still needs a static API key to call the Messages API. SSO governs human access to the dashboard; it does not issue short-lived, identity-bound tokens for programmatic calls the way SSO does for, say, logging into a SaaS app. There's no built-in concept of "this specific employee's SSO session is now authorized to hit the Claude API directly."
That means if your actual goal is "I want my team to use Claude through our company identity, with per-person audit trails and no shared secrets floating around," you need to build that layer yourself — or use a service that already has it.
Pattern: SSO-gated gateway in front of Claude
The practical way teams solve this is a thin proxy that:
- Verifies the caller's identity via your existing SSO/OIDC provider (session cookie or ID token)
- Maps that identity to a scoped, revocable credential
- Forwards the request to Claude using a single, centrally-managed API key
- Logs who made the call, with what prompt, and how many tokens it used
A minimal version looks like this in Node.js:
import jwt from 'jsonwebtoken';
async function handleRequest(req, res) {
// 1. Validate the SSO-issued ID token
const claims = jwt.verify(req.headers.authorization.split(' ')[1], JWKS_SECRET);
if (!claims.email.endsWith('@yourcompany.com')) {
return res.status(403).send('Not authorized');
}
// 2. Forward to Claude with your organization's key
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'x-api-key': process.env.CLAUDE_API_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json',
},
body: JSON.stringify(req.body),
});
// 3. Log claims.email alongside usage for audit purposes
logUsage(claims.email, response.headers);
return res.send(await response.text());
}
This works, but you own the identity verification, the key rotation, the rate limiting, the usage logging, and the seat management from here on. For a small internal tool that's fine. For a team that's scaling, it becomes its own maintenance project.
A faster path: team seats instead of building SSO from scratch
SubToAPI exists for exactly this gap — turning Claude access into a proper multi-user API without you writing the proxy above. Instead of SSO-gating a shared key, each team member gets their own scoped sub_live_... key under one dashboard, with usage tracked per seat. You get:
- Team and Scale plans with per-seat keys (€19/seat and €49/seat) instead of one shared secret everyone copies into
.envfiles - Centralized key creation and revocation, so offboarding someone means revoking their key, not rotating a shared one
- Usage metadata per key so you can see exactly who/what is consuming tokens
It's not a SAML/OIDC replacement for your identity provider, but it solves the actual problem most people mean when they say "SSO for the Claude API": one dashboard, one billing relationship, individually accountable access. Setup takes a few minutes — sign up, create keys per teammate, and point your existing integration at api.subtoapi.app following the quickstart. Request formats mirror Anthropic's Messages API closely, so migrating an existing integration is mostly a base-URL and header change — see the Messages docs for the exact shape.
If you still need identity-based gating on top (e.g., only @yourcompany.com emails can request a new key), you can keep that logic in your own signup flow or internal tooling while letting SubToAPI handle the key lifecycle, streaming, and billing underneath. Check pricing for seat costs across plans.
questions
Does Anthropic's Claude API support SSO login for making requests? No. The API authenticates with a static API key on every request. SSO (SAML/OIDC) is only available for human login to the Anthropic Console on enterprise agreements, not for programmatic API calls.
How do I give my whole team access to Claude without sharing one API key? Either build a gateway that authenticates users via your identity provider and forwards requests with a shared backend key, or use a service with native per-seat keys, like SubToAPI's Team plan, so each person has their own revocable credential.
Can I combine Console SSO with centralized API key management? Yes — Console SSO controls who can administer your Anthropic organization and billing, while a separate tool or proxy manages the actual API keys developers use day-to-day. These two layers are independent and typically configured separately.