Skip to main content

About

Operations for the people side of your organization: list teammates, manage team invitations, change roles or suspend and restore members, read live activity counts and team performance analytics, and manage the key owner’s own profile. All operations go through the developer API gateway — one endpoint, called by operationId. If you haven’t set up a key yet, start with the Developer API Overview.

Operations

Teammates and profile (READ + WRITE scopes)

listTeamMembers.searchTerm matches name/email substrings, a UUID, or a complete US phone number. Partial phone numbers do not search the phone field. Without a search term, the newest members come first. Roles are ADMIN, MEMBER, ISA, and INDEPENDENT_OPERATOR; status is ACTIVE or SUSPENDED. The roster does not expose other members’ capability grants. Read the key owner’s own grants with getMyCapabilities.

Live activity counts (READ scope)

Both require startDate (inclusive) and endDate (exclusive), as ISO datetimes with an offset. Resolve calendar dates in getMyProfile.resolvedTimezone before calling. Windows are limited to 93 calendar days; split a longer range. These are live reads, separate from the nightly analytics below, and do not charge the analytics rate-limit bucket. Without userIds, a key owner holding VIEW_ALL_PHONES gets the organization-wide result; otherwise only their own activity is returned. With that capability, userIds narrows the read to named members and countOutboundTexts.otherSenders is null. Naming a teammate without the capability is refused. Named members appear even when their counts are zero. Member text counts exclude AI-employee and workflow sends even when those use the member’s line. For calls, connectedCalls means status COMPLETED; conversationCalls requires a connected call lasting at least 120 seconds or having a transcript or AI summary. talkSeconds sums connected-call durations, using zero when duration is missing. These human-only counts can be lower than the nightly analytics, which can credit AI-handled calls to a member.

Team members (ADMIN scope)

Review the handover before removing a memberRemoval changes assignments as well as access, and restoration does not reverse those changes. Inspect the removal result’s handover, reassignedTaskCount, releasedContactSeatCount, handedOverContactCount, openWorkTruncated, and openWorkFailed to identify work left behind. Suspended members remain visible in listTeamMembers.

Team invites (ADMIN scope)

Team analytics (ADMIN scope)

Reporting reads over the same nightly snapshots as the web app’s Analytics pages — each response carries the asOfDate it was computed. Both take an optional period: SEVEN_DAYS | FOURTEEN_DAYS | THIRTY_DAYS | YEAR_TO_DATE (default THIRTY_DAYS). The schema also lists SIXTY_DAYS and THIS_MONTH, but these analytics operations reject them with BAD_USER_INPUT.
Rate-limitedThe nightly analytics operations above are rate-limited per key. Exceeding the limit returns 429 rate_limited with a Retry-After header. Pipeline-level analytics (outcomes and funnel) live in the Pipelines API.
Everything is your organizationTeam operations are inherently org-scoped: listTeammates and listTeamInvites return only your organization’s people and invites, and createTeamInvite creates under your org. revokeTeamInvite takes an invitation id, but a foreign one is rejected — the service requires you to be an ADMIN of that invitation’s own organization. Analytics run against your org only (the gateway injects the org id, so it can’t be forged). See Authorization.

Example

Pull the last 7 days of team activity for a dashboard:
Full variable schemas, response shapes, and worked examples for every operation are available from the discovery endpoint.