npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

slack-node

v0.3.2

Published

Slack API library for node

Readme

slack-node-sdk

Build Status

Slack Node SDK, full support for Webhook and the Slack API, continuously updated.

Zero runtime dependencies. Supports both callback and Promise styles. Requires Node.js 8+.

Install

npm install slack-node

Slack Webhook Usage

First, apply for a Slack Incoming Webhook and copy the webhook URL.

Callback style

var Slack = require('slack-node');

var slack = new Slack();
slack.setWebhook("__your_webhook_url__");

slack.webhook({
  channel: "#general",
  username: "webhookbot",
  text: "This is posted to #general and comes from a bot named webhookbot."
}, function(err, response) {
  console.log(response);
});

Promise style

var Slack = require('slack-node');

var slack = new Slack();
slack.setWebhook("__your_webhook_url__");

slack.webhook({
  channel: "#general",
  username: "webhookbot",
  text: "This is posted to #general and comes from a bot named webhookbot."
}).then(function(response) {
  console.log(response);
}).catch(function(err) {
  console.error(err);
});

async/await

const Slack = require('slack-node');

const slack = new Slack();
slack.setWebhook("__your_webhook_url__");

async function sendMessage() {
  const response = await slack.webhook({
    channel: "#general",
    username: "webhookbot",
    text: "Hello from async/await!"
  });
  console.log(response);
}

sendMessage();

Emoji support

You can use a Slack emoji or an image URL:

// Slack emoji
slack.webhook({
  channel: "#general",
  username: "webhookbot",
  icon_emoji: ":ghost:",
  text: "test message"
}, function(err, response) {
  console.log(response);
});

// URL image
slack.webhook({
  channel: "#general",
  username: "webhookbot",
  icon_emoji: "http://example.com/icon.png",
  text: "test message"
}, function(err, response) {
  console.log(response);
});

More examples in the example directory.

Slack API Usage

First, get an API token from the Slack API page.

Callback style

var Slack = require('slack-node');
var slack = new Slack("__your_api_token__");

slack.api("users.list", function(err, response) {
  console.log(response);
});

slack.api("chat.postMessage", {
  text: "hello from nodejs",
  channel: "#general"
}, function(err, response) {
  console.log(response);
});

Promise style

var Slack = require('slack-node');
var slack = new Slack("__your_api_token__");

slack.api("users.list").then(function(response) {
  console.log(response);
}).catch(function(err) {
  console.error(err);
});

slack.api("chat.postMessage", {
  text: "hello from nodejs",
  channel: "#general"
}).then(function(response) {
  console.log(response);
});

async/await

const Slack = require('slack-node');
const slack = new Slack("__your_api_token__");

async function main() {
  const users = await slack.api("users.list");
  console.log(users);

  const result = await slack.api("chat.postMessage", {
    text: "hello from async/await",
    channel: "#general"
  });
  console.log(result);
}

main();

File upload

slack.api("files.upload", {
  channels: "#general",
  content: "file content here"
}, function(err, response) {
  console.log(response);
});

How It Works

Every async method (api, webhook) supports dual-mode operation:

  • With callback: passes (err, response) to the callback and returns this (chainable)
  • Without callback: returns a native Promise
// Callback mode — returns `this`
var ret = slack.api("users.list", function(err, response) { });
console.log(ret === slack); // true

// Promise mode — returns a Promise
var promise = slack.api("users.list");
console.log(typeof promise.then); // "function"

No external Promise library is needed. The SDK uses native Promise.

Configuration

var slack = new Slack("token");

// Custom timeout (default: 10000ms)
slack.timeout = 5000;

// Custom retry attempts (default: 3)
slack.maxAttempts = 5;

Changelog

  • 0.3.0

  • Removed all runtime dependencies — uses only native Node.js http/https modules

  • Supports Node.js 8 through 22 with identical API

  • CI Node.js version matrix: 8, 10, 12, 14, 16, 18, 20, 22

  • Version-adaptive test dependency installation for cross-version compatibility

  • 0.2.0

  • Migrated source from CoffeeScript to ES6+ JavaScript

  • Added dual-mode support: all async methods now return a Promise when no callback is provided

  • Full backward compatibility — existing callback-based code works without changes

  • Replaced real API tests with comprehensive mock tests (37 test cases using nock)

  • Upgraded all dependencies to latest versions (requestretry 8.x, mocha 11.x, nock 14.x)

  • Minimum Node.js version raised to 18+ (all older versions are EOL)

  • CI Node.js version matrix: 18, 20, 22

  • Removed CoffeeScript build step

  • 0.1.7

  • slack-node no longer crashes if Slack returns HTML instead of JSON.

  • 0.1.6

  • support ES6, promise function.

  • 0.1.3

  • use requestretry replace request. thanks for timjrobinson

  • update test

  • fixed emoji error

  • fixed return error crash when run time.

  • 0.1.0

  • fixed test type error

  • support new slack webhook.

  • 0.0.95

  • fixed webhook function and test

  • support file upload function

  • 0.0.93

  • return header and status

  • 0.0.92

  • merge slack emoji for webhook

  • pass request full request object

  • 0.0.9

  • pass parameters bug fixed

License

MIT