Skip to main content
Client portals give external viewers a branded, read-only call-history experience for a selected set of agents. The management API is organization scoped and requires an admin or owner authenticated with an sk_live_ key. Viewer login, sessions, call browsing, transcripts, and audio use the hosted portal’s separate viewer authentication. They are not sk_live_ integration endpoints.

Endpoints

Portal object

List and create portals

The list is sorted by name, then id.
Returns 201 Created with the portal object.

Retrieve, update, and delete

PATCH /v1/client-portals/{portal_id} accepts any subset of:
DELETE returns 204 No Content and permanently removes the portal, its viewers, domain records, and logo reference. It does not delete agents or calls. Upload multipart form field file. The accepted formats are PNG, JPEG, and WebP, with a maximum size of 2 MB. The file contents must match the declared MIME type.
The response is {"logo_url":"https://…"}. Uploading a new logo replaces the old one. DELETE removes it and returns 204.

Viewers

The viewer object is:
Add a unique email address:
Returns 201. PATCH accepts only is_active; setting it to false blocks login without deleting the viewer. DELETE returns 204.

Custom domains

Create a domain with its hostname only:
Returns 201:
The hostname is normalized, can be at most 253 characters, and must be unique across portals. Add the returned CNAME, then add this TXT record: Check it with:
On success, the domain object has status: "active" and verified_at. While the TXT record is not visible, the response remains pending and repeats the expected TXT and CNAME records. DNS propagation can take several minutes. DELETE /domains/{domain_id} returns 204 and releases the hostname for reuse.

Errors and authorization

For the dashboard workflow and viewer experience, see Client portals.