Creates a new knowledge base article for your organization. After creation, the article is automatically indexed for semantic search so Theo AI can reference it when responding to customer conversations.
Method: POST URL: /api/v1/kb/articles
Articles are automatically embedded and indexed into Theo AI’s vector search. This happens asynchronously — if indexing fails, the article is still saved and you can recreate it to retry indexing.
Plan limits
| Plan | Max articles |
|---|
| Free | 5 |
| Mini | 25 |
| Pro | 1,000 |
| Header | Value |
|---|
| Authorization | Bearer |
| Content-Type | application/json |
Body
The title of the article. Used as context when Theo AI performs semantic search.
The full text content of the article. Write this in plain language — the AI reads it as-is to answer customer questions.
Optional array of tag strings to categorize the article (e.g., ["billing", "refunds"]).
Response
Unique integer ID of the created article.
ID of the business that owns the article.
Full text content of the article.
Array of tags associated with the article.
ISO 8601 timestamp of when the article was created.
Example
curl --request POST \
--url https://api.pingback.live/api/v1/kb/articles \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"title": "How to cancel your subscription",
"content": "You can cancel your subscription at any time from the Billing page in your account settings. Cancellations take effect at the end of the current billing period. No refunds are issued for partial months.",
"tags": ["billing", "cancellation", "subscription"]
}'
const response = await fetch('https://api.pingback.live/api/v1/kb/articles', {
method: 'POST',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'How to cancel your subscription',
content: 'You can cancel your subscription at any time from the Billing page in your account settings. Cancellations take effect at the end of the current billing period. No refunds are issued for partial months.',
tags: ['billing', 'cancellation', 'subscription']
})
});
const article = await response.json();
Response example
{
"id": 43,
"business_id": 7,
"title": "How to cancel your subscription",
"content": "You can cancel your subscription at any time from the Billing page in your account settings. Cancellations take effect at the end of the current billing period. No refunds are issued for partial months.",
"tags": ["billing", "cancellation", "subscription"],
"created_at": "2024-01-20T15:45:00Z"
}
Errors
| Status | Meaning |
|---|
| 400 | User does not belong to an organization |
| 401 | Unauthorized — missing or invalid token |
| 402 | Article limit reached — upgrade your plan to add more articles |