---
title: "Start Slack Install"
method: GET
path: "/api/v1/recipients/slack/install"
tags: ["recipients"]
---

# Start Slack Install

`GET /api/v1/recipients/slack/install`

Mint the Slack authorize URL for this company. Owner/admin only → 403.

503 when the environment has no Slack app credentials
(`SlackNotConfigured`), which is the deliberate behaviour in an unconfigured
deployment: a visible "not available here" rather than an authorize URL that
dead-ends as an opaque error on slack.com.

The role gate is in `begin_install`, not in a dependency here — see the
module docstring.

## Response `200`

Successful Response

- SlackAuthorizeUrl — Where to send an admin's browser to start a Slack install. A one-field envelope rather than a bare string because the route must stay a JSON endpoint: `GET /recipients/slack/install` **returns** the URL, it does not 302 to it. A server-side redirect would force the front end into a full-page navigation, and this flow is opened in a popup in one place and a same-tab navigation in another — that choice belongs to the caller. The URL carries the signed `state` minted by `begin_install`, which is the OAuth callback's only proof of which company is being installed for. It is therefore **single-purpose and short-lived** (a 10-minute TTL): do not cache this response, and do not reuse one URL for two install attempts.
  - `authorize_url` string, required

## Changes

> 36 revisions in range; 1 not diffed.

- **2026-09-13** `2fbe8fef9481` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/netter/apis/dmi-backend/changes/api/v1/recipients/slack/install/get.md)

---

[API](https://skmtc.dev/netter/apis/dmi-backend.md) · [All operations](https://skmtc.dev/netter/apis/dmi-backend/llms.txt) · [OpenAPI document](https://skmtc.dev/netter/apis/dmi-backend/revisions/45183c028c46?raw)
