v1Resources/Team

Team

Manage your agency's team roster — list members, invite new ones, update their capacity, permissions, or linked Slack user, and resend or revoke invitations. Note: issuing an API key with team:write requires the person creating the key to already be an owner, admin, or Synup staff member. That check happens once, in Settings, when the key is created — not on each individual request — so if your attempt to create a team:write key is refused, this is why, even though the REST calls documented below never re-check it themselves.

Returns your agency's team roster — every user in your agency except the per-agency Synup Bot.

List team members

get/api/v1/team/members
team:read
Response
dataarray of objectoptional
idstringoptional
Unique identifier for the team member.
firstNamestringoptional
The team member's first name.
lastNamestringoptional
The team member's last name.
emailstringoptional
The team member's email address.
rolestringoptional
The team member's role, e.g. "owner" or "member".
invitationStatusstringoptional
The member's invitation state: "invited", "accepted", or null for a member who never went through the invite flow.
lastSessionAtstringoptional
When the member last had an active session, as an ISO 8601 timestamp, or null if never.
createdAtstringoptional
When the team member was created, as an ISO 8601 timestamp.
weeklyHoursCapacitynumberoptional
The member's weekly working-hours capacity, or null if not set.
permissionsobjectoptional
Per-module access flags (dashboard, clients, listings, etc.), or null if never set.
slackUserIdstringoptional
The Slack user ID linked to this member, or null if none.
statusstring (Owner | Invited | Active | Not Active)optional
A computed summary of the member's state: "Owner", "Invited", "Active", or "Not Active" (accepted but no session in the last 7 days).
Errors
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
429Too many requests. Retry after the number of seconds in the Retry-After header.
get/api/v1/team/members
Your API key
{}
v1Resources/Team/postInvite a team member

Invites a new team member by email. The invited member is always created with the "member" role and, unless permissions are supplied, the default member permission preset — an API key can never invite someone as owner or admin.

Invite a team member

post/api/v1/team/members
team:write
Request body
firstNamestringrequired
The new team member's first name.
lastNamestringrequired
The new team member's last name.
emailstringrequired
The new team member's email address.
permissionsobjectoptional
Per-module access flags to grant. Optional; when omitted (or empty), the default member permission preset is used.
Response
dataobjectoptional
userIdstringoptional
ID of the newly invited team member.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
409The request conflicts with the current state of the resource — for example, changing the email or phone of a recipient who has already been messaged, or a team invite that was already accepted (or hasn't been accepted yet).
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/team/members
Your API key
Request body*
{}
v1Resources/Team/patchUpdate a team member

Updates a team member's weekly hours capacity, module permissions, or linked Slack user. At least one field must be supplied. This can't change a member's role.

Update a team member

patch/api/v1/team/members
team:write
Request body
memberIdstringrequired
ID of the team member.
weeklyHoursCapacitynumberoptional
New weekly working-hours capacity, between 0 and 80.
permissionsobjectoptional
Per-module access flags to grant. Optional; when omitted (or empty), the default member permission preset is used.
slackUserIdstringoptional
Slack user ID to link to this member, or null to unlink. Linking a Slack ID already used by another member unlinks it from that member.
Response
dataobjectoptional
memberobjectoptional
The fields actually changed by this update — not the member's full profile. Fetch GET /api/v1/team/members to see the complete record.
idstringoptional
Unique identifier for the team member.
weeklyHoursCapacitynumberoptional
The member's weekly working-hours capacity, or null if not set.
permissionsobjectoptional
Per-module access flags (dashboard, clients, listings, etc.), or null if never set.
slackUserIdstringoptional
The Slack user ID linked to this member, or null if none.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
429Too many requests. Retry after the number of seconds in the Retry-After header.
patch/api/v1/team/members
Your API key
Request body*
{}
v1Resources/Team/deleteRemove a team member

Removes a team member from the agency. The agency owner can't be removed.

Remove a team member

delete/api/v1/team/members
team:write
Query parameters
memberIdstringrequired
ID of the team member to remove.
Response
dataobjectoptional
removedbooleanoptional
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
429Too many requests. Retry after the number of seconds in the Retry-After header.
delete/api/v1/team/members
Your API key
memberId *
{}
v1Resources/Team/postResend a team invitation

Generates a fresh invitation link and re-sends the invite email to a team member who hasn't accepted yet.

Resend a team invitation

post/api/v1/team/members/resend-invite
team:write
Request body
memberIdstringrequired
ID of the team member.
Response
dataobjectoptional
resentbooleanoptional
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
409The request conflicts with the current state of the resource — for example, changing the email or phone of a recipient who has already been messaged, or a team invite that was already accepted (or hasn't been accepted yet).
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/team/members/resend-invite
Your API key
Request body*
{}
v1Resources/Team/postRevoke a team member's access

Removes a team member who has already accepted their invitation. The agency owner can't be revoked, and a member who hasn't accepted their invitation yet should be removed with DELETE /api/v1/team/members instead.

Revoke a team member's access

post/api/v1/team/members/revoke
team:write
Request body
memberIdstringrequired
ID of the team member.
Response
dataobjectoptional
revokedbooleanoptional
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
409The request conflicts with the current state of the resource — for example, changing the email or phone of a recipient who has already been messaged, or a team invite that was already accepted (or hasn't been accepted yet).
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/team/members/revoke
Your API key
Request body*
{}