Skip to main content
All paths on this page are relative to https://inkbox.ai/api/v1/slack. These operations use the selected workspace connection and its actual Slack permissions. They do not bypass message authorship, channel membership, workspace policies, or rate limits.

Idempotent operations

Every write below requires Idempotency-Key. Use 1–128 characters from letters, digits, ., _, :, or -.
  • Save one key before starting each logical operation.
  • Repeating that key with the same operation, conversation, and input returns its existing result without repeating the write.
  • Reusing it with different input on the same connection returns 409.
  • A new key requests a new operation. It can duplicate an earlier uncertain write.
These operations and message sends use separate idempotency namespaces. Reusing a key across those two families does not deduplicate them. Within this operation family, the key is shared across operation types on the same connection. The operation response is distinct from the send-action response:
A stale in_progress operation becomes unknown after roughly two minutes, without repeating the write. HTTP 200 does not mean the operation succeeded. unknown is not an automatically reconciling state. retry_after, when present, is a delay in seconds; waiting does not cause the original operation to run again. There are no operation-outcome webhooks for this family. Inspect the response and poll Get operation while it is in_progress. The slack.message_sent, slack.message_send_failed, and slack.message_send_unknown events report message sends, not these operations.

Get operation

Both IDs are UUIDs. Returns 200 with the operation object above. Recorded outcomes remain inspectable after disconnect if you still have access to the owning identity. operation is one of reaction_add, reaction_remove, pin_add, pin_remove, message_update, message_delete, file_upload, conversation_join, conversation_leave, or processing_status. Optional coordinates and status fields are null when unavailable.

Edit or delete a message

PATCH body:
text is required, 1–12,000 characters. DELETE has no body. Both return 200 with an operation object. Slack restricts which messages the bot can edit or delete; these endpoints do not grant authority over other users’ messages.

Read reactions

Returns 200 with conversation_id, message_ts, and reactions. A reaction can include name, count, and users. The response includes at most 100 reactions and 1000 user IDs per reaction; do not interpret the user list as a complete receipt list.

Add or remove a reaction

POST body:
name is 1–100 characters using letters, digits, _, +, :, or -. Use the reaction name, not an emoji image. DELETE has no body. Both return an operation object. Adding an already-present bot reaction or removing an absent one succeeds without inventing another reaction.

Read pins

A pin marks an existing conversation item for easy reference. It is not a file copy or a separate archive. Returns 200 with items and truncated. Items can include type, channel, created, created_by, and supported message or file metadata. At most 100 items are returned. truncated: true means additional items were omitted; this endpoint has no pagination cursor.

Pin or unpin a message

POST body:
DELETE has no body. Both return an operation object. Already-pinned and already-unpinned outcomes are treated as success when Slack reports the matching state.

Join or leave a conversation

Neither request has a body. Both require an idempotency key and return an operation object. Join is subject to Slack’s supported channel types and workspace restrictions; it cannot force entry into a private channel. Leaving changes the bot’s membership and can remove access to live and retained conversation content.

Set native processing status

Both fields are required. status accepts active, processing, suspended, or closed. This requests Slack’s native agent-session status for a thread. It is not ordinary message text, a universal typing indicator, or a signal that executes or cancels runtime work. The operation returns Slack’s accepted processing_status and agent_status when available. A granted scope alone does not establish that native agent-session features are available to the app and workspace. Inspect the operation result and capabilities; unsupported requests fail rather than silently posting a substitute message.

Upload a file

Use the file-upload endpoint. It uses the same operation statuses and idempotency rules.