---
title: "Get GitHub connection"
method: GET
path: "/api/apps/{app_id}/github/connection"
---

# Get GitHub connection

`GET /api/apps/{app_id}/github/connection`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the app's GitHub repository connection, or `connected: false` when it has none.

Reading this refreshes the connection's health as a side effect: an active connection is re-checked against GitHub, and one in `error` or `revoked` is retried, so `status` can change between two calls with nobody touching the app.

`connected` is `false` for an app that never connected and for one whose repository was disconnected, and the rest of the fields are then `null`, so the two cases are indistinguishable here. A connection GitHub revoked, or one that hit an error, is still `connected: true`; `status` is what tells you it needs repair.

Read `webhook_active` here. While it is `false` on a connected app, GitHub isn't telling Base44 about pushes, so nothing pulls automatically and you have to call [Pull changes from GitHub](/api-reference/pull-changes-from-github) yourself.

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

## Path parameters

- `app_id` string, required — ID of the app whose GitHub connection to use.

## Response `200`

The app's GitHub connection.

- ConnectionStatus — Current connection status for an app.
  - `connected` boolean, required — `true` when the app still has its repository connection, including one whose `status` is `error` or `revoked`. `false` only when the app never connected and when its repository was disconnected.
  - `repo_full_name` string, nullable — Full repository name, as `owner/repo`. `null` when `connected` is `false`.
  - `repo_url` string, nullable — URL of the repository on GitHub. `null` when `connected` is `false`.
  - `clone_urls` CloneUrls — Repository clone URLs in different formats.
    - `https` string, required — URL to clone the repository over HTTPS.
    - `ssh` string, required — URL to clone the repository over SSH.
    - `gh_cli` string, required — Ready-to-run GitHub CLI clone command.
  - `org_name` string, nullable — GitHub username or organization that owns the repository. `null` when `connected` is `false`.
  - `status` 'active' | 'disconnected' | 'error' | 'revoked' — Status of GitHub repository connection. - ACTIVE: Connection is working normally - DISCONNECTED: User manually disconnected - ERROR: Technical error occurred - REVOKED: User revoked OAuth permissions
  - `installation_id` string, nullable — ID of the Base44 GitHub App installation backing this connection. `null` when `connected` is `false`, and on a connection stored without one.
  - `webhook_active` boolean — `true` when the repository has the Base44 webhook that triggers automatic pulls. While this is `false` on a connected app, GitHub isn't telling Base44 about pushes, so nothing arrives until you pull.
  - `connected_by_user_id` string, nullable — ID of the Base44 user who connected the repository. `null` when `connected` is `false`.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, or you used a workspace API key. These endpoints take a personal API key.
- `404` — App not found.
- `422` — Validation Error

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/31ef75eb64ab/schema)
