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

ParameterTypeDescription
statusdraft | published
categoryIdstring
qstringCase-insensitive match on the title or body.
limitnumberPage size, 1 to 100. Default 50.
cursorstringThe 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

StatusMeaning
404No 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

FieldTypeDescription
titlerequiredstring
bodyrequiredstringPlain text. Blank lines separate paragraphs.
statusdraft | publishedOnly published articles appear on the help centre and ground the support AI. Default "draft".
categoryIdstring | null

Responses

StatusMeaning
201Body: { 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

FieldTypeDescription
titlestring
bodystringPlain text. Blank lines separate paragraphs.
statusdraft | publishedOnly published articles appear on the help centre and ground the support AI.
categoryIdstring | null

Responses

StatusMeaning
200Body: { article }.
404No 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

StatusMeaning
200Body: { deleted: true }.
404No 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
}