---
title: "Set Agent Operator Enabled"
method: PUT
path: "/agent/operators/{operator}/enabled"
tags: ["Agents"]
---

# Set Agent Operator Enabled

`PUT /agent/operators/{operator}/enabled`

## Request

- Base URL: `https://be.graph8.com/api/v1`
- URL: `https://be.graph8.com/api/v1/agent/operators/{operator}/enabled`
- Auth: HTTP bearer

Switch this operator on or off for the organisation.

TURNING IT ON STARTS UNATTENDED WORK. The operator's monitors begin running
on their own schedule, without anyone asking, and they keep running until
this is set back to false. That is why this needs the `run` grant rather
than plain write: "let something act in my org when I am not watching" is
not the same permission as "edit a record".

What it is allowed to DO once it is on is a separate control - see
`PUT /agent/operators/{operator}/skills/{skill_key}`. Enabling an operator
whose skills are all `OFF` starts nothing.

`enabled` is explicit rather than a toggle, so a retried request is
idempotent instead of switching it back off.

## Path parameters

- `operator` string, required

## Headers

- `Authorization` string, nullable
- `X-Target-Org-Id` string, nullable

## Request body

- OperatorEnabledRequest: Mirror of `EnabledUpdate`.
  - `enabled` boolean, required: Whether this operator runs for the organisation. TURNING IT ON STARTS UNATTENDED WORK: the operator's monitors run on their own schedule from then on, without a person asking. Explicit rather than a toggle, so a retried request is idempotent instead of flipping the state back.

## Response `200`

Successful Response

- ApiResponseOperatorPayload
  - `data` OperatorPayload, required: An open envelope for one operator answer. Open because an operator's health snapshot, scorecard and catalog are per-operator documents whose shape follows what that operator monitors - the revenue operator reports different checks from the deliverability one, and both grow. On an OVERSIGHT surface a dropped field reads as "nothing to worry about" rather than "we did not tell you", which is the failure mode worth designing against.
  - `pagination` PaginationMeta
    - `page` integer, required: Current page number (1-indexed)
    - `limit` integer, required: Items per page
    - `total` integer, required: Total number of items
    - `has_next` boolean, required: Whether there are more pages
    - `next_cursor` string, nullable: Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers.
    - `total_available` integer, nullable: Search endpoints only: how many records really match, when known. Can be larger than `total`, which is capped at the 10,000 results that can be paged. For company search this is a distinct-company estimate. Null when unknown; absent outside search.
    - `total_is_lower_bound` boolean, nullable: Search endpoints only: true when more records match than `total` shows (the result set is larger than the 10,000 results that can be paged). Absent outside search.
    - `notes` string[], nullable: Search endpoints only: plain-language notes about the result, e.g. that more records match than can be paged, or that a reversed `between` range was put in order.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graph8/apis/graph8-developer-api.md) · [All operations](https://skmtc.dev/graph8/apis/graph8-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/graph8/apis/graph8-developer-api/revisions/2e7cfa0ca921?raw)
