> ## Documentation Index
> Fetch the complete documentation index at: https://docs.closient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the URL that connects a Slack channel

> Returns the URL that starts the Slack approval for the authenticated organization. Slack's grant is a browser flow, so this call does not connect anything: a person who manages the organization opens the URL while signed in to Closient, approves the workspace and channel in Slack, and the new connection then shows up in ``GET /slack/connections/``. Connecting a channel that already exists for the same purpose refreshes it and re-enables it. Answers ``503`` when Slack connections are not provisioned on this deployment. Requires an owner or manager role.



## OpenAPI

````yaml /openapi/openapi-integrations.json post /integrations/api/v1/slack/connections/install-url/
openapi: 3.1.0
info:
  title: Integrations API
  version: 1.0.0
  description: >
    Webhook endpoint management, event catalog, delivery tracking, and event
    replay, plus the POS and Slack connections an organization has made.


    ## Authentication


    All endpoints require an API key passed via the `X-API-Key` HTTP header,
    unless otherwise noted.


    ```

    X-API-Key: csb_<body>_<checksum>

    ```


    Generate API keys in **Settings > API Keys** in your dashboard, or via the
    Account API.

    Session-based (cookie) authentication is also accepted for browser-based
    access.


    ## Rate Limits


    | Tier        | Requests / minute | Requests / day |

    |-------------|-------------------|----------------|

    | Default     | 300               | 10,000         |

    | Custom      | Contact us        | Contact us     |


    Those windows are per key. Your plan also caps each organization per hour,
    across every key,

    login and session acting for it: 100 requests on Free (or while a
    subscription is lapsed),

    10,000 on Business. While a subscription is lapsed, any method other than
    `GET`, `HEAD` and

    `OPTIONS` returns `403`.


    Rate-limit headers are included on every response so callers can
    self-throttle without

    hitting our 429s ("informed governor"):


    - `RateLimit-Policy` — every active window, e.g. `300;w=60, 10000;w=86400`

    - `RateLimit-Limit` — quota for the **most-restrictive** currently-active
    window

    - `RateLimit-Remaining` — requests left in that window

    - `RateLimit-Reset` — seconds until that window resets (relative; clock-skew
    safe)


    Legacy `X-RateLimit-*` aliases are also emitted for back-compat.
    `X-RateLimit-Reset`

    keeps the absolute Unix-timestamp shape to avoid breaking existing
    consumers.


    When rate-limited, you receive `429 Too Many Requests` with a
    `retry_after_seconds` field

    in the error envelope and a `Retry-After` header.


    ## Pagination


    List endpoints return paginated results in this envelope:


    ```json

    {
      "data": [...],
      "pagination": {
        "page": 1,
        "page_size": 25,
        "total_count": 342,
        "total_pages": 14,
        "has_next": true,
        "has_previous": false
      }
    }

    ```


    Use `?page=2&page_size=50` query parameters. Maximum page size is 100.


    ## Error Responses


    All errors conform to [RFC 9457 Problem
    Details](https://www.rfc-editor.org/rfc/rfc9457)

    with `Content-Type: application/problem+json`:


    ```json

    {
      "type": "https://closient.com/docs/errors/not_found",
      "title": "Not Found",
      "status": 404,
      "detail": "The requested resource was not found.",
      "error_code": "not_found",
      "retryable": false,
      "timestamp": "2026-03-31T12:00:00+00:00"
    }

    ```


    Common error codes: `unauthorized` (401), `forbidden` (403), `not_found`
    (404),

    `validation_error` (422), `rate_limited` (429), `internal_error` (500).


    ## Versioning and Deprecation


    Every response from an operation in this document carries
    `Closient-API-Version` (its `info.version`).

    An operation marked `deprecated` answers with `Deprecation: @<Unix seconds>`

    ([RFC 9745](https://www.rfc-editor.org/rfc/rfc9745)), `Sunset: <HTTP-date>`
    once a

    retirement date is set ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594)),
    and

    `Link` entries for `rel="deprecation"`, `rel="sunset"` and
    `rel="successor-version"`.

    After its sunset it answers `410 Gone` naming the replacement. Policy:

    https://docs.closient.com/api-versioning
  termsOfService: https://www.closient.com/terms/
servers:
  - url: https://www.closient.com
security: []
tags:
  - name: Webhook Endpoints
    description: Register and manage webhook delivery endpoints.
  - name: Webhook Event Catalog
    description: >-
      Discover every subscribable event type and the envelope versions
      available.
  - name: Webhook Deliveries
    description: Track and replay webhook delivery attempts.
  - name: Webhook Events
    description: >-
      Durable event log with cursor-based replay, for recovering from a
      subscriber outage.
  - name: POS Connections
    description: List and disconnect the organization's POS and e-commerce connections.
  - name: Slack Connections
    description: List, pause, resume and disconnect Slack channels, and start a connection.
externalDocs:
  description: Closient Documentation
  url: https://docs.closient.com
paths:
  /integrations/api/v1/slack/connections/install-url/:
    post:
      tags:
        - Slack Connections
      summary: Get the URL that connects a Slack channel
      description: >-
        Returns the URL that starts the Slack approval for the authenticated
        organization. Slack's grant is a browser flow, so this call does not
        connect anything: a person who manages the organization opens the URL
        while signed in to Closient, approves the workspace and channel in
        Slack, and the new connection then shows up in ``GET
        /slack/connections/``. Connecting a channel that already exists for the
        same purpose refreshes it and re-enables it. Answers ``503`` when Slack
        connections are not provisioned on this deployment. Requires an owner or
        manager role.
      operationId: slack_install_url
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SlackInstallIn'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SlackInstallOut'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '405':
          description: Method Not Allowed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: Unprocessable Content
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: Too Many Requests
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
      security:
        - APIKeyHeaderAuth: []
        - OAuthTokenAuth: []
        - CookieGatedSessionAuth: []
components:
  schemas:
    SlackInstallIn:
      description: Which kind of channel the new connection is for.
      examples:
        - purpose: signals
      properties:
        purpose:
          $ref: '#/components/schemas/SlackInstallPurposeEnum'
          description: >-
            ``notifications`` or ``signals``. Other purposes are not
            self-service.
      required:
        - purpose
      title: SlackInstallIn
      type: object
    SlackInstallOut:
      description: Where to send the person who approves the Slack connection.
      examples:
        - install_url: https://www.closient.com/slack/install/?purpose=signals
      properties:
        install_url:
          description: >-
            Open this URL in a browser where a person who manages the
            organization is signed in to Closient. It sends them to Slack to
            approve the workspace and channel, and the finished connection then
            appears in the connections list. The URL is not a credential and
            starts no grant until opened.
          title: Install Url
          type: string
      required:
        - install_url
      title: SlackInstallOut
      type: object
    ErrorOut:
      title: ErrorOut
      type: object
      description: RFC 9457 Problem Details error body.
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        error_code:
          type: string
        retryable:
          type: boolean
        timestamp:
          format: date-time
          type: string
      required:
        - type
        - title
        - status
        - detail
      examples:
        - type: https://closient.com/docs/errors/not_found
          title: Not Found
          status: 404
          detail: The requested resource was not found.
          error_code: not_found
          retryable: false
          timestamp: '2026-03-31T12:00:00+00:00'
    SlackInstallPurposeEnum:
      description: The kinds of Slack channel a manager can connect through the API.
      enum:
        - notifications
        - signals
      title: SlackInstallPurposeEnum
      type: string
  securitySchemes:
    APIKeyHeaderAuth:
      type: apiKey
      in: header
      name: X-API-Key
    OAuthTokenAuth:
      type: http
      scheme: bearer
    CookieGatedSessionAuth:
      type: apiKey
      in: cookie
      name: sessionid

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.