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

# Integration Platform

> Build custom Sentry integrations using the Sentry App APIs

The Sentry Integration Platform lets you build custom apps that extend Sentry's functionality. A Sentry App is an OAuth application that can subscribe to webhooks, render UI components inside Sentry, and make API calls on behalf of an organization.

Use these endpoints to manage installed Sentry Apps, link Sentry issues to external trackers, and provision users via SCIM.

***

## Sentry App installations

When an organization installs your Sentry App, Sentry creates an installation record. Each installation has a UUID that you use to identify which organization and app the requests refer to.

### List installed apps

```
GET /api/0/organizations/{organization_id_or_slug}/sentry-app-installations/
```

Returns all Sentry App installations for the organization.

**Required scope:** `org:read`

### Path parameters

<ParamField path="organization_id_or_slug" type="string" required>
  The numeric ID or slug of the organization.
</ParamField>

### Example request

```bash theme={null}
curl https://sentry.io/api/0/organizations/my-org/sentry-app-installations/ \
  -H "Authorization: Bearer sntrys_TOKEN"
```

### Example response

```json theme={null}
[
  {
    "app": {
      "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de",
      "slug": "my-sentry-app",
      "name": "My Sentry App"
    },
    "organization": {
      "slug": "my-org"
    },
    "uuid": "a8e5d37a-abcd-1234-5678-b3f28d64c7de",
    "status": "installed"
  }
]
```

***

## External issues

External issues link a Sentry issue to a ticket or work item in an external system (such as GitHub Issues, Jira, or a custom tracker). This lets Sentry display the linked ticket alongside the issue.

### List external issues

```
GET /api/0/sentry-app-installations/{uuid}/external-issues/
```

Returns the external issue links created by this Sentry App installation.

**Required scope:** `event:read`

### Path parameters

<ParamField path="uuid" type="string" required>
  The UUID of the Sentry App installation.
</ParamField>

### Create an external issue

```
POST /api/0/sentry-app-installations/{uuid}/external-issues/
```

Links a Sentry issue to an item in an external issue tracker.

**Required scope:** `event:write`

### Request body

<ParamField body="issueId" type="integer" required>
  The numeric ID of the Sentry issue to link.
</ParamField>

<ParamField body="webUrl" type="string" required>
  The URL to the external issue in the third-party system.
</ParamField>

<ParamField body="project" type="string" required>
  The slug of the project the Sentry issue belongs to.
</ParamField>

<ParamField body="identifier" type="string" required>
  The identifier of the issue in the external system (e.g. `"42"` for issue #42).
</ParamField>

### Example request

```bash theme={null}
curl -X POST https://sentry.io/api/0/sentry-app-installations/UUID/external-issues/ \
  -H "Authorization: Bearer sntrys_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "issueId": 12345,
    "webUrl": "https://github.com/org/repo/issues/42",
    "project": "my-project",
    "identifier": "42"
  }'
```

### Example response

```json theme={null}
{
  "id": "1",
  "issueId": "12345",
  "webUrl": "https://github.com/org/repo/issues/42",
  "project": "my-project",
  "identifier": "42"
}
```

### Delete an external issue

```
DELETE /api/0/sentry-app-installations/{uuid}/external-issues/{id}/
```

Removes the link between a Sentry issue and an external issue.

**Required scope:** `event:admin`

### Path parameters

<ParamField path="id" type="string" required>
  The ID of the external issue link to delete.
</ParamField>

Returns `204 No Content` on success.

***

## SCIM API

The SCIM (System for Cross-domain Identity Management) API lets you provision and manage Sentry organization members and teams from your identity provider (IdP). This enables automated user lifecycle management — onboarding, offboarding, and role changes flow directly from your IdP into Sentry.

<Note>
  SCIM is available on Business and Enterprise plans. You must configure a SAML identity provider for your organization before using SCIM.
</Note>

### Users

#### List users

```
GET /api/0/organizations/{organization_id_or_slug}/scim/v2/Users
```

#### Provision a user

```
POST /api/0/organizations/{organization_id_or_slug}/scim/v2/Users
```

#### Update a user

```
PATCH /api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{id}
```

#### Remove a user

```
DELETE /api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{id}
```

### SCIM user schema

SCIM endpoints use the SCIM 2.0 protocol format. The request and response bodies follow the `urn:ietf:params:scim:schemas:core:2.0:User` schema.

### Example: provision a user

```bash theme={null}
curl -X POST https://sentry.io/api/0/organizations/my-org/scim/v2/Users \
  -H "Authorization: Bearer sntrys_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "userName": "jane@example.com",
    "name": {
      "givenName": "Jane",
      "familyName": "Smith"
    },
    "emails": [
      {
        "primary": true,
        "value": "jane@example.com",
        "type": "work"
      }
    ],
    "active": true
  }'
```

### Example: deprovision a user

```bash theme={null}
curl -X DELETE https://sentry.io/api/0/organizations/my-org/scim/v2/Users/123 \
  -H "Authorization: Bearer sntrys_TOKEN"
```

This removes the user from the organization. The user's Sentry account is not deleted.
