slack-web-api

All Web API methods follow this pattern:

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "slack-web-api" with this command: npx skills add linehaul-ai/linehaulai-claude-marketplace/linehaul-ai-linehaulai-claude-marketplace-slack-web-api

Slack Web API

Core API Pattern

All Web API methods follow this pattern:

result, err := api.MethodName(params...) if err != nil { // Handle error (rate limits, permissions, etc.) return err } // Use result

Messaging Operations

Send Simple Text Message

channelID := "C1234567890" text := "Hello, Slack!"

_, _, err := api.PostMessage( channelID, slack.MsgOptionText(text, false), )

Send Message with Block Kit

headerText := slack.NewTextBlockObject("mrkdwn", "Deployment Complete", false, false) headerBlock := slack.NewSectionBlock(headerText, nil, nil)

divider := slack.NewDividerBlock()

bodyText := slack.NewTextBlockObject("mrkdwn", "Version 2.1.0 deployed successfully", false, false) bodyBlock := slack.NewSectionBlock(bodyText, nil, nil)

_, _, err := api.PostMessage( channelID, slack.MsgOptionBlocks(headerBlock, divider, bodyBlock), )

See web-api-messaging.md for comprehensive messaging patterns including threading, updates, and ephemeral messages.

Channel Operations

Create a Channel

channelName := "project-updates" isPrivate := false

channel, err := api.CreateConversation(channelName, isPrivate) if err != nil { return err } fmt.Printf("Created channel: %s (ID: %s)\n", channel.Name, channel.ID)

List Channels

params := &slack.GetConversationsParameters{ Types: []string{"public_channel"}, Limit: 100, }

channels, nextCursor, err := api.GetConversations(params)

See web-api-channels.md for channel management, invites, and metadata operations.

User Operations

Get User Information

user, err := api.GetUserInfo("U1234567890") if err != nil { return err }

fmt.Printf("User: %s (%s)\n", user.Profile.RealName, user.Profile.Email)

List All Users

users, err := api.GetUsers() if err != nil { return err }

for _, user := range users { fmt.Printf("- %s (%s)\n", user.Name, user.ID) }

See web-api-users.md for user presence, profiles, and groups.

File Operations

Upload a File

params := slack.FileUploadParameters{ File: "report.pdf", Channels: []string{"C1234567890"}, Title: "Monthly Report", }

file, err := api.UploadFile(params) if err != nil { return err }

See web-api-files.md for file downloads, sharing, and multi-part uploads.

Block Kit Integration

Block Kit allows rich, interactive messages. See block-kit-integration.md for:

  • Section blocks with text, images, and accessories

  • Interactive buttons and select menus

  • Input blocks for forms

  • Complete layout patterns

Error Handling

Rate Limiting

_, _, err := api.PostMessage(channelID, slack.MsgOptionText(text, false)) if err != nil { if rateLimitErr, ok := err.(*slack.RateLimitedError); ok { time.Sleep(rateLimitErr.RetryAfter) // Retry operation } return err }

Common Error Types

  • slack.RateLimitedError

  • Too many requests

  • Permission errors - Missing scopes

  • channel_not_found

  • Invalid channel ID

  • invalid_auth

  • Token issues

Pagination

For operations returning large result sets, use cursor-based pagination:

cursor := "" for { params := &slack.GetConversationsParameters{ Cursor: cursor, Limit: 100, }

channels, nextCursor, err := api.GetConversations(params)
if err != nil {
    return err
}

// Process channels...

if nextCursor == "" {
    break
}
cursor = nextCursor

}

See pagination-patterns.md for advanced pagination strategies.

Common Pitfalls

  • Not handling rate limits (use exponential backoff)

  • Hardcoding channel/user IDs (use lookups or environment variables)

  • Forgetting to escape user input in messages

  • Not validating Bot Token scopes match required permissions

  • Using blocking operations in high-throughput scenarios

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

geospatial-postgis-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

rbac-authorization-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

quickbooks-online-api

No summary provided by upstream source.

Repository SourceNeeds Review
General

slack-block-kit

No summary provided by upstream source.

Repository SourceNeeds Review