---
title: "Push GitHub-sourced files into the Brand Kit media library"
method: POST
path: "/brand-kit/github-ingest"
---

# Push GitHub-sourced files into the Brand Kit media library

`POST /brand-kit/github-ingest`

## Request

- Base URL: `https://sendinel.ai/api/v1`
- URL: `https://sendinel.ai/api/v1/brand-kit/github-ingest`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://sendinel.ai/oauth/authorize`, token URL `https://sendinel.ai/oauth/token`)

Accepts a Synchronex-pushed batch of repo-relative files, rejects the whole request when no repo binding exists, and rejects individual files outside the registered path prefix while importing in-scope siblings. Imported assets use source imported with metadata.cloud_provider github.

## Request body

- object
  - `repo` string, required
  - `ref` string
  - `brand_kit_id` string, uuid, nullable
  - `collection` string
  - `tags` string[]
  - `files` object[], required
    - `path` string, required
    - `content_base64` string: Base64-encoded file bytes. Required unless content_url is provided.
    - `content_url` string, uri: Public HTTPS URL fetched with the same SSRF protections as ingest-assets.
    - `mime_type` string
    - `sha` string

## Response `200`

Per-file GitHub ingest results plus imported, failed, and rejected_out_of_scope counts

## Other responses

- `400`: Invalid request body, repo, files, or brand_kit_id
- `403`: No approved GitHub connection exists for this repo
- `404`: Project not found

---

[API](https://skmtc.dev/sendinel/apis/sendinel-api.md) · [All operations](https://skmtc.dev/sendinel/apis/sendinel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sendinel/apis/sendinel-api/revisions/20b2c6d5616d?raw)
