Knowledgebase endpoints (Admin API)
18 FeatherPanel Admin API endpoints from admin/knowledgebase.php: methods, paths, auth, permissions, rate limits, parameters and responses.
Last synced from FeatherPanel 15b94e9 on .
On this page
Defined in backend/app/routes/admin/knowledgebase.php. Authentication used here: Admin. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.
Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.
Endpoints
GET/api/admin/knowledgebase/categories
Get all knowledgebase categories Retrieve a paginated list of all knowledgebase categories with optional search functionality.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | Page number for pagination |
limit | query | integer | no | Number of records per page |
search | query | string | no | Search term to filter categories |
Response data field | Type | Description |
|---|---|---|
categories | KnowledgebaseCategory[] | |
pagination | KnowledgebasePagination | |
search | object |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/categories" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:categories:retrieved
Responses: 200 Categories retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions
GET/api/admin/knowledgebase/categories/{id}
Get knowledgebase category by ID Retrieve a specific knowledgebase category by its ID.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Category ID |
Response data field | Type | Description |
|---|---|---|
category | KnowledgebaseCategory |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:category:retrieved
Responses: 200 Category retrieved successfully · 400 Bad request - Invalid ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found
PUT/api/admin/knowledgebase/categories
Create new knowledgebase category Create a new knowledgebase category with name, slug, and icon.
Request body: KnowledgebaseCategoryCreate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Category name |
slug | string | no | Category slug |
icon | string | yes | Category icon URL |
description | string | no | Category description |
position | integer | no | Category position for sorting |
Response data field | Type | Description |
|---|---|---|
category | KnowledgebaseCategory |
curl -X PUT "$PANEL_URL/api/admin/knowledgebase/categories" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"","slug":"","icon":"","description":"","position":0}'Plugin events: featherpanel:admin:knowledgebase:category:created
Responses: 201 Category created successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error
PATCH/api/admin/knowledgebase/categories/{id}
Update knowledgebase category Update an existing knowledgebase category. Only provided fields will be updated.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Category ID |
Request body: KnowledgebaseCategoryUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
name | string | no | Category name |
slug | string | no | Category slug |
icon | string | no | Category icon URL |
description | string | no | Category description |
position | integer | no | Category position for sorting |
Response data field | Type | Description |
|---|---|---|
category | KnowledgebaseCategory |
curl -X PATCH "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"","slug":"","icon":"","description":"","position":0}'Plugin events: featherpanel:admin:knowledgebase:category:updated
Responses: 200 Category updated successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found · 500 Internal server error
DELETE/api/admin/knowledgebase/categories/{id}
Delete knowledgebase category Permanently delete a knowledgebase category. This will also delete all articles in this category.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Category ID |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:category:deleted
Responses: 200 Category deleted successfully · 400 Bad request - Invalid category ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found · 500 Internal server error
GET/api/admin/knowledgebase/articles
Get all knowledgebase articles Retrieve a paginated list of all knowledgebase articles with optional filters.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | Page number for pagination |
limit | query | integer | no | Number of records per page |
search | query | string | no | Search term to filter articles |
category_id | query | integer | no | Filter by category ID |
status | query | string | no | Filter by status |
pinned | query | boolean | no | Filter by pinned status |
Response data field | Type | Description |
|---|---|---|
articles | KnowledgebaseArticle[] | |
pagination | KnowledgebasePagination | |
search | object |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:articles:retrieved
Responses: 200 Articles retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions
GET/api/admin/knowledgebase/articles/{id}
Get knowledgebase article by ID Retrieve a specific knowledgebase article by its ID.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
Response data field | Type | Description |
|---|---|---|
article | KnowledgebaseArticle |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:article:retrieved
Responses: 200 Article retrieved successfully · 400 Bad request - Invalid ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found
PUT/api/admin/knowledgebase/articles
Create new knowledgebase article Create a new knowledgebase article with title, slug, content, and optional icon.
Request body: KnowledgebaseArticleCreate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
category_id | integer | yes | Category ID |
title | string | yes | Article title |
slug | string | no | Article slug |
icon | string | no | Article icon/logo URL |
content | string | yes | Article content |
author_id | integer | yes | Author user ID |
status | string | no | Article status |
pinned | boolean | no | Whether article is pinned |
sort_order | integer | no | Article sort order for positioning |
published_at | string (date-time) | no | Publication timestamp |
Response data field | Type | Description |
|---|---|---|
article | KnowledgebaseArticle |
curl -X PUT "$PANEL_URL/api/admin/knowledgebase/articles" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"category_id":0,"title":"","slug":"","icon":"","content":"","author_id":0,"status":"","pinned":false,"sort_order":0,"published_at":""}'Plugin events: featherpanel:admin:knowledgebase:article:created
Responses: 201 Article created successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error
PATCH/api/admin/knowledgebase/articles/{id}
Update knowledgebase article Update an existing knowledgebase article. Only provided fields will be updated.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
Request body: KnowledgebaseArticleUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
category_id | integer | no | Category ID |
title | string | no | Article title |
slug | string | no | Article slug |
icon | string | no | Article icon/logo URL |
content | string | no | Article content |
author_id | integer | no | Author user ID |
status | string | no | Article status |
pinned | boolean | no | Whether article is pinned |
sort_order | integer | no | Article sort order for positioning |
published_at | string (date-time) | no | Publication timestamp |
Response data field | Type | Description |
|---|---|---|
article | KnowledgebaseArticle |
curl -X PATCH "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"category_id":0,"title":"","slug":"","icon":"","content":"","author_id":0,"status":"","pinned":false,"sort_order":0,"published_at":""}'Plugin events: featherpanel:admin:knowledgebase:article:updated
Responses: 200 Article updated successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error
DELETE/api/admin/knowledgebase/articles/{id}
Delete knowledgebase article Permanently delete a knowledgebase article. This will also delete all tags and attachments.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:article:deleted
Responses: 200 Article deleted successfully · 400 Bad request - Invalid article ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error
POST/api/admin/knowledgebase/articles/reorder
Reorder knowledgebase articles Update the sort order of multiple articles at once for custom positioning.
Request body: KnowledgebaseArticleReorder (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
articles | object[] | yes | Array of articles with their new sort orders |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/reorder" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"articles":[]}'Plugin events: featherpanel:admin:knowledgebase:articles:reordered
Responses: 200 Articles reordered successfully · 400 Bad request - Invalid request data · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error
POST/api/admin/knowledgebase/upload-icon
Upload icon for category or article Upload an icon image file for knowledgebase categories or articles. Supports JPG, PNG, GIF, and WebP formats with a maximum size of 5MB.
| Body field | Type | Required | Description |
|---|---|---|---|
icon | string (binary) | yes | Icon image file (JPG, PNG, GIF, WebP, max 5MB) |
Response data field | Type | Description |
|---|---|---|
url | string | Public URL of the uploaded icon |
filename | string | Filename of the uploaded icon |
curl -X POST "$PANEL_URL/api/admin/knowledgebase/upload-icon" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-F "icon=@./file"Plugin events: featherpanel:admin:knowledgebase:icon:uploaded
Responses: 201 Icon uploaded successfully · 400 Bad request - No file provided, invalid file type, or file too large · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error - Failed to save file
POST/api/admin/knowledgebase/articles/{id}/upload-attachment
Upload attachment for article Upload an attachment file for a knowledgebase article. Supports various file types with a maximum size of 50MB.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
| Body field | Type | Required | Description |
|---|---|---|---|
file | string (binary) | yes | Attachment file (max 50MB) |
Response data field | Type | Description |
|---|---|---|
attachment | object | Attachment record |
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/$ID/upload-attachment" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-F "file=@./file"Plugin events: featherpanel:admin:knowledgebase:attachment:uploaded
Responses: 201 Attachment uploaded successfully · 400 Bad request - No file provided, invalid file type, or file too large · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error - Failed to save file
GET/api/admin/knowledgebase/articles/{id}/attachments
Get all attachments for an article Retrieve all attachments for a specific knowledgebase article.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
Response data field | Type | Description |
|---|---|---|
attachments | object[] |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID/attachments" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:attachments:retrieved
Responses: 200 Attachments retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found
DELETE/api/admin/knowledgebase/articles/{id}/attachments/{attachmentId}
Delete an attachment Permanently delete an attachment from a knowledgebase article.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
attachmentId | path | integer | yes | Attachment ID |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID/attachments/$ATTACHMENT_ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:attachment:deleted
Responses: 200 Attachment deleted successfully · 400 Bad request - Invalid attachment ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article or attachment not found · 500 Internal server error
GET/api/admin/knowledgebase/articles/{id}/tags
Get all tags for an article Retrieve all tags associated with a specific knowledgebase article.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
Response data field | Type | Description |
|---|---|---|
tags | object[] |
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:tags:retrieved
Responses: 200 Tags retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found
POST/api/admin/knowledgebase/articles/{id}/tags
Add a tag to an article Add a new tag to a knowledgebase article.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
| Body field | Type | Required | Description |
|---|---|---|---|
tag_name | string | yes | Tag name |
Response data field | Type | Description |
|---|---|---|
tag | object |
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"tag_name":""}'Plugin events: featherpanel:admin:knowledgebase:tag:created
Responses: 201 Tag added successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 409 Tag already exists for this article
DELETE/api/admin/knowledgebase/articles/{id}/tags/{tagId}
Delete a tag from an article Remove a tag from a knowledgebase article.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | yes | Article ID |
tagId | path | integer | yes | Tag ID |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags/$TAG_ID" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Plugin events: featherpanel:admin:knowledgebase:tag:deleted
Responses: 200 Tag deleted successfully · 400 Bad request - Invalid tag ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article or tag not found · 500 Internal server error