---
title: "Get an integration"
method: GET
path: "/projects/{project_id}/integrations/{integration_id}"
tags: ["Integrations"]
---

# Get an integration

`GET /projects/{project_id}/integrations/{integration_id}`

## Request

- Base URL: `https://app.honeybadger.io/v3`
- URL: `https://app.honeybadger.io/v3/projects/{project_id}/integrations/{integration_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/honeybadger/apis/honeybadger-api/docs/projects/:project_id/integrations/:integration_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a single notification integration.

## Path parameters

- `project_id` string, required
- `integration_id` string, required

## Response `200`

Success

- object
  - `data` Integration, required: A notification integration
    - `id` string, required
    - `project_id` string, required: ID of the project this integration belongs to
    - `type` string, required: Integration type
    - `active` boolean, required: Whether to use the integration. An OAuth integration that isn't `connected` sends nothing until it is.
    - `events` string[], required: Events this integration notifies on
    - `site_ids` string[], nullable, required: Sites whose up and down events this integration receives. null means every site in the project, including ones added later.
    - `check_in_ids` string[], nullable, required: Check-ins whose events this integration receives. null means every check-in in the project, including ones added later.
    - `excluded_environments` string[], required: Errors from these environments never notify through this integration. Takes precedence over `included_environments`.
    - `included_environments` string[], required: When non-empty, only errors from these environments notify through this integration.
    - `filters` IntegrationFilter[], required: An ordered list. Each event that has a filter notifies only for errors matching its query.
      - `event` 'occurred' | 'rate_exceeded' | 'assigned' | 'resolved' | 'unresolved' | 'commented' | 'deployed' | 'up' | 'down' | 'cert_will_expire' | 'flooded' | 'check_in_missing' | 'check_in_reporting' | 'alarm_alert' | 'alarm_ok' | 'volume_spike' | 'all', required: An event a filter applies to, or `all` for every event.
      - `query` string, required: An error search query, as in the Errors search box.
    - `alarm_alert_ids` string[], required: IDs of alarms whose alert events this integration receives
    - `alarm_ok_ids` string[], required: IDs of alarms whose recovery events this integration receives
    - `threshold` integer, required: Occurrence threshold before `rate_exceeded` fires
    - `rate` 'min' | 'hour' | 'wday' | 'week', required: Period the `rate_exceeded` threshold counts over: `min` a minute, `hour` an hour, `wday` a day (24 hours, not a weekday), `week` a week.
    - `notification_limit` integer, nullable, required: Maximum notifications in a 10-minute window before flood control
    - `connected` boolean: Present on OAuth integrations (Slack, GitHub, GitLab, Bitbucket, Jira Cloud, Asana, Intercom and the like) and WebSocket integrations. On an OAuth integration it says whether the integration is authenticated, which someone does in the web UI at `links.web`. Separate from `active`: an active integration that isn't connected sends nothing until it is, and connecting doesn't change `active`. GitHub authenticates through the GitHub App: the app is installed on the repo, and the installation is attached when someone with access to it saves the integration. A creator who signed in to Honeybadger with GitHub is connected on create. On a WebSocket integration it says whether a client checked in within the last two minutes.
    - `config` object, required: The type's settings, one IntegrationConfig<Type> per `type`. Unset settings are null. Write-only secrets are never returned. Other settings are, including webhook URLs, which can contain credentials.
    - `error` boolean: Set when a delivery fails in a way that stops the integration; `error_reason` says why. The integration sends nothing while it's set. A successful update clears it.
    - `error_reason` string: Reason for the error state, if any
    - `created_at` string, date-time, required: When the integration was created
    - `links` WebLinks, required: Links into the Honeybadger web UI
      - `web` string, uri, required: The resource's page in the Honeybadger web UI, as an absolute URL. Resources without a page, such as outages and deploys, don't have `links`. For a project provisioned through Heroku, error, notice and comment links go through Heroku's single sign-on.
  - `meta` ResponseMeta
    - `request_id` string: Unique identifier for the request, for correlating with support

## Other responses

- `401`: The credential is missing, invalid, expired or revoked (`unauthorized`), or was sent in a way v3 doesn't accept (see the examples).
- `403`: The credential isn't allowed to do this. `error.code` says why. An account or project the credential doesn't cover is 404 `not_found`, not 403.
- `404`: Resource not found
- `422`: No path names the account, so the API token has to. This is returned when the token covers more than one account and the account a request applies to cannot be determined. Use a token bound to a single account.

---

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