---
title: "Ingest brand assets from public HTTPS URLs into the project media library"
method: POST
path: "/brand-kit/ingest-assets"
---

# Ingest brand assets from public HTTPS URLs into the project media library

`POST /brand-kit/ingest-assets`

## Request

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

Downloads each asset URL server-side (private/internal addresses and redirects are rejected) and persists it the same way a dashboard upload would. Raw file bytes are not accepted in the request body — provide URLs only.

## Request body

- object
  - `assets` object[], required
    - `url` string, uri, required: Public HTTPS asset URL.
    - `kind` 'logo' | 'image' | 'document' | 'font' | 'avatar' | 'video'
    - `filename` string
  - `collection` string
  - `tags` string[]

## Response `200`

Per-asset ingest results plus imported/failed counts

## Other responses

- `400`: assets is missing, empty, or exceeds the 25-item limit
- `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)
