Skip to Content
TwinsSlack

Slack

Twin of the Slack Web API.

Twin of the Slack Web API.

Coversslack.com
AuthBot tokens, user tokens, OAuth
WebhooksNo
Operations126

Coverage

Conversations and messages, threads, reactions, users and bots, files with real byte upload, bookmarks, reminders and stars. The Web API under /api and the bot and user OAuth installation flows under /oauth/v2 both sit on the one base.

The Web API is the whole surface. There is no Events API, Socket Mode or interactivity, so nothing arrives outbound and a client waiting on events polls conversations.history and conversations.replies instead.

Credentials

Slack is the one twin where the token must be one the world holds. A well-formed xoxb-… or xoxp-… that no grant issued is invalid_auth in either auth.mode. Use the published bot and user tokens, or run the authorization code flow here and use what it mints. See Credentials.

Scopes are enforced per method, and a token missing one gets missing_scope with needed and provided naming which.

Vendor specific details

  • Almost everything is HTTP 200. A refused call is {"ok": false, "error": …} with a 200 status, so code branching on the status sees success every time.
  • A trailing slash is a 301 to the unslashed path with an empty text/html body, and it fires before authentication. A client that does not follow redirects gets nothing back rather than an error.
  • The token form field beats the Authorization header, ?token= in the query string is always refused even when valid, and the scheme is case sensitive: lowercase bearer reads as no credential at all.
  • Content-Type: application/json without charset= injects "warning": "missing_charset" into every body, successes included.
  • Slack has no idempotency mechanism, and neither does the twin. Two identical chat.postMessage calls post twice.

Its own notes

Once a sandbox is running, this twin serves its own operating notes at {control_url}/veris/manual: the credentials it accepts, the API versions it serves, and the fault statuses you can arm against it. They are generated from the same source as its behaviour, so they cannot drift.