API referenceAdmin APISyntic CodePluginsUpdate policy

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

HeaderRequiredValue
AuthorizationYesBearer <admin key>: an Admin API key (sk_admin_...). Inference keys are refused with 403 admin_key_required. See Admin API keys.
syntic-betaYes, while in previewadmin-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json

Path parameters

ParameterTypeDescription
plugin_idstringThe plugin id, starting with plg_.

Body parameters

ParameterTypeRequiredNotes
policystringNo
workspace_idsarray of strings or nullNo
latest_versionstringNoAn 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"
}
FieldTypeDescription
idstringStarts with plg_.
sourceobjectupload for bundles sent to this API, or marketplace with the marketplace_id it came from.
policystringrequired (installed for everyone and cannot be turned off), available (members may install it), or blocked (cannot be installed, even from a marketplace).
workspace_idsarray or nullLimit the policy to members of these workspaces; null means the whole organization.
latest_versionstringSemantic 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:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
404not_found_errorplugin_not_foundNo plugin with this id.
401authentication_errorinvalid_api_keyThe admin key is missing, unknown, revoked or expired.
403permission_erroradmin_key_requiredAn inference key was used.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?