Publish article
Sets status to published and records published_at (preserved across further edits; reset on the next publish after an unpublish). Immediately visible on the public read surface.
Sets status to published and records published_at (preserved across further edits; reset on the next publish after an unpublish). Immediately visible on the public read surface.
POST https://api.weav.com/v1/kb-articles/{id}/publish
Requires a token with the external-api:write ability.
Path parameters
idstringrequiredFormat: uuid.
Request
cURL
curl --request POST \
--url 'https://api.weav.com/v1/kb-articles/{id}/publish' \
--header "Authorization: Bearer ${WEAV_API_TOKEN}"
JavaScript
const response = await fetch("https://api.weav.com/v1/kb-articles/{id}/publish", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEAV_API_TOKEN}`
}
});
console.log(await response.json());
Python
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['WEAV_API_TOKEN']}"}
response = requests.post("https://api.weav.com/v1/kb-articles/{id}/publish", headers=headers)
print(response.json())
PHP
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'https://api.weav.com/v1/kb-articles/{id}/publish', [
'headers' => ['Authorization' => 'Bearer '.getenv('WEAV_API_TOKEN')],
]);
echo $response->getBody();
Response
200 OK
{
"id": "9b2f6c1e-3d4a-4f5b-8c7d-1e2f3a4b5c6d",
"category_id": "9b2f6c1e-3d4a-4f5b-8c7d-1e2f3a4b5c6d",
"position": 0,
"status": "draft",
"published_at": "2026-01-01T00:00:00Z",
"source": "manual",
"translations": [
{
"locale": "en",
"title": "string",
"slug": "string",
"content": "string",
"excerpt": "string",
"seo_title": "string",
"noindex": false,
"canonical_url": "https://example.com",
"og_image_url": "https://example.com",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}
],
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}
404Not Found401Unauthorized
Response fields
idstringFormat: uuid.
category_idstring | nullFormat: uuid.
positioninteger | nullstatusstringOne of: draft, published.
published_atstring | nullFormat: date-time.
sourcestringOne of: manual, auto_generated, github, mcp.
translationsarray<object>created_atstring | nullFormat: date-time.
updated_atstring | nullFormat: date-time.
