Skip to main content

Inviting Users to Team Chat

Team Chat has two different audiences, and two different ways to bring each one in.

AudienceHow they join
Teammates in your own workspaceAnyone with a SendSeven user account for your workspace can browse and join public channels themselves. There is no separate "invite to Team Chat" step.
External guestsSomeone in another SendSeven workspace (an agency, a client, a partner) can be invited into one specific external channel, so both sides see the same conversation without either party leaving their own workspace.

Teammates in your own workspace

Every user in your workspace can already see and use Team Chat -- there's no invitation flow to run. What you can automate:

Method & PathRequired ScopePurpose
GET /api/v1/team-chat/channels/browseteam_chat:readList public channels the calling user hasn't joined yet
POST /api/v1/team-chat/channels/{channel_id}/jointeam_chat:createJoin a public channel
POST /api/v1/team-chat/channels/{channel_id}/leaveteam_chat:createLeave a channel
GET /api/v1/team-chat/channels/{channel_id}/membersteam_chat:readList members, with each member's role and notification_level
GET /api/v1/team-chat/usersteam_chat:readTeam directory

Private channels have no self-serve join -- an existing member adds people from within the app.

External guests (cross-workspace)

Team Chat can link a channel to a guest from another SendSeven workspace, so an agency and its client can share one channel without either side getting access to the other's full workspace. This only works on channels created with channel_type: "external".

Method & PathRequired ScopePurpose
POST /api/v1/team-chat/external/inviteteam_chat:settingsInvite a guest, by email, to an external channel
GET /api/v1/team-chat/external/invitations/sentteam_chat:settingsInvitations you've sent
GET /api/v1/team-chat/external/invitations/receivedteam_chat:readInvitations sent to you
POST /api/v1/team-chat/external/invitations/{invitation_id}/acceptteam_chat:readAccept an invitation
POST /api/v1/team-chat/external/invitations/{invitation_id}/declineteam_chat:readDecline an invitation
DELETE /api/v1/team-chat/external/invitations/{invitation_id}team_chat:adminRevoke an invitation you sent

Only a channel admin can send an invitation for that channel.

Send an invitation

POST /api/v1/team-chat/external/invite
Content-Type: application/json
FieldTypeRequiredDescription
channel_idstringYesThe external channel to invite the guest into.
target_emailstringYesEmail address to invite.
messagestringNoOptional note included with the invitation, up to 500 characters.
curl -X POST "https://api.sendseven.com/api/v1/team-chat/external/invite" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"channel_id": "3f7c1a92-5d84-4b1e-9a3c-70e2f8d41b05",
"target_email": "[email protected]",
"message": "Let'\''s use this channel to coordinate the launch."
}'

Response (200 OK):

{
"message": "If this user has an account, we will let them know."
}
The response never confirms whether the email exists

For privacy, POST /external/invite always returns the same success message, whether or not target_email belongs to an existing SendSeven user. This prevents an integration (or a curious channel admin) from using the endpoint to enumerate accounts. If the address does belong to a user, they receive a notification and see the invitation under GET /external/invitations/received in their own workspace.

Once accepted, the channel appears in the guest's channel list with is_external: true and a source_tenant_id identifying your workspace. When reading or posting into an external channel from the guest side, pass that source_tenant_id back on the relevant calls (the Bot API uses the same query parameter).

What's next

  • Team Chat Bots -- post channel messages and DMs programmatically once your channels and members are set up.
  • Team Chat Webhook -- get notified when messages land in a bot-enabled channel.