List knowledge categories
GET/api/v1/knowledge/categories
Every help-centre category with its parent and article count, in display order.
Example request
curl "https://crowdstack.org/api/v1/knowledge/categories" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"categories": [
{
"id": "cmf3k2x9a0141abcd",
"name": "Billing",
"parentId": null,
"position": 0,
"articleCount": 6
}
]
}List knowledge articles
GET/api/v1/knowledge/articles
Help-centre articles, most recently updated first, without their bodies. Filter by status, category or a search over title and body.
Query parameters
| Parameter | Type | Description |
|---|---|---|
status | draft | published | — |
categoryId | string | — |
q | string | Case-insensitive match on the title or body. |
limit | number | Page size, 1 to 100. Default 50. |
cursor | string | The nextCursor from the previous page. |
Example request
curl "https://crowdstack.org/api/v1/knowledge/articles?status=published" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"articles": [
{
"id": "cmf3k2x9a0140abcd",
"title": "Exporting invoices",
"status": "published",
"category": {
"id": "cmf3k2x9a0141abcd",
"name": "Billing"
},
"createdAt": "2026-09-01T09:00:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z"
}
],
"nextCursor": null
}Get a knowledge article
GET/api/v1/knowledge/articles/:id
One article with its full body as plain text.
Responses
| Status | Meaning |
|---|---|
| 404 | No article with that id. |
Example request
curl "https://crowdstack.org/api/v1/knowledge/articles/cmf3k2x9a0001abcd" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"article": {
"id": "cmf3k2x9a0140abcd",
"title": "Exporting invoices",
"status": "published",
"category": {
"id": "cmf3k2x9a0141abcd",
"name": "Billing"
},
"createdAt": "2026-09-01T09:00:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z",
"body": "Open Billing, choose a date range, then Export."
}
}Create a knowledge article
POST/api/v1/knowledge/articles
Writes a help-centre article from plain text. Publish it immediately or leave it as a draft for someone to review.
Request body
| Field | Type | Description |
|---|---|---|
titlerequired | string | — |
bodyrequired | string | Plain text. Blank lines separate paragraphs. |
status | draft | published | Only published articles appear on the help centre and ground the support AI. Default "draft". |
categoryId | string | null | — |
Responses
| Status | Meaning |
|---|---|
| 201 | Body: { article }. |
Example request
curl -X POST https://crowdstack.org/api/v1/knowledge/articles \
-H "Authorization: Bearer $CROWDSTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Exporting invoices",
"body": "Open Billing, choose a date range, then Export.",
"status": "draft",
"categoryId": "cmf3k2x9a0141abcd"
}'Example response
{
"article": {
"id": "cmf3k2x9a0140abcd",
"title": "Exporting invoices",
"status": "draft",
"category": {
"id": "cmf3k2x9a0141abcd",
"name": "Billing"
},
"createdAt": "2026-09-01T09:00:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z",
"body": "Open Billing, choose a date range, then Export."
}
}Update a knowledge article
PATCH/api/v1/knowledge/articles/:id
Change an article's title, body, status or category. Only keys you send are changed. A new body replaces the whole article, including any rich formatting added in the editor.
Request body
| Field | Type | Description |
|---|---|---|
title | string | — |
body | string | Plain text. Blank lines separate paragraphs. |
status | draft | published | Only published articles appear on the help centre and ground the support AI. |
categoryId | string | null | — |
Responses
| Status | Meaning |
|---|---|
| 200 | Body: { article }. |
| 404 | No article with that id. |
Example request
curl -X PATCH https://crowdstack.org/api/v1/knowledge/articles/cmf3k2x9a0001abcd \
-H "Authorization: Bearer $CROWDSTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "published"
}'Example response
{
"article": {
"id": "cmf3k2x9a0140abcd",
"title": "Exporting invoices",
"status": "published",
"category": {
"id": "cmf3k2x9a0141abcd",
"name": "Billing"
},
"createdAt": "2026-09-01T09:00:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z",
"body": "Open Billing, choose a date range, then Export."
}
}Delete a knowledge article
DELETE/api/v1/knowledge/articles/:id
Permanently deletes an article. Prefer setting status to draft if it might come back.
Responses
| Status | Meaning |
|---|---|
| 200 | Body: { deleted: true }. |
| 404 | No article with that id. |
Example request
curl -X DELETE https://crowdstack.org/api/v1/knowledge/articles/cmf3k2x9a0001abcd \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"deleted": true
}