---
title: "Ingest"
method: POST
path: "/knowledge-base"
---

# Ingest

`POST /knowledge-base`

Ingest a knowledge base entry from a URL or raw content.

## Request body

- union
  - ManualIngestRequest — Request payload for manually ingesting a knowledge base entry with inline content.
    - `kind` 'manual'
    - `title` string, required — Entry title.
    - `content` string, required — Raw text/markdown content.
    - `category_id` string, required — Category ID (memory_categories FK)
    - `source_type` 'manual' | 'notion' | 'confluence' | 'code' | 'dashboard' | 'gitlab_documentation' | 'digital_ocean_service_catalog' | 'log_field' | 'elastic_index' | 'pepsi_service_catalog' | 'appdynamics_mobile_eum' | 'unknown'
    - `type` 'manual' | 'wiki' | 'runbook' | 'postmortem' | 'faq' | 'code_summary' | 'dashboard_summary' | 'log_field_mapping' | 'elastic_index_mapping' | 'service_catalog' | 'metrics-paths' | 'unknown'
    - `tags` string[] — Tags for the entry
  - UrlIngestRequest — Request payload for ingesting a knowledge base entry from a URL.
    - `kind` 'url'
    - `url` string, required — Source URL (e.g. Notion page URL). Content is fetched automatically.
    - `category_id` string, required — Category ID (memory_categories FK)
    - `title` string, nullable — Entry title. Auto-extracted from fetched pages if omitted.
    - `source_type` 'manual' | 'notion' | 'confluence' | 'code' | 'dashboard' | 'gitlab_documentation' | 'digital_ocean_service_catalog' | 'log_field' | 'elastic_index' | 'pepsi_service_catalog' | 'appdynamics_mobile_eum' | 'unknown'
    - `type` 'manual' | 'wiki' | 'runbook' | 'postmortem' | 'faq' | 'code_summary' | 'dashboard_summary' | 'log_field_mapping' | 'elastic_index_mapping' | 'service_catalog' | 'metrics-paths' | 'unknown'
    - `tags` string[] — Tags for the entry

## Response `200`

Successful Response

- IngestKnowledgeBaseResponse — Response for the ingest endpoint.
  - `entry` KnowledgeBaseEntryResponse, required — Response model for a knowledge base entry.
    - `id` string, required
    - `title` string, required
    - `type` 'manual' | 'wiki' | 'runbook' | 'postmortem' | 'faq' | 'code_summary' | 'dashboard_summary' | 'log_field_mapping' | 'elastic_index_mapping' | 'service_catalog' | 'metrics-paths' | 'unknown', required
    - `categoryId` string, nullable
    - `tags` string[]
    - `sourceType` 'manual' | 'notion' | 'confluence' | 'code' | 'dashboard' | 'gitlab_documentation' | 'digital_ocean_service_catalog' | 'log_field' | 'elastic_index' | 'pepsi_service_catalog' | 'appdynamics_mobile_eum' | 'unknown', required
    - `sourceId` string, nullable
    - `sourceUrl` string, nullable
    - `isEnabled` boolean, required
    - `status` 'pending' | 'uploaded' | 'transcribed' | 'metadata_extracted' | 'syncing' | 'ready' | 'error', required
    - `summary` string, nullable
    - `useCase` string, nullable
    - `content` string, nullable
    - `uploadOrigin` 'user' | 'agent' | 'system'
    - `userId` string, nullable
    - `file` KnowledgeBaseFileInfo — File metadata attached to a knowledge base entry.
      - `id` string, required
      - `fileName` string, nullable
      - `contentType` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `lastSyncedAt` string, date-time, nullable
  - `created` boolean, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/traversal/apis/fastapi.md) · [All operations](https://skmtc.net/traversal/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/traversal/fastapi/revisions/2134ebffd1ef/schema)
