API referenceSlack

Mint a Slack "Add to Slack" install URL

Mints a signed https://slack.com/oauth/v2/authorize install URL — the "Add to Slack" button — for the account's one Slack app and returns it as url.

Endpoint
POST https://api.dairo.app/v1/slack/oauth/start

Mints a signed https://slack.com/oauth/v2/authorize install URL — the "Add to Slack" button — for the account's one Slack app and returns it as url. When your customer approves the install, the OAuth callback creates or reconnects a slack channel inbox bound to that workspace, and inbound @mentions and DMs then fire the message.received webhook. The signed state ties the resulting binding to the calling account, is single-use, and expires after 10 minutes, so mint one per click. If the account has no Slack app the call is a 400 pointing at POST /v1/slack/apps; with more than one app it is a 400 pointing at the per-app POST /v1/slack/apps/{appId}/install-url, because "the account's app" is then ambiguous. Requires the inboxes:write scope.

Scope: inboxes:write. Send the API key as a bearer token; Scopes lists what each one reaches.

Request

cURL
curl -X POST "https://api.dairo.app/v1/slack/oauth/start" \
  -H "Authorization: Bearer $DAIRO_API_KEY"

Response

200 Success. Body: application/json, SlackOauthStartResponse.

FieldTypeRequiredDescription
urlstringyeshttps://slack.com/oauth/v2/authorize URL carrying the app's bot scopes and a signed, single-use state (10-minute expiry).
200
{
  "url": "https://yourapp.com/webhooks/dairo"
}

Errors

Every error has the same body, {"error": {"type", "code", "message", "param"}}; branch on code. Errors lists every code.

StatusMeaning
400The request is malformed or a value is invalid (invalid_request, invalid_domain, idempotency_key_mismatch).
401The API key is missing or invalid.
403The key lacks the scope this endpoint needs (scope_missing) or may not do this (not_permitted).
429Rate limit, plan limit, budget or spend cap reached (rate_limited, plan_limit_reached, budget_exceeded, spend_cap_reached).
500An unexpected error; retry with backoff, then contact support (internal_error).

On this page