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

# Github Refresh Stuck

`POST /v1/internal/integrations/github/refresh-stuck`

## 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/internal/integrations/github/refresh-stuck`
- Auth: none declared

Heal GitHub installs stranded with an empty repository set (internal sweep).

The platform-wide backstop for the miss `github_refresh` fixes one tenant at a
time: an install whose repositories were still empty on every read inside the
callback's budget is committed empty, and nothing ever re-reads it. This sweep
re-reads every such install under the launcher identity -- so a stuck install
heals without the user pressing Retry, and every future one heals until the
`installation.created` webhook backstop lands. Pass `tenantId` to force-refresh
a single tenant's installs (a one-off) instead of sweeping the empty-set backlog.

Scheduled alongside the reindex-catchup sweep; a no-op when nothing is stuck, so
it is safe to run unconditionally. SETTINGS_MANAGE is not required (and no user
context exists here) because the launcher identity, not a tenant admin, drives it.

## Request body

- RefreshStuckRequest: Body for the stuck-install sweep. Both fields optional; an empty body sweeps.
  - `limit` integer
  - `tenantId` string, uuid, nullable

## 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)
