Articles
Articles, their revisions, comments and tags.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/kb/articles/slug/:slug | By slug |
| GET | /v1/app/kb/articles/:article_id | Article (ACL) |
| PUT | /v1/app/kb/articles/:article_id | UPDATE article metadata (write on article/collection/space) |
| DELETE | /v1/app/kb/articles/:article_id | Article |
| GET | /v1/app/kb/articles/:article_id/content | Content (same read checks as article) |
| GET | /v1/app/kb/articles/:article_id/versions | Versions (requires read) |
| GET | /v1/app/kb/articles/:article_id/versions/:version_id | Version (read) |
| POST | /v1/app/kb/articles/:article_id/versions | CREATE new version (write) |
| DELETE | /v1/app/kb/articles/:article_id/versions/:version_id | (write/manage) |
| GET | /v1/app/kb/tags | Tags for tenant (any authenticated user) |
| POST | /v1/app/kb/tags | Create tag (Global Admin) |
| PUT | /v1/app/kb/tags/:tag_id | Update tag (Global Admin) |
| DELETE | /v1/app/kb/tags/:tag_id | (Global Admin) |
| GET | /v1/app/kb/articles/:article_id/tags | For an article (requires read on article) |
| POST | /v1/app/kb/articles/:article_id/tags | Set tags for an article (overwrite) – requires write on article |
| GET | /v1/app/kb/articles/:article_id/comments | For article (requires read) |
| POST | /v1/app/kb/articles/:article_id/comments | Create comment (requires read on article, usually fine for Reader+) |
| PUT | /v1/app/kb/comments/:comment_id | Update comment (Global Admin or comment owner) |
| DELETE | /v1/app/kb/comments/:comment_id | (Global Admin or owner) |
| GET | /v1/app/kb/articles/trending | Most 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
| Name | Type | Description |
|---|---|---|
slugrequired | string |
Response 200
| Field | Type | Description |
|---|---|---|
article | any |
Example response
JSON
{
"article": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/slug/example', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/slug/example",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/slug/example' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
article | any |
Example response
JSON
{
"article": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
title | string | |
slug | string | |
status | string | |
review_interval_days | integer | |
owner_user_id | integer | |
space_id | integer | |
collection_id | integer |
Response 200
| Field | Type | Description |
|---|---|---|
article | any |
Example response
JSON
{
"article": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No write permission on article |
| 409 | An article with that title already exists in this collection. |
| 409 | An 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}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7,"space_id":7,"collection_id":7}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7,"space_id":7,"collection_id":7},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7,"space_id":7,"collection_id":7}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' -Headers $headers -ContentType 'application/json' -Body $body#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
version | any |
Example response
JSON
{
"version": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No access to this article |
| 404 | Current 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/content', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/content",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/content' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
versions | array of object | |
versions[].id | integer | |
versions[].tenant_id | integer | |
versions[].article_id | integer | |
versions[].version_number | integer | |
versions[].title | string | |
versions[].content_markdown | string | |
versions[].content_html | string, or null | |
versions[].content_search | string, or null | |
versions[].change_summary | string, or null | |
versions[].created_by | integer | |
versions[].created_at | string (date-time) | |
versions[].is_current | boolean |
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
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer | |
version_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
version | any |
Example response
JSON
{
"version": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No access to this article |
| 404 | Article 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
titlerequired | string | |
content_markdownrequired | any | |
content_html | any | |
change_summary | any |
Response 201
| Field | Type | Description |
|---|---|---|
version | any |
Example response
JSON
{
"version": null
}Errors
| Status | Message |
|---|---|
| 400 | Missing required fields: title, content_markdown |
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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":"…"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"title":"Example title","content_markdown":"…","content_html":"…","change_summary":"…"}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"title":"Example title","content_markdown":"…","content_html":"…","change_summary":"…"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"title":"Example title","content_markdown":"…","content_html":"…","change_summary":"…"}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions' -Headers $headers -ContentType 'application/json' -Body $body#(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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer | |
version_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No permission to delete version |
| 404 | Article 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/versions/7' -Headers $headers#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
| Field | Type | Description |
|---|---|---|
tags | array of object | |
tags[].id | integer | |
tags[].tenant_id | integer | |
tags[].name | string | |
tags[].slug | string | |
tags[].color_hex | string, or null | |
tags[].created_at | string (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
| Status | Message |
|---|---|
| 404 | User not found |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/tags', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/tags",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
namerequired | string | |
slugrequired | string | |
color_hex | any |
Response 201
| Field | Type | Description |
|---|---|---|
tag | any |
Example response
JSON
{
"tag": null
}Errors
| Status | Message |
|---|---|
| 400 | Missing required fields: name, slug |
| 404 | User not found |
| 403 | Global 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":"…"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/tags', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","slug":"example","color_hex":"…"}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/tags",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","slug":"example","color_hex":"…"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","slug":"example","color_hex":"…"}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags' -Headers $headers -ContentType 'application/json' -Body $body#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
| Name | Type | Description |
|---|---|---|
tag_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
slug | string | |
color_hex | any |
Response 200
| Field | Type | Description |
|---|---|---|
tag | any |
Example response
JSON
{
"tag": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 403 | Global admin required to manage tags |
| 404 | Tag 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":"…"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","slug":"example","color_hex":"…"}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","slug":"example","color_hex":"…"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","slug":"example","color_hex":"…"}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7' -Headers $headers -ContentType 'application/json' -Body $body#(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
| Name | Type | Description |
|---|---|---|
tag_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 403 | Global admin required to manage tags |
| 404 | Tag 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/tags/7' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
tags | array of object | |
tags[].id | integer | |
tags[].tenant_id | integer | |
tags[].name | string | |
tags[].slug | string | |
tags[].color_hex | string, or null | |
tags[].created_at | string (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
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
tag_ids | array of any |
Response 200
| Field | Type | Description |
|---|---|---|
tags | array of object | |
tags[].id | integer | |
tags[].tenant_id | integer | |
tags[].name | string | |
tags[].slug | string | |
tags[].color_hex | string, or null | |
tags[].created_at | string (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
| Status | Message |
|---|---|
| 400 | tag_ids must be an array of tag IDs |
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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":[]}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"tag_ids":[]}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"tag_ids":[]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"tag_ids":[]}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/tags' -Headers $headers -ContentType 'application/json' -Body $body#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
comments | array of object | |
comments[].id | integer | |
comments[].tenant_id | integer | |
comments[].article_id | integer | |
comments[].parent_id | integer, or null | |
comments[].body | string | |
comments[].created_by | integer | |
comments[].created_at | string (date-time) | |
comments[].resolved_at | string (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
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments' -Headers $headers#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
| Name | Type | Description |
|---|---|---|
article_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
bodyrequired | any | |
parent_id | integer |
Response 201
| Field | Type | Description |
|---|---|---|
comment | any |
Example response
JSON
{
"comment": null
}Errors
| Status | Message |
|---|---|
| 400 | Comment body is required |
| 404 | User not found |
| 404 | Article not found |
| 403 | No 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}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"body":"…","parent_id":7}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"body":"…","parent_id":7},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"body":"…","parent_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/7/comments' -Headers $headers -ContentType 'application/json' -Body $body#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
| Name | Type | Description |
|---|---|---|
comment_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
body | any | |
resolved | boolean |
Response 200
| Field | Type | Description |
|---|---|---|
comment | any |
Example response
JSON
{
"comment": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Comment not found |
| 403 | No 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}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"body":"…","resolved":false}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"body":"…","resolved":False},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"body":"…","resolved":false}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7' -Headers $headers -ContentType 'application/json' -Body $body#(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
| Name | Type | Description |
|---|---|---|
comment_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Comment not found |
| 403 | No 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"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/comments/7' -Headers $headers#Most recently updated articles (as "trending")
GET
/v1/app/kb/articles/trending- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/trending- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Response 200
| Field | Type | Description |
|---|---|---|
articles | array of object | |
articles[].id | integer | |
articles[].title | string | |
articles[].space_id | integer | |
articles[].collection_id | integer, or null | |
articles[].updated_at | string (date-time) | |
articles[].space_name | string |
Example response
JSON
{
"articles": [
{
"id": 42,
"title": "Example title",
"space_id": 7,
"collection_id": 7,
"updated_at": "2026-11-12T09:30:00.000Z",
"space_name": "Example space name"
}
]
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/trending' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/trending', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/trending",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/articles/trending' -Headers $headersWas this page helpful?
Thanks for your feedback.