---
title: "Connect Slack with a customer-provided app"
method: POST
path: "/v1/integrations/slack/connect"
tags: ["integrations"]
---

# Connect Slack with a customer-provided app

`POST /v1/integrations/slack/connect`

Connect Slack using a customer-created app's bot or user token.

## Request body

- SlackManualConnectBody — Request body for connecting Slack with a customer-provided app.
  - `access_mode` 'bot' | 'user' — Use a personal user installation (default). `bot` installs a workspace bot and is only available from the dashboard; requests authenticated with an API key must use `user`.
  - `bot_token` string, required — Slack bot user OAuth token (xoxb-…)
  - `user_token` string, nullable — Slack user OAuth token (xoxp-…)
  - `signing_secret` string, required — Slack app signing secret
  - `store_name` string, nullable — Optional ingestion store name
  - `store_config` IntegrationStoreConfig — Store and file configuration chosen when connecting a data source. Applied to the ingestion store when the connector creates it and to every imported file. The defaults (contextualization on, high-quality ingestion) give the best retrieval quality and downstream availability. A pre-existing store keeps its own configuration; only the ingestion mode still applies to newly imported files.
    - `metadata_contextualization` boolean — Contextualize chunks with the connector's curated metadata fields
    - `file_contextualization` boolean — Generate an LLM context for each chunk situating it within the full document
    - `ingestion_mode` 'fast' | 'high_quality' — Strategy for adding a file to a store.

## Response `200`

The connected Slack installation

- IntegrationInstallationResponse — Integration installation response.
  - `data` IntegrationInstallation, required — Service-level representation of an installed provider integration.
    - `id` string, required — The integration installation ID
    - `created_at` string, date-time, required — The creation time
    - `updated_at` string, date-time, required — The last update time
    - `organization_id` string, required — The organization ID
    - `provider` string, required — The integration provider identifier
    - `external_account_id` string, required — The provider workspace/account ID
    - `external_account_name` string, nullable, required — The provider workspace/account name
    - `installed_by_user_id` string, nullable, required — The Mixedbread user who installed the provider
    - `status` string, required — The installation status
    - `scopes` string[], nullable, required — Granted provider scopes
    - `metadata` object, required — Provider-specific metadata

## Other responses

- `409` — The external account is already connected to a different Mixedbread organization
- `422` — The request failed validation, or the credentials it carries were rejected

## Changes

- **2026-09-21** `b12f43c90ba3` — 2 warning
  - added the new `bucket_unavailable_error` enum value to the `code/anyOf[subschema #1: ErrorCode]/` response property for the response status `409`
  - added the new `bucket_unavailable_error` enum value to the `code/anyOf[subschema #1: ErrorCode]/` response property for the response status `422`
- **2026-09-15** `957bf8ec8df8` — 2 warning
  - added the new `store_frozen_error` enum value to the `code/anyOf[subschema #1: ErrorCode]/` response property for the response status `409`
  - added the new `store_frozen_error` enum value to the `code/anyOf[subschema #1: ErrorCode]/` response property for the response status `422`
- **2026-09-10** `adde8ecfa74f` — 1 warning, 4 info
  - removed the optional property `detail` from the response with the `422` status
  - added the non-success response with the status `409`
  - added the required property `code` to the response with the `422` status
  - added the required property `message` to the response with the `422` status
  - …1 more
- **2026-09-07** `1a6549d3e64d` — 1 info
  - the `access_mode` request property default value changed from `bot` to `user`
- **2026-09-05** `ea8d85b8caca` — 2 info
  - added the new optional request property `access_mode`
  - added the new optional request property `user_token`

[Change history](https://skmtc.dev/mixedbread/apis/mxbai-omni/changes/v1/integrations/slack/connect/post.md)

---

[API](https://skmtc.dev/mixedbread/apis/mxbai-omni.md) · [All operations](https://skmtc.dev/mixedbread/apis/mxbai-omni/llms.txt) · [OpenAPI document](https://skmtc.dev/mixedbread/apis/mxbai-omni/revisions/824e59bfac1e?raw)
