---
title: "Create a GitHub integration"
method: POST
path: "/v1/integrations/github"
tags: ["Content"]
---

# Create a GitHub integration

`POST /v1/integrations/github`

Checks that the repository can be read (a personal access token is required for private repositories), connects it, and enables changelog generation for it; blog post and X post outputs start disabled. A webhook secret is generated on creation. Copy the payload URL and secret from the dashboard to receive push and release events.

## Request body

- object
  - `owner` string, required — GitHub user or organization that owns the repository.
  - `repo` string, required — Repository name without the owner.
  - `branch` string, nullable — Branch to read activity from. Defaults to the repository's default branch.
  - `token` string, nullable — GitHub personal access token with read access to the repository. Required for private repositories; public repositories work without one.

## Response `201`

GitHub integration created successfully

- object
  - `github` object, required
    - `id` string, required
    - `displayName` string, required
    - `owner` string, nullable, required
    - `repo` string, nullable, required
    - `defaultBranch` string, nullable, required
  - `organization` object, required
    - `id` string, required
    - `slug` string, required
    - `name` string, required
    - `logo` string, nullable, required

## Other responses

- `400` — Invalid request body or GitHub repository access error
- `401` — Missing or invalid API key
- `403` — Forbidden
- `404` — Organization not found
- `409` — Repository already connected
- `429` — Rate limit exceeded. This endpoint allows 20 requests per 1 minute per API key.
- `503` — Authentication or integration service unavailable

---

[API](https://skmtc.dev/usenotra/apis/notra-api.md) · [All operations](https://skmtc.dev/usenotra/apis/notra-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usenotra/notra-api/revisions/fd2fc44c9208/schema)
