Upload, list, read and delete documents directly.
Besides connector-synced content, you can push documents directly — useful for systems without a connector or for generated content.
{
"id": "doc_01j9x4a1b2",
"knowledge_base": "kb_01j9x3k2m7",
"source": "api",
"title": "Supplier onboarding SOP",
"url": "https://intranet.example.com/sop/supplier-onboarding",
"mime_type": "text/markdown",
"language": "en",
"permissions": { "users": ["*"], "groups": [] },
"metadata": { "owner": "operations", "version": "3" },
"status": "indexed",
"updated_at": "2026-09-01T10:00:00Z"
}
| Method | Path | Purpose |
|---|---|---|
GET | /knowledge-bases/{kb}/documents | List (filter: source, status, updated_after) |
POST | /knowledge-bases/{kb}/documents | Create from text/markdown/HTML or a file (multipart) |
GET | /documents/{id} | Retrieve metadata |
GET | /documents/{id}/content | Retrieve extracted text |
PATCH | /documents/{id} | Update title, url, permissions, metadata |
PUT | /documents/{id}/content | Replace content (re-indexes) |
DELETE | /documents/{id} | Delete |
curl -X POST https://api.brewmycode.com/v1/knowledge-bases/kb_01j9x3k2m7/documents \
-H "Authorization: Bearer $BMC_API_KEY" -H "Content-Type: application/json" \
-d '{
"title": "Supplier onboarding SOP",
"url": "https://intranet.example.com/sop/supplier-onboarding",
"content": "# Supplier onboarding\n\n1. Collect …",
"mime_type": "text/markdown",
"permissions": { "groups": ["operations", "finance"] },
"external_id": "sop-supplier-onboarding"
}'
external_id makes the request an upsert: repeating it with the same id replaces the document.
curl -X POST https://api.brewmycode.com/v1/knowledge-bases/kb_01j9x3k2m7/documents \
-H "Authorization: Bearer $BMC_API_KEY" \
-F "file=@handbook.pdf" \
-F 'permissions={"users":["*"]}'
Supported: PDF, DOCX, XLSX, PPTX, CSV, Markdown, HTML, plain text, images (OCR). Max 200 MB.
permissions.users is a list of emails or "*" for everyone in the workspace; permissions.groups is a list of group names. Documents with no permissions are visible to nobody except admins — set them.