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

# Get an integration

`GET /integration/{integration_id}/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/integration/{integration_id}/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Get an integration by its ID.

## Path parameters

- `integration_id` string, uuid, required

## Response `200`

Successful Response

- IntegrationRead: Response model for List Integrations endpoint. This model specifically does not include the config field. Use the integration specific read model whenever possible.
  - `connect_method` 'oauth_connect' | 'credentials_form': How a user connects an integration in the UI. Extensible: as app listings gain non-OAuth connect flows (e.g. install-bound URL secret, per-install signature), add members here rather than another boolean. An integration *type* can advertise more than one of these (see ``IntegrationTypeRead.connect_methods``); a specific *connection* records the single method it was created with on ``IntegrationModel.connect_method``.
  - `created_at` string, date-time, required
  - `created_by_actor_type` 'user' | 'api' | 'system', required: Who authorised an action.
  - `created_by_display_name` string, nullable: Display name of the creator. User's full name or 'API - {key name}'.
  - `health_checked_at` string, date-time, nullable: When the latest health check was performed.
  - `health_error_code` string, nullable: Machine-readable error code from the latest health check (e.g. 'unauthorized', 'insufficient_permissions', 'rate_limited'). Drives the 'Action required: reauthorize' state and Reconnect CTA when it is 'unauthorized' or 'insufficient_permissions'. Null if never checked or healthy.
  - `health_error_message` string, nullable: Error message from the latest health check, if unhealthy.
  - `health_status` 'healthy' | 'warning' | 'error'
  - `id` string, uuid, required
  - `integration_type` string, required: The type of the integration.
  - `kind` 'source' | 'destination' | 'both', required: Query filter: source-only, destination-only, or both.
  - `name` string, required: The name of the integration as defined by the user.
  - `org_id` string, required
  - `record_types` IntegrationRecordTypeReadSchema[]: Record types this integration supports, as display-ready chips matching the Data tab. Wildcard integrations also include a 'Custom' marker.
    - `display_name` string, required: Human-readable name (e.g. 'Person', 'Contacts', 'Custom').
    - `is_custom` boolean, required: True for the wildcard 'Custom' marker (arbitrary/dynamic record types).
    - `slug` string, required: The record-type slug (e.g. 'person', 'contacts'), or '*' for Custom.
  - `updated_at` string, date-time, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Integration not found
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
