---
title: "Bulk Insert"
method: POST
path: "/internal/knowledge/bulk_insert"
tags: ["RAG internal"]
---

# Bulk Insert

`POST /internal/knowledge/bulk_insert`

## Request

- Base URL: `https://api.emile.wine` (the document declares no server; this is the origin it was published from)
- URL: `https://api.emile.wine/internal/knowledge/bulk_insert`
- Auth: none declared

Insert pre-embedded chunks. The ingestion script computes embeddings
in bulk (cheaper than per-query) and pushes them here.

## Headers

- `x-internal-secret` string

## Request body

- BulkInsertRequest: Wrapper for the bulk_insert payload — keeps the door open for future top-level metadata (batch_id, source_run, etc.) without breaking the wire format.
  - `chunks` KnowledgeChunk[], required
    - `id` string, nullable
    - `source` string, required
    - `source_url` string, nullable
    - `content_text` string, required
    - `content_embedding` number[], nullable
    - `language` 'fr' | 'en', required
    - `pillar` 'vins' | 'viticulture' | 'cave' | 'sommellerie' | 'accord' | 'appellations', required
    - `topic` string, nullable
    - `token_count` integer, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

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