Overview
The Custom KB Connector allows you to:- Sync articles from any REST API you control
- Keep your knowledge base automatically updated (daily, weekly, or manual)
- Receive instant updates via webhooks when content changes
- Map your API’s response format to Cevro’s article schema
Quick Start
1
Create your API endpoint
Build a REST endpoint that returns your articles in JSON format.
2
Test the connection
Use the “Test Connection” feature in Cevro to verify your endpoint works.
3
Configure the connector
Set up authentication, field mapping, and sync frequency.
4
Start syncing
Trigger the initial sync and watch your articles appear in Cevro.
API Requirements
Your endpoint must return articles in JSON format. Cevro supports flexible field mapping, so you can adapt to most response structures.Basic Response Format
Required Fields
| Field | Description |
|---|---|
id | Unique identifier for the article. Used to track updates and removals. |
title | Article title displayed to users and used for search. |
content | Article body. Can be HTML or plain text. |
Optional Fields
| Field | Description |
|---|---|
url | Source URL for the article (displayed to users) |
category | Category or folder for organization |
lastModified | ISO 8601 timestamp for incremental sync |
Field names are fully customizable. If your API uses
body instead of content, or modified_at instead of lastModified, you can configure this in the field mapping.Authentication
Cevro supports four authentication methods:- Bearer Token
- Basic Auth
- API Key
- Custom Header
Field Mapping
If your API response doesn’t match the default format, configure field mapping using JSONPath expressions.Default Mapping
Custom Mapping Examples
Nested articles array:Pagination
Cevro supports cursor-based and offset pagination to handle large article collections.Cursor Pagination (Recommended)
Your API should accept a cursor parameter and return the next cursor in the response: Request:GET /articles?cursor=abc123&limit=100
Response:
Offset Pagination
If your API uses page numbers or offsets: Request:GET /articles?offset=100&limit=100
Configuration:
No Pagination
For small knowledge bases that return all articles in a single response:Webhooks
Enable instant syncs when your content changes by sending a webhook to Cevro.Webhook URL
After creating your connector, you’ll receive a webhook URL:Sending a Webhook
When your content changes, POST to the webhook URL:Webhook Payload
| Field | Type | Description |
|---|---|---|
event | string | Must be "content_updated" |
timestamp | string | ISO 8601 timestamp of the change |
changedIds | string[] | (Optional) Specific article IDs that changed |
Security
- The webhook secret is provided when you create the connector (shown only once)
- Include the secret in the
X-Webhook-Secretheader - Webhooks are rate-limited to 10 requests per minute
Sync Frequency
Choose how often Cevro fetches your articles:| Frequency | Description |
|---|---|
| Daily | Syncs every day at 1 AM (default) |
| Weekly | Syncs every Monday at 1 AM |
| Manual | Only syncs when you trigger it |
Content Guidelines
HTML Content
Article content can include HTML. Cevro will:- Preserve formatting (headings, lists, links, tables)
- Remove
<script>tags for security - Remove inline event handlers (
onclick,onload, etc.) - Truncate content exceeding 10 MB
Best Practices
Use semantic HTML
Structure content with proper headings (
h1, h2), lists, and paragraphs for better AI comprehension.Include context
Articles should be self-contained. The AI may not see other articles when answering a question.
Keep titles descriptive
Use clear, searchable titles. “Password Reset” is better than “Article 47”.
Update lastModified
Including timestamps helps Cevro identify which articles have changed.
Troubleshooting
Connection test fails with 'No articles found'
Connection test fails with 'No articles found'
Check your
articlesPath field mapping. If your API returns { "data": [...] } instead of { "articles": [...] }, update the mapping to "$.data".Authentication error
Authentication error
Verify your credentials are correct. For Bearer tokens, ensure you’re not including the “Bearer ” prefix in the token value (Cevro adds it automatically).
Sync times out
Sync times out
Large knowledge bases may take time to sync. Check the sync logs for progress. If consistently timing out, consider:
- Increasing your API’s timeout
- Reducing the number of articles per page
- Filtering to essential articles only
Articles not updating
Articles not updating
Ensure your API returns different content when articles change. Cevro compares article content to detect updates. Also verify the
lastModified field is updating correctly.Webhook not triggering sync
Webhook not triggering sync
- Verify the
X-Webhook-Secretheader matches the secret shown during connector creation - Check that your request body includes
"event": "content_updated" - Webhooks are rate-limited to 10/minute
API Reference
Test Connection
Test your endpoint configuration without creating a connector.Trigger Manual Sync
forceFresh=true- Re-sync all articles, ignoring lastModified timestamps
View Sync Logs
Security
Cevro implements several security measures:- Credential encryption: All credentials are encrypted at rest using AES-256
- SSRF protection: Internal/private IP addresses are blocked (localhost, 10.x.x.x, 192.168.x.x, etc.)
- Content sanitization: Script tags and event handlers are removed from article content
- Rate limiting: Webhooks are limited to 10 requests per minute
- Webhook authentication: Constant-time comparison prevents timing attacks on secrets