Use the REST API to get information about GitHub App installations and perform actions within those installations.
A GitHub App installation refers to the installation of the app on an organization or user account. For information on how to authenticate as an installation and limit access to specific repositories, see Authenticating as a GitHub App installation.
To list all GitHub App installations for an organization, see REST API endpoints for organizations.
Note
Most endpoints use Authorization: Bearer <YOUR-TOKEN> and Accept: application/vnd.github+json headers, plus X-GitHub-Api-Version: 2026-03-10. Curl examples below omit these standard headers for brevity.
GET /installation/repositories
List repositories that an app installation can access.
accept (string)application/vnd.github+json is recommended.per_page (integer)
The number of results per page (max 100). For more information, see "Using pagination in the REST API."
Default: 30
page (integer)
The page number of the results to fetch. For more information, see "Using pagination in the REST API."
Default: 1
200 - OK
304 - Not modified
401 - Requires authentication
403 - Forbidden
Request:
curl -L \
-X GET \
https://api.github.com/installation/repositories
Response schema (Status: 200):
total_count: required, integerrepositories: required, array of items:
id: required, integer, format: int64node_id: required, stringname: required, stringfull_name: required, stringlicense: required, any of:
key: required, stringname: required, stringurl: required, string or null, format: urispdx_id: required, string or nullnode_id: required, stringhtml_url: string, format: uriforks: required, integerpermissions: object:
admin: required, booleanpull: required, booleantriage: booleanpush: required, booleanmaintain: booleanowner: required, Simple User:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringprivate: required, boolean, default: falsehtml_url: required, string, format: uridescription: required, string or nullfork: required, booleanurl: required, string, format: uriarchive_url: required, stringassignees_url: required, stringblobs_url: required, stringbranches_url: required, stringcollaborators_url: required, stringcomments_url: required, stringcommits_url: required, stringcompare_url: required, stringcontents_url: required, stringcontributors_url: required, string, format: urideployments_url: required, string, format: uridownloads_url: required, string, format: urievents_url: required, string, format: uriforks_url: required, string, format: urigit_commits_url: required, stringgit_refs_url: required, stringgit_tags_url: required, stringgit_url: required, stringissue_comment_url: required, stringissue_events_url: required, stringissues_url: required, stringkeys_url: required, stringlabels_url: required, stringlanguages_url: required, string, format: urimerges_url: required, string, format: urimilestones_url: required, stringnotifications_url: required, stringpulls_url: required, stringreleases_url: required, stringssh_url: required, stringstargazers_url: required, string, format: uristatuses_url: required, stringsubscribers_url: required, string, format: urisubscription_url: required, string, format: uritags_url: required, string, format: uriteams_url: required, string, format: uritrees_url: required, stringclone_url: required, stringmirror_url: required, string or null, format: urihooks_url: required, string, format: urisvn_url: required, string, format: urihomepage: required, string or null, format: urilanguage: required, string or nullforks_count: required, integerstargazers_count: required, integerwatchers_count: required, integersize: required, integerdefault_branch: required, stringopen_issues_count: required, integeris_template: boolean, default: falsetopics: array of stringhas_issues: required, boolean, default: truehas_projects: required, boolean, default: truehas_wiki: required, boolean, default: truehas_pages: required, booleanhas_discussions: boolean, default: falsehas_pull_requests: boolean, default: truepull_request_creation_policy: string, enum: all, collaborators_onlyarchived: required, boolean, default: falsedisabled: required, booleanvisibility: string, default: "public"pushed_at: required, string or null, format: date-timecreated_at: required, string or null, format: date-timeupdated_at: required, string or null, format: date-timeallow_rebase_merge: boolean, default: truetemp_clone_token: stringallow_squash_merge: boolean, default: trueallow_auto_merge: boolean, default: falsedelete_branch_on_merge: boolean, default: falseallow_update_branch: boolean, default: falsesquash_merge_commit_title: string, enum: PR_TITLE, COMMIT_OR_PR_TITLEsquash_merge_commit_message: string, enum: PR_BODY, COMMIT_MESSAGES, BLANKmerge_commit_title: string, enum: PR_TITLE, MERGE_MESSAGEmerge_commit_message: string, enum: PR_BODY, PR_TITLE, BLANKallow_merge_commit: boolean, default: trueallow_forking: booleanweb_commit_signoff_required: boolean, default: falseopen_issues: required, integerwatchers: required, integerstarred_at: stringanonymous_access_enabled: booleancode_search_index_status: object:
lexical_search_ok: booleanlexical_commit_sha: stringcustom_properties: object, additional properties allowedrepository_selection: stringDELETE /installation/token
Revokes the installation token you're using to authenticate as an installation and access this endpoint.
Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "Create an installation access token for an app" endpoint.
Request:
curl -L \
-X DELETE \
https://api.github.com/installation/token
Response schema (Status: 204):
GET /user/installations
Lists installations of your GitHub App that the authenticated user has explicit permission (:read, :write, or :admin) to access.
The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
You can find the permissions for the installation under the permissions key.
accept (string)application/vnd.github+json is recommended.per_page (integer)
The number of results per page (max 100). For more information, see "Using pagination in the REST API."
Default: 30
page (integer)
The page number of the results to fetch. For more information, see "Using pagination in the REST API."
Default: 1
200 - You can find the permissions for the installation under the permissions key.
304 - Not modified
401 - Requires authentication
403 - Forbidden
Request:
curl -L \
-X GET \
https://api.github.com/user/installations
Response schema (Status: 200):
total_count: required, integerinstallations: required, array of Installation:
id: required, integeraccount: required, any of:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringdescription: string or nullhtml_url: required, string, format: uriwebsite_url: string or null, format: uriid: required, integernode_id: required, stringname: required, stringslug: required, stringcreated_at: required, string or null, format: date-timeupdated_at: required, string or null, format: date-timeavatar_url: required, string, format: urirepository_selection: required, string, enum: all, selectedaccess_tokens_url: required, string, format: urirepositories_url: required, string, format: urihtml_url: required, string, format: uriapp_id: required, integerclient_id: stringtarget_id: required, integertarget_type: required, stringpermissions: required, App Permissions:
actions: string, enum: read, writeadministration: string, enum: read, writeartifact_metadata: string, enum: read, writeattestations: string, enum: read, writechecks: string, enum: read, writecode_quality: string, enum: read, writecodespaces: string, enum: read, writecontents: string, enum: read, writedependabot_secrets: string, enum: read, writedeployments: string, enum: read, writediscussions: string, enum: read, writeenvironments: string, enum: read, writeissues: string, enum: read, writemerge_queues: string, enum: read, writemetadata: string, enum: read, writepackages: string, enum: read, writepages: string, enum: read, writepull_requests: string, enum: read, writerepository_custom_properties: string, enum: read, writerepository_hooks: string, enum: read, writerepository_projects: string, enum: read, write, adminsecret_scanning_alerts: string, enum: read, writesecrets: string, enum: read, writesecurity_events: string, enum: read, writesingle_file: string, enum: read, writestatuses: string, enum: read, writevulnerability_alerts: string, enum: read, writeworkflows: string, enum: writecustom_properties_for_organizations: string, enum: read, writemembers: string, enum: read, writeorganization_administration: string, enum: read, writeorganization_custom_roles: string, enum: read, writeorganization_custom_org_roles: string, enum: read, writeorganization_custom_properties: string, enum: read, write, adminorganization_copilot_seat_management: string, enum: read, writeorganization_copilot_agent_settings: string, enum: read, writeorganization_copilot_requests: string, enum: readorganization_external_properties_for_repos: string, enum: read, write, adminorganization_announcement_banners: string, enum: read, writeorganization_events: string, enum: readorganization_hooks: string, enum: read, writeorganization_personal_access_tokens: string, enum: read, writeorganization_personal_access_token_requests: string, enum: read, writeorganization_plan: string, enum: readorganization_projects: string, enum: read, write, adminorganization_packages: string, enum: read, writeorganization_secrets: string, enum: read, writeorganization_self_hosted_runners: string, enum: read, writeorganization_user_blocking: string, enum: read, writeemail_addresses: string, enum: read, writefollowers: string, enum: read, writegit_ssh_keys: string, enum: read, writegpg_keys: string, enum: read, writeinteraction_limits: string, enum: read, writeprofile: string, enum: writestarring: string, enum: read, writeenterprise_custom_properties_for_organizations: string, enum: read, write, adminevents: required, array of stringcreated_at: required, string, format: date-timeupdated_at: required, string, format: date-timesingle_file_name: required, string or nullhas_multiple_single_files: booleansingle_file_paths: array of stringapp_slug: required, stringsuspended_by: required, any of:
suspended_at: required, string or null, format: date-timecontact_email: string or nullGET /user/installations/{installation_id}/repositories
List repositories that the authenticated user has explicit permission (:read, :write, or :admin) to access for an installation.
The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
The access the user has to each repository is included in the hash under the permissions key.
accept (string)application/vnd.github+json is recommended.installation_id (integer) (required)
The unique identifier of the installation.
per_page (integer)
The number of results per page (max 100). For more information, see "Using pagination in the REST API."
Default: 30
page (integer)
The page number of the results to fetch. For more information, see "Using pagination in the REST API."
Default: 1
200 - The access the user has to each repository is included in the hash under the permissions key.
304 - Not modified
403 - Forbidden
404 - Resource not found
Request:
curl -L \
-X GET \
https://api.github.com/user/installations/1/repositories
Response schema (Status: 200):
total_count: required, integerrepository_selection: stringrepositories: required, array of items:
id: required, integer, format: int64node_id: required, stringname: required, stringfull_name: required, stringlicense: required, any of:
key: required, stringname: required, stringurl: required, string or null, format: urispdx_id: required, string or nullnode_id: required, stringhtml_url: string, format: uriforks: required, integerpermissions: object:
admin: required, booleanpull: required, booleantriage: booleanpush: required, booleanmaintain: booleanowner: required, Simple User:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringprivate: required, boolean, default: falsehtml_url: required, string, format: uridescription: required, string or nullfork: required, booleanurl: required, string, format: uriarchive_url: required, stringassignees_url: required, stringblobs_url: required, stringbranches_url: required, stringcollaborators_url: required, stringcomments_url: required, stringcommits_url: required, stringcompare_url: required, stringcontents_url: required, stringcontributors_url: required, string, format: urideployments_url: required, string, format: uridownloads_url: required, string, format: urievents_url: required, string, format: uriforks_url: required, string, format: urigit_commits_url: required, stringgit_refs_url: required, stringgit_tags_url: required, stringgit_url: required, stringissue_comment_url: required, stringissue_events_url: required, stringissues_url: required, stringkeys_url: required, stringlabels_url: required, stringlanguages_url: required, string, format: urimerges_url: required, string, format: urimilestones_url: required, stringnotifications_url: required, stringpulls_url: required, stringreleases_url: required, stringssh_url: required, stringstargazers_url: required, string, format: uristatuses_url: required, stringsubscribers_url: required, string, format: urisubscription_url: required, string, format: uritags_url: required, string, format: uriteams_url: required, string, format: uritrees_url: required, stringclone_url: required, stringmirror_url: required, string or null, format: urihooks_url: required, string, format: urisvn_url: required, string, format: urihomepage: required, string or null, format: urilanguage: required, string or nullforks_count: required, integerstargazers_count: required, integerwatchers_count: required, integersize: required, integerdefault_branch: required, stringopen_issues_count: required, integeris_template: boolean, default: falsetopics: array of stringhas_issues: required, boolean, default: truehas_projects: required, boolean, default: truehas_wiki: required, boolean, default: truehas_pages: required, booleanhas_discussions: boolean, default: falsehas_pull_requests: boolean, default: truepull_request_creation_policy: string, enum: all, collaborators_onlyarchived: required, boolean, default: falsedisabled: required, booleanvisibility: string, default: "public"pushed_at: required, string or null, format: date-timecreated_at: required, string or null, format: date-timeupdated_at: required, string or null, format: date-timeallow_rebase_merge: boolean, default: truetemp_clone_token: stringallow_squash_merge: boolean, default: trueallow_auto_merge: boolean, default: falsedelete_branch_on_merge: boolean, default: falseallow_update_branch: boolean, default: falsesquash_merge_commit_title: string, enum: PR_TITLE, COMMIT_OR_PR_TITLEsquash_merge_commit_message: string, enum: PR_BODY, COMMIT_MESSAGES, BLANKmerge_commit_title: string, enum: PR_TITLE, MERGE_MESSAGEmerge_commit_message: string, enum: PR_BODY, PR_TITLE, BLANKallow_merge_commit: boolean, default: trueallow_forking: booleanweb_commit_signoff_required: boolean, default: falseopen_issues: required, integerwatchers: required, integerstarred_at: stringanonymous_access_enabled: booleancode_search_index_status: object:
lexical_search_ok: booleanlexical_commit_sha: stringcustom_properties: object, additional properties allowedPUT /user/installations/{installation_id}/repositories/{repository_id}
Add a single repository to an installation. The authenticated user must have admin access to the repository.
accept (string)application/vnd.github+json is recommended.installation_id (integer) (required)
The unique identifier of the installation.
repository_id (integer) (required)
The unique identifier of the repository.
204 - No Content
304 - Not modified
403 - Forbidden
404 - Resource not found
Request:
curl -L \
-X PUT \
https://api.github.com/user/installations/1/repositories/REPOSITORY_ID
Response schema (Status: 204):
DELETE /user/installations/{installation_id}/repositories/{repository_id}
Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the repository_selection of selected.
To use a PAT (classic) with this endpoint, the repo scope is required
accept (string)application/vnd.github+json is recommended.installation_id (integer) (required)
The unique identifier of the installation.
repository_id (integer) (required)
The unique identifier of the repository.
204 - No Content
304 - Not modified
403 - Forbidden
404 - Resource not found
422 - Returned when the application is installed on all repositories in the organization, or if this request would remove the last repository that the application has access to in the organization.
Request:
curl -L \
-X DELETE \
https://api.github.com/user/installations/1/repositories/REPOSITORY_ID
Response schema (Status: 204):