---
title: "Github Refresh"
method: POST
path: "/v1/integrations/github/refresh"
---

# Github Refresh

`POST /v1/integrations/github/refresh`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/integrations/github/refresh`
- Auth: HTTP bearer

Re-read this tenant's GitHub installations from GitHub and re-sync them.

The recovery path for the failure this module's discovery backoff narrows but
cannot close: an install whose repository set was still empty on every read
inside the callback's budget. Nothing else ever re-reads it -- the
`installation` webhook covers suspend/resume, `installation_repositories`
only a later add/remove -- so without this the stored empty set is permanent
and the wizard's "Retry" just re-reads our own database and fails identically
forever. This makes that button do the one thing that can actually help.

Reports what is true rather than inferring it from the repository count, so
the caller can tell "GitHub is not connected" apart from "GitHub is connected
and shared no repositories" -- two states the wizard used to collapse into a
single, terminal-sounding "no verified installation was found".

SETTINGS_MANAGE, the same permission that issued the install URL: this
re-reads third-party state for the tenant and rewrites repository rows.

## Headers

- `X-Graphify-Tenant-ID` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
