> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update ProactiveActionConfig

> Update an existing ProactiveActionConfig record.

Updates an existing ProactiveActionConfig record. You must include the `Id` of the record to update along with all required fields.

## Authentication

> [!NOTE]
>
> This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
> The authenticated user must be a full unrestricted administrator or have the **`ProactiveActionConfig-Edit`** role.

## Enums

> [accordion] eOutboundChannel
>
> | Value | Name |
> | - | - |
> | 1 | Email |
> | 2 | Voice |
> | 3 | CoworkerMessage |
> | 4 | HelpDesk |
> | 5 | WhatsApp |

## Request Body

### Required Fields

**Id** `integer` *required*

The Id of the ProactiveActionConfig record to update.

**BusinessId** `integer` *required*

ID of the location this agent configuration applies to. Each location holds at most one configuration per CriteriaType, and an agent with no configuration row is treated as off..

**CriteriaType** `string` *required*

Name of the proactive agent this configuration governs, matching a criteria evaluator: DueInvoiceCriteria, ContractExpiryCriteria, SupportPatternCriteria, SupportIssueCategoryCriteria or MissingFaqCriteria. Unique per location; the actions it produces carry the same value in ProposedAction.CriteriaType..

**AutoExecuteMinConfidence** `number` *required*

Confidence an action must reach before AutoExecute will send it without review, on a 0.0–1.0 scale (not a percentage). Defaults to 0.85. Has no effect while AutoExecute is false..

**CooldownHours** `integer` *required*

How long the agent waits before raising the same trigger again, in hours; defaults to 24. A candidate is skipped when a non-expired action with the same deduplication key was created inside this window, so in practice it throttles repeat outreach about the same invoice, contract or customer..

### Optional Fields

**Enabled** `boolean`

Whether this agent runs for the location. When false, or when no configuration row exists at all, the agent is skipped entirely and proposes nothing..

**AutoExecute** `boolean`

Whether this agent may act without human review. When true, an action whose confidence reaches AutoExecuteMinConfidence is delivered straight away and recorded as AutoExecuted; anything below it still lands in the inbox. Internal-alert agents ignore this..

**MaxActionsPerDay** `integer`

Cap on how many actions this agent may raise for the location in a single day; it also caps how many candidates one evaluation run will consider. Empty means uncapped, in which case a run still considers at most 20 candidates..

**ChannelPreference** `integer`

Overrides the delivery channel this agent proposes: Email, Voice, CoworkerMessage, HelpDesk or WhatsApp. Empty leaves the choice to the agent's own default. Voice requires the location's AI voice channel to be enabled, and WhatsApp requires a configured WhatsApp number.. See `eOutboundChannel?` enum above.

**CustomPromptOverride** `string`

Extra drafting instructions for this agent, up to 2000 characters, appended to its built-in prompt — for example a tone or signature convention. Starting the text with "OVERRIDE:" (case-insensitive) replaces the agent's whole prompt template instead of adding to it..

**FirstMessage** `string`

Opening line spoken or sent when this agent starts an outbound conversation, up to 500 characters. Supports \{\{variable}} placeholders such as \{\{company\_name}} plus the agent-specific variables listed by the criteria-variables endpoint. Empty uses the built-in opening..

**SystemPrompt** `string`

Voice-agent system prompt for outbound conversations this agent starts, up to 2000 characters. By default the text is added to the standard prompt; starting it with "OVERRIDE:" (case-insensitive) replaces the standard prompt entirely, and the server then rejects the save unless the text also contains the \{\{voice\_message}} placeholder..

**CriteriaConfiguration** `string`

Agent-specific thresholds as a flat JSON object of string values, keyed by the parameter keys the criteria-parameters endpoint publishes for this CriteriaType — for example reminder day counts, minimum invoice amounts or ticket thresholds. Empty means every parameter falls back to its published default..

## Code Examples

```bash cURL theme={null}
curl -X PUT \
  "https://spaces.nexudus.com/api/sys/proactiveactionconfigs" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "BusinessId": 0,
    "CriteriaType": "",
    "AutoExecuteMinConfidence": 0,
    "CooldownHours": 0,
    "Id": 87654321
}'
```

```javascript JavaScript theme={null}
const response = await fetch(
  'https://spaces.nexudus.com/api/sys/proactiveactionconfigs',
  {
    method: 'PUT',
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      BusinessId: 0,
      CriteriaType: '',
      AutoExecuteMinConfidence: 0,
      CooldownHours: 0,
      Id: 87654321
    })
  }
);

const data = await response.json();
```

```python Python theme={null}
import requests

response = requests.put(
    'https://spaces.nexudus.com/api/sys/proactiveactionconfigs',
    headers={
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json'
    },
    json={
        'BusinessId': 0,
        'CriteriaType': '',
        'AutoExecuteMinConfidence': 0,
        'CooldownHours': 0,
        'Id': 87654321
    }
)

data = response.json()
```

## Response

### 200

**Status** `integer`

HTTP status code. `200` on success.

**Message** `string`

A human-readable message confirming the update.

**Value** `object`

Contains the `Id` of the updated record.

**WasSuccessful** `boolean`

`true` if the proactiveactionconfig was updated successfully.

**Errors** `array`

`null` on success.

```json Example Response theme={null}
{
  "Status": 200,
  "Message": "ProactiveActionConfig was successfully updated.",
  "Value": {
    "Id": 87654321
  },
  "OpenInDialog": false,
  "OpenInWindow": false,
  "RedirectURL": null,
  "JavaScript": null,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "UpdatedBy": "admin@example.com",
  "Errors": null,
  "WasSuccessful": true
}
```

### 400

**Message** `string`

A summary of the validation error(s), in the format `PropertyName: error message`.

**Value** `any`

`null` on validation failure.

**Errors** `object[]`

Array of validation errors.

**AttemptedValue** `any`

The value that was submitted for the field, or `null` if missing.

**Message** `string`

The validation error message.

**PropertyName** `string`

The name of the property that failed validation.

**WasSuccessful** `boolean`

`false` when the request fails validation.

```json Example Response theme={null}
{
  "Message": "CriteriaType: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "CriteriaType"
    }
  ],
  "WasSuccessful": false
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.