The REST API
Push content from any system with an API key, and check what happened.
Updated 2026-09-05Keys
Create one in API keys. A key is shown once; store it then. Each key carries the scopes you choose, can be pinned to a single knowledge base, and can be given an expiry.
Send it as a bearer token:
Authorization: Bearer wai_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSending a document
POST /api/v1/ingest
{
"kb_id": "kb_e0raV5ewROdX",
"external_id": "help-article-42",
"title": "Refund policy",
"content": "# Refund policy\n\nWe refund within 30 days...",
"url": "https://example.com/help/refunds"
}external_id is yours: it is how we recognise the same item next time. Send it again with changed content and the document is updated; send it again unchanged and nothing is re-indexed, which is why a nightly full push costs almost nothing.
Use POST /api/v1/ingest/batch for up to 25 items in one request, and DELETE /api/v1/ingest/{external_id} to remove one.
Checking on it
GET /api/v1/kb/{kb_id}/status returns how many documents are indexed, processing or failed. GET /api/v1/kbs lists the knowledge bases the key can reach.
Indexing is asynchronous: a document is accepted immediately and becomes answerable a moment later.
Limits
Each plan has a daily request budget, shown on the API keys page. A key that exceeds it gets a 429 with the reset time.