Articles

Articles, their revisions, comments and tags.

MethodPathSummary
GET/v1/app/kb/articles/slug/:slugBy slug
GET/v1/app/kb/articles/:article_idArticle (ACL)
PUT/v1/app/kb/articles/:article_idUPDATE article metadata (write on article/collection/space)
DELETE/v1/app/kb/articles/:article_idArticle
GET/v1/app/kb/articles/:article_id/contentContent (same read checks as article)
GET/v1/app/kb/articles/:article_id/versionsVersions (requires read)
GET/v1/app/kb/articles/:article_id/versions/:version_idVersion (read)
POST/v1/app/kb/articles/:article_id/versionsCREATE new version (write)
DELETE/v1/app/kb/articles/:article_id/versions/:version_id(write/manage)
GET/v1/app/kb/tagsTags for tenant (any authenticated user)
POST/v1/app/kb/tagsCreate tag (Global Admin)
PUT/v1/app/kb/tags/:tag_idUpdate tag (Global Admin)
DELETE/v1/app/kb/tags/:tag_id(Global Admin)
GET/v1/app/kb/articles/:article_id/tagsFor an article (requires read on article)
POST/v1/app/kb/articles/:article_id/tagsSet tags for an article (overwrite) – requires write on article
GET/v1/app/kb/articles/:article_id/commentsFor article (requires read)
POST/v1/app/kb/articles/:article_id/commentsCreate comment (requires read on article, usually fine for Reader+)
PUT/v1/app/kb/comments/:comment_idUpdate comment (Global Admin or comment owner)
DELETE/v1/app/kb/comments/:comment_id(Global Admin or owner)
GET/v1/app/kb/articles/trendingMost recently updated articles (as "trending")

#By slug

GET/v1/app/kb/articles/slug/:slug
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/slug/:slug
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
slugrequiredstring

Response 200

FieldTypeDescription
articleany
Example response
JSON
{
  "article": null
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/slug/example' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Article (ACL)

GET/v1/app/kb/articles/:article_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
articleany
Example response
JSON
{
  "article": null
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#UPDATE article metadata (write on article/collection/space)

PUT/v1/app/kb/articles/:article_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Request body JSON

NameTypeDescription
titlestring
slugstring
statusstring
review_interval_daysinteger
owner_user_idinteger
space_idinteger
collection_idinteger

Response 200

FieldTypeDescription
articleany
Example response
JSON
{
  "article": null
}

Errors

StatusMessage
404User not found
404Article not found
403No write permission on article
409An article with that title already exists in this collection.
409An article with that slug already exists. Try a different title.

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7,"space_id":7,"collection_id":7}'

#Article

DELETE/v1/app/kb/articles/:article_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
404Article not found
403No permission to archive article

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Content (same read checks as article)

GET/v1/app/kb/articles/:article_id/content
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/content
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
versionany
Example response
JSON
{
  "version": null
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article
404Current article version not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/content' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Versions (requires read)

GET/v1/app/kb/articles/:article_id/versions
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/versions
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
versionsarray of object
versions[].idinteger
versions[].tenant_idinteger
versions[].article_idinteger
versions[].version_numberinteger
versions[].titlestring
versions[].content_markdownstring
versions[].content_htmlstring, or null
versions[].content_searchstring, or null
versions[].change_summarystring, or null
versions[].created_byinteger
versions[].created_atstring (date-time)
versions[].is_currentboolean
Example response
JSON
{
  "versions": [
    {
      "id": 42,
      "tenant_id": 1,
      "article_id": 7,
      "version_number": 1,
      "title": "Example title",
      "content_markdown": "string",
      "content_html": "<p>…</p>",
      "content_search": "string",
      "change_summary": "string",
      "created_by": 1,
      "created_at": "2026-11-12T09:30:00.000Z",
      "is_current": true
    }
  ]
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Version (read)

GET/v1/app/kb/articles/:article_id/versions/:version_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/versions/:version_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger
version_idrequiredinteger

Response 200

FieldTypeDescription
versionany
Example response
JSON
{
  "version": null
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article
404Article version not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#CREATE new version (write)

POST/v1/app/kb/articles/:article_id/versions
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/versions
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Request body JSON

NameTypeDescription
titlerequiredstring
content_markdownrequiredany
content_htmlany
change_summaryany

Response 201

FieldTypeDescription
versionany
Example response
JSON
{
  "version": null
}

Errors

StatusMessage
400Missing required fields: title, content_markdown
404User not found
404Article not found
403No write permission on article

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Example title","content_markdown":"…","content_html":"…","change_summary":"…"}'

#(write/manage)

DELETE/v1/app/kb/articles/:article_id/versions/:version_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/versions/:version_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger
version_idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
404Article not found
403No permission to delete version
404Article version not found

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Tags for tenant (any authenticated user)

GET/v1/app/kb/tags
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/tags
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Response 200

FieldTypeDescription
tagsarray of object
tags[].idinteger
tags[].tenant_idinteger
tags[].namestring
tags[].slugstring
tags[].color_hexstring, or null
tags[].created_atstring (date-time)
Example response
JSON
{
  "tags": [
    {
      "id": 42,
      "tenant_id": 1,
      "name": "Example name",
      "slug": "example",
      "color_hex": "#2563eb",
      "created_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
404User not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create tag (Global Admin)

POST/v1/app/kb/tags
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/tags
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Request body JSON

NameTypeDescription
namerequiredstring
slugrequiredstring
color_hexany

Response 201

FieldTypeDescription
tagany
Example response
JSON
{
  "tag": null
}

Errors

StatusMessage
400Missing required fields: name, slug
404User not found
403Global admin required to manage tags

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","slug":"example","color_hex":"…"}'

#Update tag (Global Admin)

PUT/v1/app/kb/tags/:tag_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/:tag_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
tag_idrequiredinteger

Request body JSON

NameTypeDescription
namestring
slugstring
color_hexany

Response 200

FieldTypeDescription
tagany
Example response
JSON
{
  "tag": null
}

Errors

StatusMessage
404User not found
403Global admin required to manage tags
404Tag not found

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","slug":"example","color_hex":"…"}'

#(Global Admin)

DELETE/v1/app/kb/tags/:tag_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/:tag_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
tag_idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
403Global admin required to manage tags
404Tag not found

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#For an article (requires read on article)

GET/v1/app/kb/articles/:article_id/tags
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/tags
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
tagsarray of object
tags[].idinteger
tags[].tenant_idinteger
tags[].namestring
tags[].slugstring
tags[].color_hexstring, or null
tags[].created_atstring (date-time)
Example response
JSON
{
  "tags": [
    {
      "id": 42,
      "tenant_id": 1,
      "name": "Example name",
      "slug": "example",
      "color_hex": "#2563eb",
      "created_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Set tags for an article (overwrite) – requires write on article

POST/v1/app/kb/articles/:article_id/tags
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/tags
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Request body JSON

NameTypeDescription
tag_idsarray of any

Response 200

FieldTypeDescription
tagsarray of object
tags[].idinteger
tags[].tenant_idinteger
tags[].namestring
tags[].slugstring
tags[].color_hexstring, or null
tags[].created_atstring (date-time)
Example response
JSON
{
  "tags": [
    {
      "id": 42,
      "tenant_id": 1,
      "name": "Example name",
      "slug": "example",
      "color_hex": "#2563eb",
      "created_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
400tag_ids must be an array of tag IDs
404User not found
404Article not found
403No write permission on article

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tag_ids":[]}'

#For article (requires read)

GET/v1/app/kb/articles/:article_id/comments
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/comments
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Response 200

FieldTypeDescription
commentsarray of object
comments[].idinteger
comments[].tenant_idinteger
comments[].article_idinteger
comments[].parent_idinteger, or null
comments[].bodystring
comments[].created_byinteger
comments[].created_atstring (date-time)
comments[].resolved_atstring (date-time), or null
Example response
JSON
{
  "comments": [
    {
      "id": 42,
      "tenant_id": 1,
      "article_id": 7,
      "parent_id": 7,
      "body": "<p>…</p>",
      "created_by": 1,
      "created_at": "2026-11-12T09:30:00.000Z",
      "resolved_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create comment (requires read on article, usually fine for Reader+)

POST/v1/app/kb/articles/:article_id/comments
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/:article_id/comments
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
article_idrequiredinteger

Request body JSON

NameTypeDescription
bodyrequiredany
parent_idinteger

Response 201

FieldTypeDescription
commentany
Example response
JSON
{
  "comment": null
}

Errors

StatusMessage
400Comment body is required
404User not found
404Article not found
403No access to this article

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"…","parent_id":7}'

#Update comment (Global Admin or comment owner)

PUT/v1/app/kb/comments/:comment_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/:comment_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
comment_idrequiredinteger

Request body JSON

NameTypeDescription
bodyany
resolvedboolean

Response 200

FieldTypeDescription
commentany
Example response
JSON
{
  "comment": null
}

Errors

StatusMessage
404User not found
404Comment not found
403No permission to edit comment

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"…","resolved":false}'

#(Global Admin or owner)

DELETE/v1/app/kb/comments/:comment_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/:comment_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
comment_idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
404Comment not found
403No permission to delete comment

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7' \
  -H "X-API-Key: $BRAMBLE_KEY"