---
title: "Build install GitHub App manifest"
method: POST
path: "/install/github/app/manifest"
tags: ["Install"]
---

# Build install GitHub App manifest

`POST /install/github/app/manifest`

Builds the GitHub App manifest and stores the temporary callback state for the browser install. Requires the one-time install token.

## Request body

- InstallGithubAppManifestInput — Input required to build the browser-install GitHub App manifest.
  - `owner` InstallGithubAppOwner, required — Owner of the GitHub App being created during browser install.
    - `kind` 'personal' | 'org', required
    - `slug` string — Required when `kind` is `org`; the organization slug.
  - `app_name` string, required
  - `allowed_username` string, required

## Response `200`

GitHub App manifest ready for browser handoff

- InstallGithubAppManifestResponse — Browser handoff payload for the GitHub App creation flow.
  - `manifest` object, required
  - `github_form_action` string, uri, required
  - `state` string, required — CSRF token the browser must echo back to GitHub as a hidden `state` form field alongside `manifest`. GitHub preserves it on the redirect to `redirect_url` so the server can match the callback to this pending install.

## Other responses

- `401` — Invalid or missing install token
- `422` — Invalid install input or missing prior steps

---

[API](https://skmtc.net/fabro-sh/apis/fabro-run-api.md) · [All operations](https://skmtc.net/fabro-sh/apis/fabro-run-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fabro-sh/fabro-run-api/revisions/bee030053823/schema)
