---
title: "Update automation"
method: PATCH
path: "/api/automations/{id}"
tags: ["Platform API"]
---

# Update automation

`PATCH /api/automations/{id}`

Update an agent automation with a full configuration body. Provide agentId, name, enabled, and triggerType; Outlit maps agentId to the hosted-agent processor internally.

## Path parameters

- `id` string, uuid, required

## Request body

- UpdateAutomationRequest
  - `agentId` string, uuid, required
  - `name` string, required
  - `description` string, nullable
  - `enabled` boolean, required
  - `triggerType` 'SIGNAL_OCCURRENCE' | 'SCHEDULE', required
  - `signalIds` string[]
  - `matchMode` 'ANY' | 'ALL' | 'AT_LEAST'
  - `triggerWindow` object
    - `value` integer, required
    - `unit` 'hour' | 'day', required
  - `triggerThresholdCount` integer
  - `schedule` object
    - `cadence` 'hourly' | 'daily' | 'weekly', required
    - `localTime` object
      - `hour` integer, required
      - `minute` integer, required
      - `second` integer
      - `millisecond` integer
    - `timezone` string
    - `weekday` 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'
  - `audienceFilter` AutomationAudienceFilter
    - `customer` object
      - `billingStatuses` string[]
      - `customerIds` string[]
      - `revenue` AutomationAudienceRevenueFilter
        - `metric` 'ARR' | 'MRR', required
        - `operator` '>=' | '>' | '<=' | '<', required
        - `value` number, required
        - `currency` 'USD'
      - `ownerUserIds` string[]
  - `processorPolicy` object
    - `subjectHandling` 'event_customer' | 'scheduled_customer_pool'
    - `maxCustomersPerRun` integer
    - `maxConcurrentRuns` 1
    - `cooldownHours` integer
  - `deliveryPolicy` object
    - `requireAllDestinations` boolean
  - `destinationIds` string[]

## Response `200`

Automation was updated.

- UpdateAutomationCommandSuccess
  - `ok` true, required
  - `commandId` 'automation.update', required
  - `commandVersion` 1, required
  - `correlationId` string, required
  - `result` object, required
    - `operationId` 'automation.update', required
    - `status` 'completed', required
    - `resources` CommandResource[], required
      - `type` string, required
      - `id` string, required
    - `data` object, required
      - `automation` AutomationRead, required
        - `id` string, uuid, required
        - `key` string, required
        - `managedBy` 'UI' | 'CODE', required
        - `name` string, required
        - `description` string, nullable, required
        - `enabled` boolean, required
        - `triggerType` 'SIGNAL_OCCURRENCE' | 'SCHEDULE', required
        - `triggerJson` unknown, required
        - `audienceFilterJson` unknown, required
        - `matchMode` 'ANY' | 'ALL' | 'AT_LEAST', required
        - `schemaVersion` string, required
        - `configHash` string, nullable, required
        - `archivedAt` string, date-time, nullable, required
        - `lastRunAt` string, date-time, nullable, required
        - `lastRunStatus` 'PENDING' | 'SKIPPED' | 'RUNNING_PROCESSOR' | 'READY_FOR_DELIVERY' | 'PENDING_DELIVERY' | 'DELIVERED' | 'PARTIAL_FAILURE' | 'FAILED', required
        - `nextRunAt` string, date-time, nullable, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `signals` SignalRead[], required
          - `id` string, uuid, required
          - `key` string, required
          - `managedBy` 'UI' | 'CODE', required
          - `name` string, required
          - `description` string, nullable, required
          - `kind` 'EVENT_MATCH' | 'EVENT_PATTERN', required
          - `definition` unknown, required
          - `schemaVersion` string, required
          - `configHash` string, nullable, required
          - `archivedAt` string, date-time, nullable, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
        - `destinations` DestinationRead[], required
          - `id` string, uuid, required
          - `key` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `provider` 'SLACK' | 'OUTPOST' | 'WEBHOOK', required
          - `kind` 'SLACK_CHANNEL' | 'WEBHOOK_ENDPOINT', required
          - `enabled` boolean, required
          - `maskedConfig` object, nullable, required
          - `syncStatus` 'PENDING_PROVIDER_SYNC' | 'SYNCED' | 'PROVIDER_ERROR' | 'DISABLED_BY_PROVIDER', required
          - `lastSyncedAt` string, date-time, nullable, required
          - `providerErrorCode` string, nullable, required
          - `providerErrorMessage` string, nullable, required
          - `isDefault` boolean, required
          - `schemaVersion` string, required
          - `configHash` string, nullable, required
          - `archivedAt` string, date-time, nullable, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
        - `activeSignalCount` integer, required
        - `activeDestinationCount` integer, required
        - `agentId` string, uuid, nullable, required
    - `warnings` string[], required
    - `auditId` string

## Other responses

- `400` — The request body failed command validation.
- `401` — Invalid or missing API key.
- `403` — The API key is valid but does not have the required agent write scope.
- `404` — No resource was found for the authenticated organization and requested id.
- `409` — The requested change conflicts with the current platform state.
- `500` — Internal server error.
- `503` — The platform could not complete the command.

## Changes

- **2026-06-29** `012f9a36abf9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/outlitai/apis/outlit-api/changes/api/automations/:id/patch.md)

---

[API](https://skmtc.dev/outlitai/apis/outlit-api.md) · [All operations](https://skmtc.dev/outlitai/apis/outlit-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/outlitai/outlit-api/revisions/147173adbb3f/schema)
