Ingest files and text
All file and text uploads go through a single unified endpoint that acceptsmultipart/form-data. You describe what you’re uploading with a JSON manifest and attach the actual file bytes separately.
Endpoint: POST /v1/knowledge-base/knowledge-bases/{kb_id}/ingest
The request has two parts:
Manifest item formats:
type of either text (inline content) or file (references an uploaded file part by its zero-based index). The title is stored with the document and surfaces in search results.
Full example — uploading a file and a text snippet together:
queued (accepted for processing) or duplicate (an identical document already exists in the knowledge base and was skipped). Save the ingestion_job_id to track progress.
Track ingestion status
Ingestion is asynchronous. Documents move through a pipeline —queued → processing → completed (or failed). Poll the job endpoint until status reaches a terminal state.
Poll a specific job:
Check aggregate status across the whole knowledge base:
pending, processing, active (indexed and live), draft, archived, failed, and quarantined, with total summing them. Use this endpoint on the dashboard or during health checks to confirm your knowledge base is fully indexed — i.e. all documents are active — before going live.
Connect external sources
For Notion pages, Google Drive folders, and S3 buckets, Feather syncs content automatically rather than requiring manual uploads. The flow is: create a connection → add the source → define roots → trigger a sync → optionally schedule recurring syncs.External source integrations require an active integration connection for your provider. See Connect an Integration to set one up before continuing.
1
Add the source to your knowledge base
provider: notion, google_drive, s3, and url (web pages). notion and google_drive require an active integration connection; s3 accepts inline credentials and url needs no connection.2
Add roots
Roots define the top-level pages, folders, or prefixes that Feather will crawl. Everything nested beneath a root is included in the sync.You can add multiple roots to the same source — for example, different top-level Notion pages for different product areas.
3
Trigger a manual sync
ingestion-jobs/{job_id} endpoint covered in the previous section.4
Enable automatic recurring syncs
Keep your knowledge base fresh by scheduling periodic syncs. Set The example above syncs the source every hour (
sync_interval_seconds to control how often Feather re-crawls the source.3600 seconds). Set auto_sync_enabled: false to pause automatic syncing without deleting the schedule configuration.Search your knowledge base
Before connecting a knowledge base to an assistant, validate that your content is indexed and returning relevant results.What’s next?
Knowledge Base API Reference
Full endpoint reference for knowledge bases, ingestion jobs, sources, and search.