Update a plugin policy
⚠️
Preview — this feature is being built; the design below is the spec.
PATCH https://app.syntic.ai/v1/organizations/plugins/{plugin_id}Change who gets a plugin and whether it is mandatory, or pin members to an older version. Syntic Code clients pick up the change at their next start or within an hour.
For how this fits into a full workflow, see Syntic Code plugins.
Headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer <admin key>: an Admin API key (sk_admin_...). Inference keys are refused with 403 admin_key_required. See Admin API keys. |
syntic-beta | Yes, while in preview | admin-2026-11-01. Without it the call fails with 400 beta_required. See Versioning. |
Content-Type | Yes | application/json |
Path parameters
| Parameter | Type | Description |
|---|---|---|
plugin_id | string | The plugin id, starting with plg_. |
Body parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
policy | string | No | |
workspace_ids | array of strings or null | No | |
latest_version | string | No | An existing version to serve, for roll-back. |
Response
200 OK, Content-Type: application/json
{
"id": "plg_01JCN1P3R5T7V9X1Z3B5",
"type": "plugin",
"name": "acme-review-rules",
"display_name": "Acme code review rules",
"source": {
"kind": "upload"
},
"latest_version": "1.4.0",
"policy": "blocked",
"workspace_ids": null,
"description": "House style checks and the /review command for Syntic Code.",
"created_at": "2026-09-12T10:00:00Z",
"updated_at": "2026-11-02T10:00:00Z"
}| Field | Type | Description |
|---|---|---|
id | string | Starts with plg_. |
source | object | upload for bundles sent to this API, or marketplace with the marketplace_id it came from. |
policy | string | required (installed for everyone and cannot be turned off), available (members may install it), or blocked (cannot be installed, even from a marketplace). |
workspace_ids | array or null | Limit the policy to members of these workspaces; null means the whole organization. |
latest_version | string | Semantic version members receive. |
Examples
curl -sS -X PATCH "https://app.syntic.ai/v1/organizations/plugins/plg_01JCN1P3R5T7V9X1Z3B5" \
-H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
-H "syntic-beta: admin-2026-11-01" \
-H "Content-Type: application/json" \
-d '{
"policy": "blocked"
}'Errors
Errors use the error envelope and carry a request_id. Codes specific to this operation:
| Status | type | code | When |
|---|---|---|---|
| 400 | invalid_request_error | beta_required | The syntic-beta header is missing. |
| 404 | not_found_error | plugin_not_found | No plugin with this id. |
| 401 | authentication_error | invalid_api_key | The admin key is missing, unknown, revoked or expired. |
| 403 | permission_error | admin_key_required | An inference key was used. |
| 429 | rate_limit_error | rate_limited | Too many requests; wait for Retry-After. See Rate-limit headers. |
Was this page helpful?