docs/ai-agents/connectors/slack/AUTH.md
This page documents the authentication and configuration options for the Slack agent connector.
In open source mode, you provide API credentials directly to the connector.
credentials fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
client_id | str | No | Your Slack App's Client ID |
client_secret | str | No | Your Slack App's Client Secret |
access_token | str | Yes | OAuth access token (bot token from oauth.v2.access response) |
Example request:
from airbyte_agent_slack import SlackConnector
from airbyte_agent_slack.models import SlackOauth20AuthenticationAuthConfig
connector = SlackConnector(
auth_config=SlackOauth20AuthenticationAuthConfig(
client_id="<Your Slack App's Client ID>",
client_secret="<Your Slack App's Client Secret>",
access_token="<OAuth access token (bot token from oauth.v2.access response)>"
)
)
credentials fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
api_token | str | Yes | Your Slack Bot Token (xoxb-) or User Token (xoxp-) |
Example request:
from airbyte_agent_slack import SlackConnector
from airbyte_agent_slack.models import SlackTokenAuthenticationAuthConfig
connector = SlackConnector(
auth_config=SlackTokenAuthenticationAuthConfig(
api_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
)
)
In hosted mode, you first create a connector via the Airbyte API (providing your OAuth or Token credentials), then execute operations using either the Python SDK or API. If you need a step-by-step guide, see the hosted execution tutorial.
Create a connector with OAuth credentials.
credentials fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
client_id | str | No | Your Slack App's Client ID |
client_secret | str | No | Your Slack App's Client Secret |
access_token | str | Yes | OAuth access token (bot token from oauth.v2.access response) |
replication_config fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
start_date | str (date-time) | Yes | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. |
lookback_window | int | Yes | Number of days to look back when syncing data (0-365). |
join_channels | bool | Yes | Whether to automatically join public channels to sync messages. |
Example request:
curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"customer_name": "<CUSTOMER_NAME>",
"connector_type": "Slack",
"name": "My Slack Connector",
"credentials": {
"client_id": "<Your Slack App's Client ID>",
"client_secret": "<Your Slack App's Client Secret>",
"access_token": "<OAuth access token (bot token from oauth.v2.access response)>"
},
"replication_config": {
"start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data.>",
"lookback_window": "<Number of days to look back when syncing data (0-365).>",
"join_channels": "<Whether to automatically join public channels to sync messages.>"
}
}'
To implement your own OAuth flow, use Airbyte's server-side OAuth API endpoints. For a complete guide, see Build your own OAuth flow.
Request a consent URL for your user.
| Field Name | Type | Required | Description |
|---|---|---|---|
customer_name | string | Yes | Your unique identifier for the customer |
connector_type | string | Yes | The connector type (e.g., "Slack") |
redirect_url | string | Yes | URL to redirect to after OAuth authorization |
Example request:
curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors/oauth/initiate" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"customer_name": "<CUSTOMER_NAME>",
"connector_type": "Slack",
"redirect_url": "https://yourapp.com/oauth/callback"
}'
Redirect your user to the consent_url from the response.
After the user authorizes access, Airbyte automatically creates the connector and redirects them to your redirect_url with a connector_id query parameter. You don't need to make a separate API call to create the connector.
https://yourapp.com/oauth/callback?connector_id=<connector_id>
Extract the connector_id from the callback URL and store it for future operations. For error handling and a complete implementation example, see Build your own OAuth flow.
Create a connector with Token credentials.
credentials fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
api_token | str | Yes | Your Slack Bot Token (xoxb-) or User Token (xoxp-) |
replication_config fields you need:
| Field Name | Type | Required | Description |
|---|---|---|---|
start_date | str (date-time) | Yes | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. |
lookback_window | int | Yes | Number of days to look back when syncing data (0-365). |
join_channels | bool | Yes | Whether to automatically join public channels to sync messages. |
Example request:
curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"customer_name": "<CUSTOMER_NAME>",
"connector_type": "Slack",
"name": "My Slack Connector",
"credentials": {
"api_token": "<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
},
"replication_config": {
"start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data.>",
"lookback_window": "<Number of days to look back when syncing data (0-365).>",
"join_channels": "<Whether to automatically join public channels to sync messages.>"
}
}'
After creating the connector, execute operations using either the Python SDK or API.
If your Airbyte client can access multiple organizations, include organization_id in AirbyteAuthConfig and X-Organization-Id in raw API calls.
Python SDK
from airbyte_agent_slack import SlackConnector, AirbyteAuthConfig
connector = SlackConnector(
auth_config=AirbyteAuthConfig(
customer_name="<your_customer_name>",
organization_id="<your_organization_id>", # Optional for multi-org clients
airbyte_client_id="<your-client-id>",
airbyte_client_secret="<your-client-secret>"
)
)
@agent.tool_plain # assumes you're using Pydantic AI
@SlackConnector.tool_utils
async def slack_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})
API
curl -X POST 'https://api.airbyte.ai/api/v1/integrations/connectors/<connector_id>/execute' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
-H 'X-Organization-Id: <YOUR_ORGANIZATION_ID>' \
-H 'Content-Type: application/json' \
-d '{"entity": "<entity>", "action": "<action>", "params": {}}'