Canonical: https://botbento.com/blog/claude-user-profiles-isolate-customer-bans/
Format: Markdown representation of the public HTML page.

[Home](/) / [Blog](/blog/)

FIELD NOTES / 4 MIN READ

# Claude API User Profiles: Stop One Customer's Ban From Hitting Everyone

If your small team runs one Claude-powered bot for several clients, a safety violation by one client's users used to risk an enforcement action against your whole organization. Anthropic's new user profiles let you tag each request with an end-customer ID so a restriction or ban lands on that one profile, not your account. Here is what to set up, what it doesn't do yet, and how to check it.

By BotBento Editorial · Published 2026-10-29 · Updated 2026-10-29

AI-assisted editorial: researched and drafted with AI using the primary sources linked below. Examples are illustrative; they are not measured product results. [Editorial policy](/editorial/).

## In this article

- [The problem: one customer's violation can ban everyone](#one-bad-customer-problem)
- [What a Claude user profile actually does](#what-a-user-profile-does)
- [Worked example: an agency bot serving five clients](#worked-example-agency-five-clients)
- [Application profiles vs. passthrough profiles: which to use](#application-vs-passthrough-profiles)
- [Check enforcement by polling, not by assuming a webhook will tell you](#checking-enforcement-status)[Read as Markdown ](/text/blog/claude-user-profiles-isolate-customer-bans/index.md)

## Key takeaways

- Without a user profile on each request, Anthropic's automated safety classifiers can trigger an enforcement action against your whole organization because of one customer's traffic.
- Register each end customer once with POST /v1/user\_profiles and send the returned uprof\_ ID on every request made on their behalf; profiles are free and don't change pricing.
- Organization webhooks for enforcement events exist but are beta and permissioned to admins only, so poll the list endpoint's enforcement\_status filter rather than treating a webhook as your only signal.

## The problem: one customer's violation can ban everyone

If a small team builds one Claude-powered bot and resells it, or runs separate bot instances, for several clients, all of that traffic normally arrives at Anthropic under a single organization. Anthropic's documentation states the risk plainly: it runs automated safety classifiers over API traffic, and without a profile on the request, one end customer can trigger an enforcement action that applies to your whole organization.

That matters for a bot builder serving multiple clients through one Claude account. A single client's users sending abusive or policy-violating input, even unintentionally, could trip a classifier and pull an enforcement action onto every other client's traffic too, even though they did nothing wrong. Before this feature, the only way to avoid that exposure was to run a separate Anthropic organization per client, which is a heavier operational cost than most small teams want to carry.

Sources: [User profiles for end-customer attribution](https://platform.claude.com/docs/en/manage-claude/user-profiles).

## What a Claude user profile actually does

A user profile is a record you create once per end customer. You register it with POST /v1/user\_profiles and store the uprof\_ ID it returns, then send that ID in the anthropic-user-profile-id header on every request you make on that customer's behalf. When a safety enforcement action, such as a restriction or ban, lands on a profile, the rest of your traffic is unaffected.

Profiles aren't billable and don't affect pricing, so there's no cost reason to skip them. The same header works beyond the Messages API: it also applies to token counting, Message Batches and the OpenAI SDK compatibility endpoint, so a bot that uses any of those paths can carry the same customer tag through.

Sources: [User profiles for end-customer attribution](https://platform.claude.com/docs/en/manage-claude/user-profiles), [Create User Profile](https://platform.claude.com/docs/en/api/beta/user_profiles/create).

## Worked example: an agency bot serving five clients

Illustrative scenario. A two-person agency runs one Claude-powered support bot, deployed separately for five small-business clients, all under one Anthropic organization because that's simpler to bill and maintain. One client's end users start sending patterned, borderline-abusive messages that trip Anthropic's automated classifiers.

Without profiles, that traffic is indistinguishable from the agency's other four clients' traffic at the organization level, so an enforcement action risks restricting the whole account, and all five clients lose service at once. With profiles in place, the agency tagged each client's requests with a separate anthropic-user-profile-id when it onboarded them, using the create-profile call once per client at signup. The enforcement action lands on that one profile. The other four clients' bots keep running without interruption, and the agency can see exactly which profile is restricted rather than guessing which client caused the problem.

The only setup cost was doing the registration up front, at onboarding, rather than after a problem occurs. A profile created after an incident doesn't retroactively protect the traffic that already happened.

Sources: [Create User Profile](https://platform.claude.com/docs/en/api/beta/user_profiles/create).

## Application profiles vs. passthrough profiles: which to use

Anthropic's documentation splits profiles into two kinds by who the traffic is for. A signed-up user of your own product gets one profile each, created when they sign up, under the default access\_type of application. A company you resell API access to, such as the agency in the example above reselling to its own clients, gets one profile per company, not per person inside that company, and you have to set access\_type to passthrough explicitly because it isn't the default.

Your own organization's traffic needs no profile at all: Anthropic counts a request with no profile ID as your own usage, and the guidance is to keep that usage in a separate organization from end-customer traffic. For a small-team bot builder, the practical rule is: if the traffic belongs to someone you bill separately, whether a person or a company, it gets a profile, created at the moment you onboard them, not after something goes wrong.

Sources: [User profiles for end-customer attribution](https://platform.claude.com/docs/en/manage-claude/user-profiles), [Create User Profile](https://platform.claude.com/docs/en/api/beta/user_profiles/create).

## Check enforcement by polling, not by assuming a webhook will tell you

Anthropic added enforcement\_status and enforcement\_actions fields to the list and retrieve endpoints so you can see whether a given profile is unrestricted, pending, restricted or banned, and the list endpoint supports filtering by enforcement\_status so you can pull just the profiles with an open action. These fields are absent under the older user-profiles-2026-09-04 and earlier beta headers, so if your integration still sends an old header, upgrade it before relying on this check.

Anthropic also offers organization webhooks that fire when a profile is restricted or banned, and when that restriction ends. But only organization members with the admin, owner, or primary owner role can create, change or delete a webhook endpoint or replace its signing secret, and management happens through the separate Admin API rather than the main API key most bots use day to day.

For a small team, the practical decision is to not build your incident response around webhook delivery alone. Poll the list endpoint with the enforcement\_status filter on a schedule, reconcile what you find against your own local view of each client's status, and treat a webhook, once you've set one up with the right admin role, as a faster notice rather than your only source of truth.

Sources: [List User Profiles](https://platform.claude.com/docs/en/api/user_profiles/list), [Organization webhooks](https://platform.claude.com/docs/en/manage-claude/organization-webhooks).

## Primary sources

Sources checked 2026-10-29. Standards and product documentation can change; follow the linked version when implementing.

- [User profiles for end-customer attribution](https://platform.claude.com/docs/en/manage-claude/user-profiles) — Claude Platform Docs
- [List User Profiles](https://platform.claude.com/docs/en/api/user_profiles/list) — Claude API Reference
- [Organization webhooks](https://platform.claude.com/docs/en/manage-claude/organization-webhooks) — Claude Platform Docs
- [Create User Profile](https://platform.claude.com/docs/en/api/beta/user_profiles/create) — Claude API Reference

BotBento is in development. [Suggest a correction](/contact/).
