Skip to main content
PATCH
https://api.keywordsai.co
/
automation
/
automations
/
{automation_id}
Update Automation
curl --request PATCH \
  --url https://api.keywordsai.co/automation/automations/{automation_id}/ \
  --header 'Authorization: Bearer <token>'
{
  "id": "auto-eval-001",
  "automation_slug": "prod_quality_monitor",
  "name": "Production Quality Monitor",
  "automation_type": "online_eval",
  "condition": {
    "id": "cond-12345",
    "condition_slug": "success_logs",
    "name": "Successful Requests",
    "condition_type": "single_log"
  },
  "evaluator_ids": [
    "eval-quality-uuid"
  ],
  "evaluator_details": [
    {
      "id": "eval-quality-uuid",
      "name": "Response Quality Evaluator",
      "evaluator_slug": "response_quality",
      "eval_class": "keywordsai_custom_evaluator"
    }
  ],
  "is_enabled": true,
  "configuration": {
    "evaluator_ids": [
      "eval-quality-uuid"
    ],
    "sampling_rate": 0.15
  },
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-01-15T11:00:00Z"
}
Updates specific fields of an existing automation. Use this to enable/disable automations, change sampling rates, or update evaluator lists.

Authentication

All endpoints require API key authentication:
Authorization: Bearer YOUR_API_KEY
Note: Use your API Key (not JWT token) for all requests. You can find your API keys in the Keywords AI platform under Settings > API Keys.

Path Parameters

ParameterTypeDescription
automation_idstringThe unique ID or slug of the automation to update

Request Body

All fields are optional - only include the fields you want to update.
FieldTypeDescription
is_enabledbooleanWhether automation is active
configuration.sampling_ratenumberSampling rate between 0.0-1.0
evaluator_idsarray[string]Array of evaluator UUIDs to run

Examples

Enable/Disable Automation

import requests

automation_id = "auto-eval-001"
url = f"https://api.keywordsai.co/automation/automations/{automation_id}/"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

# Disable automation
data = {
    "is_enabled": False
}

response = requests.patch(url, headers=headers, json=data)
print(response.json())

Update Sampling Rate

# Update sampling rate to 20%
data = {
    "configuration": {
        "sampling_rate": 0.2
    }
}

response = requests.patch(url, headers=headers, json=data)
print(response.json())

Update Evaluator List

# Add a new evaluator to the list
data = {
    "evaluator_ids": [
        "eval-quality-uuid",
        "eval-safety-uuid",
        "eval-hallucination-uuid"
    ]
}

response = requests.patch(url, headers=headers, json=data)
print(response.json())

Update Multiple Fields

# Update multiple fields at once
data = {
    "is_enabled": True,
    "configuration": {
        "sampling_rate": 0.15
    },
    "evaluator_ids": [
        "eval-quality-uuid"
    ]
}

response = requests.patch(url, headers=headers, json=data)
print(response.json())

Reduce Sampling Rate for Cost Savings

# Reduce from 10% to 1% sampling
data = {
    "configuration": {
        "sampling_rate": 0.01
    }
}

response = requests.patch(url, headers=headers, json=data)
print(response.json())

Response

Status: 200 OK
{
  "id": "auto-eval-001",
  "automation_slug": "prod_quality_monitor",
  "name": "Production Quality Monitor",
  "automation_type": "online_eval",
  "condition": {
    "id": "cond-12345",
    "condition_slug": "success_logs",
    "name": "Successful Requests",
    "condition_type": "single_log"
  },
  "evaluator_ids": [
    "eval-quality-uuid"
  ],
  "evaluator_details": [
    {
      "id": "eval-quality-uuid",
      "name": "Response Quality Evaluator",
      "evaluator_slug": "response_quality",
      "eval_class": "keywordsai_custom_evaluator"
    }
  ],
  "is_enabled": true,
  "configuration": {
    "evaluator_ids": [
      "eval-quality-uuid"
    ],
    "sampling_rate": 0.15
  },
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-01-15T11:00:00Z"
}

Response Fields

FieldTypeDescription
idstringUnique automation identifier
automation_slugstringURL-friendly identifier
namestringDisplay name of the automation
automation_typestringType of automation ("online_eval")
conditionobjectCondition object with details
evaluator_idsarray[string]Updated list of evaluator UUIDs
evaluator_detailsarray[object]Detailed information about each evaluator
is_enabledbooleanUpdated enabled status
configurationobjectUpdated configuration including sampling rate
created_atstringISO timestamp of creation
updated_atstringISO timestamp of last update

Update Behavior

  • Partial Updates: Only the fields you provide will be updated
  • Configuration Merging: The configuration object is merged with existing values
  • Evaluator List Replacement: Providing evaluator_ids replaces the entire list (not appended)
  • Validation: All validation rules from the create endpoint apply to updates

Error Responses

400 Bad Request - Invalid Evaluator

{
  "evaluator_ids": [
    "Evaluators not found: invalid-uuid-123"
  ]
}

400 Bad Request - Invalid Sampling Rate

{
  "configuration": {
    "sampling_rate": [
      "Sampling rate must be between 0.0 and 1.0"
    ]
  }
}

400 Bad Request - Empty Evaluator List

{
  "evaluator_ids": [
    "At least one evaluator is required"
  ]
}

401 Unauthorized

{
  "detail": "Authentication credentials were not provided."
}

404 Not Found

{
  "detail": "Automation not found"
}