Skip to main content
Slack logo

Overview

Add Slack to any ModuleX agent or workflow. Channels, messages, threads, reactions, and user management against the Slack Web API (slack.com/api).
Categories: Communication · Communication & Collaboration · Collaboration · Messaging · Auth: OAuth2, Bot Token · Actions: 8

Authentication

OAuth2 Authentication

Connect using Slack OAuth (recommended for most use cases)
1

Step 1

Create a Slack App at https://api.slack.com/apps
2

Step 2

Go to ‘OAuth & Permissions’
3

Step 3

Add required scopes (see below)
4

Step 4

Install app to workspace
5

Step 5

Copy the Bot User OAuth Token

Required Credentials

FieldDescriptionRequiredFormat
Client IDSlack App Client IDYes1234567890.1234567890
Client SecretSlack App Client SecretYesxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

OAuth Configuration

  • Authorization URL: https://slack.com/oauth/v2/authorize
  • Token URL: https://slack.com/api/oauth.v2.access
  • Scopes: channels:read, channels:history, chat:write, reactions:write, users:read, users.profile:read

Available Actions

Parameters

team_id
string
Team/workspace ID to filter channels
limit
integer
Maximum number of channels to return (max 200) (Default: 100)
cursor
string
Pagination cursor for next page of results

Response

{
  "$defs": {
    "Channel": {
      "additionalProperties": false,
      "description": "One row in ``list_channels``.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "is_channel": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Channel"
        },
        "is_private": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Private"
        },
        "is_archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Archived"
        },
        "is_member": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Member"
        },
        "num_members": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Num Members"
        },
        "topic": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Topic"
        },
        "purpose": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Purpose"
        },
        "created": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        }
      },
      "title": "Channel",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channels": {
      "items": {
        "$ref": "#/$defs/Channel"
      },
      "title": "Channels",
      "type": "array"
    },
    "total": {
      "default": 0,
      "title": "Total",
      "type": "integer"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Cursor"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListChannelsOutput",
  "type": "object"
}

Parameters

channel_id
string
required
The ID of the channel to post to
text
string
required
The message text to post

Response

{
  "$defs": {
    "Message": {
      "additionalProperties": false,
      "description": "Compact message representation returned by post/reply actions.",
      "properties": {
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Text"
        },
        "user": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "User"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ts"
        }
      },
      "title": "Message",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Channel"
    },
    "ts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ts"
    },
    "message": {
      "anyOf": [
        {
          "$ref": "#/$defs/Message"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "PostMessageOutput",
  "type": "object"
}

Parameters

channel_id
string
required
The ID of the channel containing the thread
thread_ts
string
required
The timestamp of the parent message (format: ‘1234567890.123456’)
text
string
required
The reply text

Response

{
  "$defs": {
    "Message": {
      "additionalProperties": false,
      "description": "Compact message representation returned by post/reply actions.",
      "properties": {
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Text"
        },
        "user": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "User"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ts"
        }
      },
      "title": "Message",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Channel"
    },
    "ts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ts"
    },
    "thread_ts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Thread Ts"
    },
    "message": {
      "anyOf": [
        {
          "$ref": "#/$defs/Message"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "ReplyToThreadOutput",
  "type": "object"
}

Parameters

channel_id
string
required
The ID of the channel containing the message
timestamp
string
required
The timestamp of the message to react to
reaction
string
required
The name of the emoji reaction (without colons)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Channel"
    },
    "timestamp": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Timestamp"
    },
    "reaction": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Reaction"
    }
  },
  "required": [
    "success"
  ],
  "title": "AddReactionOutput",
  "type": "object"
}

Parameters

channel_id
string
required
The ID of the channel
limit
integer
Number of messages to retrieve (Default: 10)

Response

{
  "$defs": {
    "ChannelMessage": {
      "additionalProperties": false,
      "description": "A row in ``get_channel_history``.",
      "properties": {
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "user": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "User"
        },
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Text"
        },
        "ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ts"
        },
        "thread_ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Thread Ts"
        },
        "reply_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Reply Count"
        },
        "reactions": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Reactions",
          "type": "array"
        }
      },
      "title": "ChannelMessage",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Channel"
    },
    "messages": {
      "items": {
        "$ref": "#/$defs/ChannelMessage"
      },
      "title": "Messages",
      "type": "array"
    },
    "total": {
      "default": 0,
      "title": "Total",
      "type": "integer"
    },
    "has_more": {
      "default": false,
      "title": "Has More",
      "type": "boolean"
    }
  },
  "required": [
    "success"
  ],
  "title": "GetChannelHistoryOutput",
  "type": "object"
}

Parameters

channel_id
string
required
The ID of the channel containing the thread
thread_ts
string
required
The timestamp of the parent message (format: ‘1234567890.123456’)

Response

{
  "$defs": {
    "ThreadMessage": {
      "additionalProperties": false,
      "description": "A row in ``get_thread_replies``.",
      "properties": {
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "user": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "User"
        },
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Text"
        },
        "ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ts"
        },
        "thread_ts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Thread Ts"
        },
        "parent_user_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent User Id"
        },
        "reactions": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Reactions",
          "type": "array"
        }
      },
      "title": "ThreadMessage",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Channel"
    },
    "thread_ts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Thread Ts"
    },
    "messages": {
      "items": {
        "$ref": "#/$defs/ThreadMessage"
      },
      "title": "Messages",
      "type": "array"
    },
    "total": {
      "default": 0,
      "title": "Total",
      "type": "integer"
    },
    "has_more": {
      "default": false,
      "title": "Has More",
      "type": "boolean"
    }
  },
  "required": [
    "success"
  ],
  "title": "GetThreadRepliesOutput",
  "type": "object"
}

Parameters

team_id
string
Team/workspace ID
limit
integer
Maximum number of users to return (max 200) (Default: 100)
cursor
string
Pagination cursor for next page of results

Response

{
  "$defs": {
    "User": {
      "additionalProperties": false,
      "description": "A row in ``get_users``.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "real_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Real Name"
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Display Name"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "is_admin": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Admin"
        },
        "is_owner": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Owner"
        },
        "is_bot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Bot"
        },
        "deleted": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deleted"
        },
        "tz": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Tz"
        },
        "updated": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Updated"
        }
      },
      "title": "User",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "users": {
      "items": {
        "$ref": "#/$defs/User"
      },
      "title": "Users",
      "type": "array"
    },
    "total": {
      "default": 0,
      "title": "Total",
      "type": "integer"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Cursor"
    }
  },
  "required": [
    "success"
  ],
  "title": "GetUsersOutput",
  "type": "object"
}

Parameters

user_id
string
required
The ID of the user

Response

{
  "$defs": {
    "UserProfile": {
      "additionalProperties": false,
      "description": "The ``profile`` block of ``get_user_profile``.",
      "properties": {
        "real_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Real Name"
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Display Name"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "phone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Phone"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "status_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status Text"
        },
        "status_emoji": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status Emoji"
        },
        "image_24": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image 24"
        },
        "image_48": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image 48"
        },
        "image_72": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image 72"
        },
        "image_192": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image 192"
        },
        "image_512": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image 512"
        }
      },
      "title": "UserProfile",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "User Id"
    },
    "profile": {
      "anyOf": [
        {
          "$ref": "#/$defs/UserProfile"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "GetUserProfileOutput",
  "type": "object"
}

Limits & Quotas

  • Tier 1 (most read endpoints): ~60 req/min.
  • Tier 2 (chat.postMessage, reactions.add): ~20 req/min.
  • Tier 3 (conversations.history, users.list): ~100 req/min.
  • Slack reports errors as HTTP 200 with ok: false and an error field — the tools surface this in the output as success: False + error, not an exception. Plan for retry/back-off based on the string error code (e.g. ratelimited, channel_not_found).

Telegram Bot

Gmail

Twilio Voice