CtrlK
BlogDocsLog inGet started
Tessl Logo

slack-admin-api

Enterprise Grid Admin API operations with the Slack Go SDK. Use when managing organization-wide conversations, assigning or listing admin roles, configuring team settings, restricting channel access, or building internal tooling for Slack workspace/org administrators.

68

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Slack Admin API

Prerequisites

Admin API methods require an org-level admin/owner token, not a regular bot token, and only work on Enterprise Grid workspaces. A bot token will fail auth even with broad bot scopes. Every admin method takes context.Context as its first argument.

adminAPI := slack.New(os.Getenv("SLACK_ORG_ADMIN_TOKEN"))

Conversations Administration

Search Conversations Org-Wide

results, err := adminAPI.AdminConversationsSearch(ctx,
    slack.AdminConversationsSearchOptionTeamIDs([]string{"T1234567890"}),
    slack.AdminConversationsSearchOptionQuery("incident"),
    slack.AdminConversationsSearchOptionLimit(50),
)
if err != nil {
    return err
}

Archive, Rename, Delete

err := adminAPI.AdminConversationsArchive(ctx, channelID)
err = adminAPI.AdminConversationsRename(ctx, channelID, "new-channel-name")
err = adminAPI.AdminConversationsDelete(ctx, channelID)

Move a Channel Between Teams

err := adminAPI.AdminConversationsSetTeams(ctx, slack.AdminConversationsSetTeamsParams{
    ChannelID:     channelID,
    TargetTeamIDs: []string{"T0987654321"},
})

Bulk Operations

err := adminAPI.AdminConversationsBulkArchive(ctx, []string{"C111", "C222"})
err = adminAPI.AdminConversationsBulkDelete(ctx, []string{"C111", "C222"})
err = adminAPI.AdminConversationsBulkMove(ctx, slack.AdminConversationsBulkMoveParams{
    ChannelIDs:   []string{"C111", "C222"},
    TargetTeamID: "T0987654321",
})

Restrict Access to a Channel

err := adminAPI.AdminConversationsRestrictAccessAddGroup(ctx, channelID, groupID)
groups, err := adminAPI.AdminConversationsRestrictAccessListGroups(ctx, channelID)
err = adminAPI.AdminConversationsRestrictAccessRemoveGroup(ctx, channelID, groupID)

See admin-api-reference.md for the full conversations, roles, and teams surface, including retention, EKM, and invite/lookup methods.

Roles Administration

Assign or remove admin/owner-style roles for users:

_, err := adminAPI.AdminRolesAddAssignments(ctx, slack.AdminRolesAddAssignmentsParams{
    RoleID:    roleID,
    EntityIDs: []string{teamID},
    UserIDs:   []string{userID},
})

assignments, err := adminAPI.AdminRolesListAssignments(ctx,
    slack.AdminRolesListAssignmentsOptionRoleIDs([]string{roleID}),
)

_, err = adminAPI.AdminRolesRemoveAssignments(ctx, slack.AdminRolesRemoveAssignmentsParams{
    RoleID:    roleID,
    EntityIDs: []string{teamID},
    UserIDs:   []string{userID},
})

Team Settings Administration

settings, err := adminAPI.AdminTeamsSettingsInfo(ctx, teamID)

err = adminAPI.AdminTeamsSettingsSetName(ctx, teamID, "Engineering")
err = adminAPI.AdminTeamsSettingsSetDescription(ctx, teamID, "Engineering workspace")
err = adminAPI.AdminTeamsSettingsSetIcon(ctx, teamID, iconURL)
err = adminAPI.AdminTeamsSettingsSetDefaultChannels(ctx, teamID, "C_GENERAL", "C_ANNOUNCEMENTS")
err = adminAPI.AdminTeamsSettingsSetDiscoverability(ctx, teamID, slack.TeamDiscoverabilityInviteOnly)

TeamDiscoverability is one of TeamDiscoverabilityOpen, TeamDiscoverabilityInviteOnly, TeamDiscoverabilityClosed, or TeamDiscoverabilityUnlisted.

Common Pitfalls

  • Using a bot token instead of an org-level admin token — admin methods will fail auth
  • Calling admin methods against a non-Enterprise-Grid workspace
  • Not scoping bulk operations carefully — AdminConversationsBulkDelete is irreversible
  • Assuming a full admin.users.* wrapper exists — the SDK does not currently expose user-provisioning admin endpoints as Go methods; use the REST API directly if you need those
  • Forgetting context.Context as the first parameter on every admin call
  • Confusing AdminConversationsSetTeams (move an existing channel) with AdminConversationsCreate's AdminConversationsCreateOptionTeamID (set the team at creation time)

Next Steps

  • Regular bot operations → Use the slack-web-api skill
  • OAuth and token storage for the org-admin token itself → Use the slack-auth-security skill
Repository
freightCognition/linehaulai-claude-marketplace
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.