---
title: "Create a self-hosted Slack app"
method: POST
path: "/api/{org_id}/slack/installations"
tags: ["Slack"]
---

# Create a self-hosted Slack app

`POST /api/{org_id}/slack/installations`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/slack/installations`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/slack/installations/post.ts> (a function with typed inputs; its response is checked against the schema)

With a configuration refresh token O2 creates the app from its manifest; with Set up manually it stores the app's own credentials. Returns the pending installation and O2's bot-only authorize URL.

## Path parameters

- `org_id` string, required

## Request body

- object

## Response `201`

`{"installation", "authorize_url", "app_settings_url", "manifest_page_url"?}`

- object

## Other responses

- `400`: Bad body or unknown mode
- `403`: Not an admin, or the OSS build
- `404`: Slack is not enabled for this organization, or Cloud
- `422`: Slack refused the configuration refresh token
- `502`: Slack error on apps.manifest.create

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
