# Repository connections API

The repository connections API lets organization administrators list and inspect connected source control integrations. Repository connections provide a consistent representation across GitHub, GitHub Enterprise Server, Bitbucket Server, and GitLab Self-Managed connection types.

These endpoints are read-only and do not return credentials or other secret values. The endpoints require the `read_organization_repository_connections` [OAuth scope](/docs/apis/managing-api-tokens#token-scopes) and organization administrator access.

## Repository connection data model

List responses contain the following fields:



| `id` | Stable UUID for the repository connection |
| --- | --- |
| `type` | Connection type: `github_app`, `github_code_access_app`, `github_enterprise_app`, `github_restricted_app`, `github_enterprise`, `bitbucket_server`, or `gitlab_self_managed` |
| `display_name` | Human-readable name for the connection |
| `url` | Canonical API URL for the repository connection |



Get responses also contain the following fields:



| `service_account` | Connected service account with its `login`, or `null` for host-only connections |
| --- | --- |
| `host` | Source control host details, or `null` when they are unavailable. Contains `type` and `url`. Depending on the provider, the host can also contain `webhook_allowed_addresses`, `verify_server_cert`, `authentication_strategy`, or `proxy_auth_strategy` |
| `rate_limit` | Cached provider rate-limit details, or `null` when they are unavailable or do not apply. When present, contains `limit`, `used`, `remaining`, and `reset_at` |



Bitbucket Server connections with multiple configured URLs return a comma-separated value in `host.url`.

## List repository connections

Returns an unpaginated list of repository connections for an organization.

```bash
curl -H "Authorization: Bearer $TOKEN" \
  -X GET "https://api.buildkite.com/v2/organizations/{org.slug}/repository_connections"
```

```json
[
  {
    "id": "01234567-89ab-cdef-0123-456789abcdef",
    "type": "github_code_access_app",
    "display_name": "GitHub (acme-inc)",
    "url": "https://api.buildkite.com/v2/organizations/acme-inc/repository_connections/01234567-89ab-cdef-0123-456789abcdef"
  },
  {
    "id": "12345678-9abc-def0-1234-56789abcdef0",
    "type": "gitlab_self_managed",
    "display_name": "GitLab Self-Managed",
    "url": "https://api.buildkite.com/v2/organizations/acme-inc/repository_connections/12345678-9abc-def0-1234-56789abcdef0"
  }
]
```

Required scope: `read_organization_repository_connections`

Required permission: organization administrator access

Success response: `200 OK`

## Get a repository connection

Returns a repository connection by its ID.

```bash
curl -H "Authorization: Bearer $TOKEN" \
  -X GET "https://api.buildkite.com/v2/organizations/{org.slug}/repository_connections/{id}"
```

```json
{
  "id": "01234567-89ab-cdef-0123-456789abcdef",
  "type": "github_code_access_app",
  "display_name": "GitHub (acme-inc)",
  "url": "https://api.buildkite.com/v2/organizations/acme-inc/repository_connections/01234567-89ab-cdef-0123-456789abcdef",
  "service_account": {
    "login": "acme-inc"
  },
  "host": {
    "type": "github",
    "url": "https://github.com"
  },
  "rate_limit": {
    "limit": 5000,
    "used": 42,
    "remaining": 4958,
    "reset_at": "2026-07-16T06:00:00Z"
  }
}
```

Required scope: `read_organization_repository_connections`

Required permission: organization administrator access

Success response: `200 OK`

Error responses:



| `400 Bad Request` | The connection ID is not a valid UUID. |
| --- | --- |
| `403 Forbidden` | The token does not have the required scope or the user does not have organization administrator access. |
| `404 Not Found` | The repository connection does not exist or belongs to a different organization. |


