---
title: "Retrieve an integration configuration"
method: GET
path: "/v1/integrations/configuration/{id}"
tags: ["integrations"]
---

# Retrieve an integration configuration

`GET /v1/integrations/configuration/{id}`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v1/integrations/configuration/{id}`
- Auth: HTTP bearer

Allows to retrieve a the configuration with the provided id in case it exists. The authenticated user or team must be the owner of the config in order to access it.

## Path parameters

- `id` string, required: ID of the configuration to check

## Query parameters

- `teamId` string
- `slug` string

## Response `200`

The configuration with the provided id

- union
  - object
    - `acceptedPoliciesInheritedFromInstallationId` string: Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth.
    - `canConfigureOpenTelemetry` false | true
    - `completedAt` number: A timestamp that tells you when the configuration was installed successfully
    - `createdAt` number, required: A timestamp that tells you when the configuration was created
    - `customerDeleteRequestedAt` number, nullable: Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set.
    - `deletedAt` number, nullable: A timestamp that tells you when the configuration was deleted.
    - `deleteRequestedAt` number, nullable: A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.
    - `disabledAt` number: A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.
    - `disabledReason` 'account-plan-downgrade' | 'disabled-by-admin' | 'disabled-by-owner' | 'feature-not-available' | 'original-owner-left-the-team' | 'original-owner-role-downgraded'
    - `externalId` string: An external identifier defined by the integration vendor.
    - `id` string, required: The unique identifier of the configuration
    - `installationType` 'external' | 'marketplace': Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'
    - `integrationId` string, required: The unique identifier of the app the configuration was created for
    - `notification` object, required
      - `href` string
      - `level` 'error' | 'info' | 'warn', required
      - `message` string
      - `title` string, required
    - `ownerId` string, required: The user or team ID that owns the configuration
    - `projects` string[]: When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.
    - `projectSelection` 'all' | 'selected', required: A string representing the permission for projects. Possible values are `all` or `selected`.
    - `scopes` string[], required: The resources that are allowed to be accessed by the configuration.
    - `slug` string, required: The slug of the integration the configuration is created for.
    - `source` 'backoffice' | 'cli' | 'deploy-button' | 'external' | 'import-recommended-integrations' | 'marketplace' | 'oauth' | 'organization' | 'project-overview-recommended-integrations' | 'resource-claims' | 'v0': Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.
    - `status` 'error' | 'onboarding' | 'pending' | 'ready' | 'resumed' | 'suspended' | 'uninstalled': The configuration status. Optional. If not defined, assume 'ready'.
    - `teamId` string, nullable: When the configuration was created for a team, this will show the ID of the team.
    - `type` 'integration-configuration', required
    - `updatedAt` number, required: A timestamp that tells you when the configuration was updated.
    - `userId` string, required: The ID of the user that created the configuration.
  - object: The configuration with the provided id
    - `acceptedPoliciesInheritedFromInstallationId` string: Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth.
    - `completedAt` number: A timestamp that tells you when the configuration was installed successfully
    - `createdAt` number, required: A timestamp that tells you when the configuration was created
    - `customerDeleteRequestedAt` number, nullable: Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set.
    - `deletedAt` number, nullable: A timestamp that tells you when the configuration was deleted.
    - `deleteRequestedAt` number, nullable: A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.
    - `disabledAt` number: A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.
    - `disabledReason` 'account-plan-downgrade' | 'disabled-by-admin' | 'disabled-by-owner' | 'feature-not-available' | 'original-owner-left-the-team' | 'original-owner-role-downgraded'
    - `externalId` string: An external identifier defined by the integration vendor.
    - `id` string, required: The unique identifier of the configuration
    - `installationType` 'external' | 'marketplace': Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'
    - `integrationId` string, required: The unique identifier of the app the configuration was created for
    - `ownerId` string, required: The user or team ID that owns the configuration
    - `projects` string[]: When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.
    - `scopes` string[], required: The resources that are allowed to be accessed by the configuration.
    - `slug` string, required: The slug of the integration the configuration is created for.
    - `source` 'backoffice' | 'cli' | 'deploy-button' | 'external' | 'import-recommended-integrations' | 'marketplace' | 'oauth' | 'organization' | 'project-overview-recommended-integrations' | 'resource-claims' | 'v0': Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.
    - `status` 'error' | 'onboarding' | 'pending' | 'ready' | 'resumed' | 'suspended' | 'uninstalled': The configuration status. Optional. If not defined, assume 'ready'.
    - `teamId` string, nullable: When the configuration was created for a team, this will show the ID of the team.
    - `type` 'integration-configuration', required
    - `updatedAt` number, required: A timestamp that tells you when the configuration was updated.
    - `userId` string, required: The ID of the user that created the configuration.
  - object: A configuration represents information about a single installation of an integration within an individual or team account
    - `acceptedPoliciesInheritedFromInstallationId` string: Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth.
    - `completedAt` number: A timestamp that tells you when the configuration was installed successfully
    - `createdAt` number: A timestamp that tells you when the configuration was created
    - `customerDeleteRequestedAt` number, nullable: Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set.
    - `deletedAt` number, nullable: A timestamp that tells you when the configuration was deleted.
    - `deleteRequestedAt` number, nullable: A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.
    - `disabledAt` number: A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.
    - `disabledReason` 'account-plan-downgrade' | 'disabled-by-admin' | 'disabled-by-owner' | 'feature-not-available' | 'original-owner-left-the-team' | 'original-owner-role-downgraded'
    - `externalId` string: An external identifier defined by the integration vendor.
    - `id` string: The unique identifier of the configuration
    - `installationType` 'external' | 'marketplace': Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'
    - `integrationId` string: The unique identifier of the app the configuration was created for
    - `ownerId` string: The user or team ID that owns the configuration
    - `projects` string[]: When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.
    - `scopes` string[]: The resources that are allowed to be accessed by the configuration.
    - `slug` string: The slug of the integration the configuration is created for.
    - `source` 'backoffice' | 'cli' | 'deploy-button' | 'external' | 'import-recommended-integrations' | 'marketplace' | 'oauth' | 'organization' | 'project-overview-recommended-integrations' | 'resource-claims' | 'v0': Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.
    - `status` 'error' | 'onboarding' | 'pending' | 'ready' | 'resumed' | 'suspended' | 'uninstalled': The configuration status. Optional. If not defined, assume 'ready'.
    - `teamId` string, nullable: When the configuration was created for a team, this will show the ID of the team.
    - `type` 'integration-configuration'
    - `updatedAt` number: A timestamp that tells you when the configuration was updated.
    - `userId` string: The ID of the user that created the configuration.

## Other responses

- `400`: One of the provided values in the request query is invalid.
- `401`: The request is not authorized.
- `403`: You do not have permission to access this resource.
- `404`: The configuration was not found
- `410`

## Changes

- **2026-10-29** `c6b2c5c1b2d8`: 1 breaking, 1 info
  - added `subschema #1, subschema #2, subschema #3` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the response body `oneOf` list for the response status `200`
- **2026-10-29** `87e0921b68b8`: 1 breaking
  - removed the required property `oneOf[subschema #1]/transferRequest` from the response with the `200` status
- **2026-09-04** `f68cf4bd73b4`: 1 breaking, 1 info
  - added `subschema #1, subschema #2, subschema #3` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the response body `oneOf` list for the response status `200`
- **2026-08-04** `ed45a5c919e5`: 1 breaking, 1 info
  - added `subschema #1, subschema #2, subschema #3` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the response body `oneOf` list for the response status `200`
- **2026-07-21** `2ae10ee9d21c`: 1 info
  - added the non-success response with the status `410`

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v1/integrations/configuration/:id/get.md)

---

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