verification
use it
# add to stunt.yaml
services:
slack:
adapter: embedded:slack-style
# then
$ stunt upThe embedded: source extracts this adapter from the binary — no git clone, fully offline.
how to mock the Slack Web API locally
Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Slack Web API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Slack Web API 1.0 surface — the data is fake, the behavior is real.
backing stores
channelsmessages
api surface (7)
generated from the adapter manifest — exactly what boots, nothing more · covers 2% of the real API's 272 routes (derived from sdk slack-node @ 7.19.0 (floor))
7 routes
POST/api/auth.test
POST/api/chat.postMessage
POST/api/conversations.create
/api/conversations.list
/api/conversations.history
POST/api/reactions.add
POST/api/apps.events.url
SDK-verified behaviors (4)
- ✓auth.test validates the seeded bearer token
- ✓conversations.create + list round-trip
- ✓chat.postMessage lands in conversations.history
- ✓reactions.add on the posted message
Not implemented (6)
- Only 7 Web API methods; no chat.update, chat.delete, or chat.scheduleMessage
- No conversations.members, join, leave, open, or rename; no users.list/users.info
- No reactions.remove or reactions.list
- No message threads: conversations.replies and chat.getPermalink absent
- No files (files.upload/info/list), search, views, or dialogs surfaces
- Only message, channel_created, reaction_added events; no app_mention or team_join
Differs from the real API (2)
- apps.events.url config endpoint is simulator-only; real Slack sets it in the app dashboard
- Events deliveries wrap Slack event_callback payloads in an extra stunt envelope
want more of the Slack Web API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.