Returns a paginated list of knowledge-base articles resolved for the requested locale.
/api/kb/articlesReturns a paginated list of knowledge-base articles resolved for the requested locale. Filter by publication status or category, then paginate with offset and limit. Each item includes localization lifecycle metadata.
Bearer API key or X-API-Key header.knowledge-base:readautomation_api)Maximum number of resources to return.
One-based page number.
Zero-based number of resources to skip.
Query parameter. BCP 47 locale or language tag used for localized content.
Query parameter. Search text.
Query parameter. Unique identifier of the related category.
Query parameter. Status. Allowed values: draft, reviewed, published.
Query parameter. Sort by. Allowed values: createdAt, updatedAt.
Query parameter. Sort direction. Allowed values: asc, desc.
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"data": [
{
"id": "b9a6e922-23ed-4dde-99e8-76d0cf2a0038",
"orgId": "8ea0b557-d794-41ce-b86e-44f4780da2b5",
"categoryId": "6ecda99e-e055-46bd-b0fb-d33ed475b00b",
"tags": [
"billing",
"refund"
],
"title": "How refunds work",
"slug": "how-refunds-work",
"content": "Refunds are reviewed and returned to the original payment method.",
"status": "published",
"locale": "en",
"fallbackUsed": false,
"translations": [
{
"id": "a5bd4fbf-3bc3-414a-87ca-dd3f96098ea3",
"locale": "en",
"status": "published",
"sourceLocale": null,
"machineTranslatedAt": null,
"reviewedAt": null,
"reviewedBy": null,
"title": "How refunds work",
"slug": "how-refunds-work",
"content": "Refunds are reviewed and returned to the original payment method.",
"createdAt": "2026-08-03T18:00:00.000Z",
"updatedAt": "2026-08-03T18:00:00.000Z"
}
],
"deletedAt": null,
"createdAt": "2026-08-03T18:00:00.000Z",
"updatedAt": "2026-08-03T18:00:00.000Z",
"ownerOperatorId": "3f042a6a-579c-4c21-9fd4-c3a8323d5caf",
"ownerName": "Alex Morgan",
"feedback": {
"helpfulCount": 1,
"notHelpfulCount": 0,
"feedbackCount": 1,
"helpfulnessPercent": 100
}
}
],
"pagination": {
"totalItems": 1,
"page": 1,
"pageSize": 20,
"hasNextPage": false,
"hasPrevPage": false
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"correlationId": "req_01K0MANAGEMENT401"
}
}{
"error": {
"code": "INTEGRATION_MODULE_REQUIRED",
"message": "The automation API module is required.",
"details": {
"module": "automation_api",
"feature": "public_api"
},
"correlationId": "req_01K0MANAGEMENT402"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The caller lacks the required role or API-key scope.",
"correlationId": "req_01K0MANAGEMENT403"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request payload is invalid.",
"details": {
"field": "name"
},
"correlationId": "req_01K0MANAGEMENT422"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests.",
"correlationId": "req_01K0MANAGEMENT429"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}curl --request GET \
'https://api.convor.io/api/kb/articles' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/kb/articles", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer convor_sk_..."
},
});
const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
? null
: contentType.includes("json")
? await response.json()
: contentType.startsWith("text/")
? await response.text()
: await response.blob();
if (!response.ok) {
const message = typeof data === "object" && data !== null
&& "error" in data && typeof data.error === "object"
&& data.error !== null && "message" in data.error
? String(data.error.message)
: "Convor API request failed (" + response.status + ")";
throw new Error(message);
}
console.log(data);Was this page helpful?
List localized categories with published article counts
Returns a paginated category collection resolved for the requested locale, with the number of published articles in each category.
List localized knowledge-base categories
Returns all knowledge-base categories for the authenticated organization, resolved for the requested locale.