Skip to content
WP EngineDocumentation

Set or clear a site's primary KB collection

PATCH
/v1/sites/{client_id}
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.ai.wpengine.com/v1/sites/example', [
'body' => '{ "kb_collection_id": "example" }',
'headers' => [
'Authorization' => 'Bearer <token>',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
client_id
required
string

The site’s stable site_id, or its client_id (the original credential identifier), which remains supported for backward compatibility.

Media typeapplication/json
object
kb_collection_id
required

Collection id to set as primary, or null to clear it.

string
nullable
Examplegenerated
{
"kb_collection_id": "example"
}

The updated site.

Media typeapplication/json
object
site_id

Stable gateway-owned identifier for the logical site.

string
/^site_[0-9A-Za-z]{22}$/
client_id
required

Current oauth-ext registration identifier.

string
account_id
required
string
project_id

The WP Engine project this site belongs to, if assigned.

string
site_url
required
string
status
required

Registration lifecycle state.

string
Allowed values: active revoked suspended
kb_collection_id
required

The site’s primary KB collection, or null when no primary is set. Always present in the response.

string
nullable
Example
{
"status": "active"
}

Kb_collection_id missing or empty, or the collection does not belong to the site’s project.

Missing or invalid bearer token

Media typeapplication/json
object
error
required
object
message
required
string
type
required
string
code
required
integer
request_id
required

Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.

string
Example
{
"error": {
"type": "invalid_request_error",
"request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5"
}
}
WWW-Authenticate
string
Example
Bearer realm="ai-services"

The token is valid, but the caller is not permitted to perform this action — either its scope/permission is insufficient or the authenticated user is not authorized for the target account (error type “permission_error”). On /v1/chat/completions specifically, a 403 with error type “content_policy_violation” instead means the request content was blocked by content moderation policy; that response never identifies which filter or category matched.

Media typeapplication/json
object
error
required
object
message
required
string
type
required
string
code
required
integer
request_id
required

Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.

string
Example
{
"error": {
"type": "invalid_request_error",
"request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5"
}
}

Site not found, or the caller is not authorized for it.

The server encountered an unexpected error while handling the request. Safe to retry once; if it persists, the cause is server-side and the request payload was not the problem.

Media typeapplication/json
object
error
required
object
message
required
string
type
required
string
code
required
integer
request_id
required

Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.

string
Example
{
"error": {
"type": "invalid_request_error",
"request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5"
}
}

A required dependency is temporarily unavailable. Retry after a short delay with exponential back-off.

Media typeapplication/json
object
error
required
object
message
required
string
type
required
string
code
required
integer
request_id
required

Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.

string
Example
{
"error": {
"type": "invalid_request_error",
"request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5"
}
}