Overview

User profiles bind a human (email + display name) to an agent within an organization. They are the foundation for human-in-the-loop flows where an agent acts on behalf of a person. Before an agent can operate on behalf of a profile, the human must enroll by accepting a signed, time-bound enrollment token. Profiles are scoped to an organization. All profile-management endpoints require the caller to have an organization_id in their authentication context. The enrollment acceptor endpoint is public and does not require authentication because the signed token itself is the credential.

Base URLs

Protected profile endpoints:
Public enrollment endpoint:
See Authentication for Bearer-token usage.

The profile object

Enrollment flow

  1. An administrator creates a profile with POST /beta/user-profiles.
  2. The administrator requests an enrollment URL with POST /beta/user-profiles/:id/enrollment-url. The URL contains a signed token that expires after 48 hours.
  3. The human visits the URL and submits the token to POST /beta/enroll.
  4. The profile’s enrollment_status becomes enrolled and consent_given_at is recorded.
  5. Tokens are single-use; replaying an enrollment URL returns 400 Bad Request.

Endpoints

List profiles

Response

Create a profile

Request body

Response

Creating a duplicate profile for the same organization returns 400 Bad Request.

Get a profile

Response

Update a profile

Request body

At least one field must be provided.

Response

Delete a profile

Returns 204 No Content.

Create an enrollment URL

Response

Enrollment URLs are single-use and expire after 48 hours. Requesting a URL for an already-enrolled profile returns 400 Bad Request.

Accept enrollment

The enrollment acceptor is public and does not require an Authorization header. The signed token authenticates the request.

Request body

Response

Tampered, expired, missing, or already-used tokens return 400 Bad Request.

Error codes