Claude Platform Docs

User Profiles

Create User Profile
$client->beta->userProfiles->create(?AccessType accessType, ?string externalID, ?BetaUserProfileExternalUserDetailsParams externalUserDetails, ?\Datetime externalUserOnboardedAt, ?array<string,string> metadata, ?string name, ?list<AnthropicBeta> betas, ?string workspaceID): BetaUserProfile
POST/v1/user_profiles
List User Profiles
$client->beta->userProfiles->list(?int limit, ?Order order, ?OrderBy orderBy, ?string page, ?list<AnthropicBeta> betas, ?string workspaceID): PageCursor<BetaUserProfile>
GET/v1/user_profiles
Get User Profile
$client->beta->userProfiles->retrieve(string userProfileID, ?list<AnthropicBeta> betas, ?string workspaceID): BetaUserProfile
GET/v1/user_profiles/{user_profile_id}
Update User Profile
$client->beta->userProfiles->update(string userProfileID, ?AccessType accessType, ?string externalID, ?BetaUserProfileExternalUserDetailsParams externalUserDetails, ?\Datetime externalUserOnboardedAt, ?array<string,string> metadata, ?string name, ?list<AnthropicBeta> betas, ?string workspaceID): BetaUserProfile
POST/v1/user_profiles/{user_profile_id}
Create Enrollment URL
$client->beta->userProfiles->createEnrollmentURL(string userProfileID, ?list<AnthropicBeta> betas, ?string workspaceID): BetaUserProfileEnrollmentURL
POST/v1/user_profiles/{user_profile_id}/enrollment_url
Models
class BetaUserProfile { $type; $id; $createdAt; /* 8 more */ }
Type type

Object type. Always user_profile.

string id

Unique identifier for this user profile, prefixed uprof_.

\Datetime createdAt

A timestamp in RFC 3339 format

array<string,string> metadata

Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

array<string,BetaUserProfileTrustGrant> trustGrants

Trust grants for this profile, keyed by grant name. Key omitted when no grant is active or in flight.

\Datetime updatedAt

A timestamp in RFC 3339 format

?AccessType accessType

How the platform uses the API on behalf of the entity this profile represents. application: the platform sells a product that uses the API behind the scenes, and the profile represents an individual end-user of that product. passthrough: the platform resells raw inference, and the profile identifies the resold-to company.

?string externalID

Platform's own identifier for this user. Not enforced unique. Present under the user-profiles-2026-03-24 and user-profiles-2026-08-18 beta headers; under user-profiles-2026-09-04 the value is external_user_details.reference_id.

?BetaUserProfileExternalUserDetails externalUserDetails

Details about the entity this profile represents, as the platform states them. Anthropic does not verify them. Every field is present, null until the platform supplies a value.

?\Datetime externalUserOnboardedAt

A timestamp in RFC 3339 format

?string name

Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (access_type passthrough) this is that company's name.

class BetaUserProfileEnrollmentURL { $type; $expiresAt; $url; }
Type type

Object type. Always enrollment_url.

\Datetime expiresAt

A timestamp in RFC 3339 format

string url

Enrollment URL to send to the end user. Valid until expires_at.

class BetaUserProfileExternalUserDetails { $accountStatus; $country; $emailHash; /* 4 more */ }
?AccountStatus accountStatus

The status of the entity's account on the platform, as the platform states it: active; suspended, when the platform has restricted the account and may restore it; or blocked, when the platform has barred it. It records the platform's decision only; the statuses in trust_grants are Anthropic's and do not follow it.

?string country

The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. null until the platform supplies one.

?string emailHash

The platform-computed hash of the entity's email address. null until the platform supplies one.

?EntityType entityType

What kind of entity the profile represents, as the platform states it: individual, business, non_profit or government.

?string nameHash

The platform-computed hash of the entity's name. null until the platform supplies one.

?\Datetime onboardedAt

A timestamp in RFC 3339 format

?string referenceID

The platform's own reference for the entity. null until the platform supplies one.

class BetaUserProfileExternalUserDetailsParams { $accountStatus; $country; $emailHash; /* 4 more */ }
?AccountStatus accountStatus

The status of the entity's account on the platform, as the platform states it: active; suspended, when the platform has restricted the account and may restore it; or blocked, when the platform has barred it. It records the platform's decision only; the statuses in trust_grants are Anthropic's and do not follow it.

?string country

The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example US. Only the form, two uppercase ASCII letters, is checked.

?string emailHash

A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

?EntityType entityType

What kind of entity the profile represents, as the platform states it: individual, business, non_profit or government.

?string nameHash

A hash of the entity's name, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

?\Datetime onboardedAt

A timestamp in RFC 3339 format

?string referenceID

The platform's own reference for the entity, for example the key of the end-user's row in the platform's database. Not interpreted by Anthropic and not enforced unique. 1 to 255 characters.

class BetaUserProfileTrustGrant { $status; }
Status status

Status of the trust grant.