PATCH
/
v1
/
automations
/
{automation_id}
Change an automation
curl --request PATCH \
  --url https://platform.jobbit.uk/v1/automations/{automation_id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Weekly booking summary (Kent Physio)",
  "enabled": true,
  "monthly_limit_credits": 1000,
  "notify": {
    "failures": true,
    "needs_you": true,
    "every_run": false
  }
}
'
import requests

url = "https://platform.jobbit.uk/v1/automations/{automation_id}"

payload = {
"name": "Weekly booking summary (Kent Physio)",
"enabled": True,
"monthly_limit_credits": 1000,
"notify": {
"failures": True,
"needs_you": True,
"every_run": False
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Weekly booking summary (Kent Physio)',
enabled: true,
monthly_limit_credits: 1000,
notify: {failures: true, needs_you: true, every_run: false}
})
};

fetch('https://platform.jobbit.uk/v1/automations/{automation_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://platform.jobbit.uk/v1/automations/{automation_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Weekly booking summary (Kent Physio)',
'enabled' => true,
'monthly_limit_credits' => 1000,
'notify' => [
'failures' => true,
'needs_you' => true,
'every_run' => false
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://platform.jobbit.uk/v1/automations/{automation_id}"

payload := strings.NewReader("{\n \"name\": \"Weekly booking summary (Kent Physio)\",\n \"enabled\": true,\n \"monthly_limit_credits\": 1000,\n \"notify\": {\n \"failures\": true,\n \"needs_you\": true,\n \"every_run\": false\n }\n}")

req, _ := http.NewRequest("PATCH", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.patch("https://platform.jobbit.uk/v1/automations/{automation_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Weekly booking summary (Kent Physio)\",\n \"enabled\": true,\n \"monthly_limit_credits\": 1000,\n \"notify\": {\n \"failures\": true,\n \"needs_you\": true,\n \"every_run\": false\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://platform.jobbit.uk/v1/automations/{automation_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Weekly booking summary (Kent Physio)\",\n \"enabled\": true,\n \"monthly_limit_credits\": 1000,\n \"notify\": {\n \"failures\": true,\n \"needs_you\": true,\n \"every_run\": false\n }\n}"

response = http.request(request)
puts response.read_body
{
  "id": "2d9c6a40-7e18-4b3f-a5d2-61f08b4c9e37",
  "owner_id": "7b0e2c4a-1d3f-4c8e-9a52-6f1d0e8b3a77",
  "name": "Weekly booking summary (Kent Physio)",
  "slug": "weekly-bookings",
  "enabled": true,
  "published_version_id": "88e1d5b2-43a7-4c06-9f3e-b7a0c2d41e59",
  "paused_reason": null,
  "paused_at": null,
  "pause_after_failures": 5,
  "description": "Emails Kent Physio a summary of the week's bookings every Monday.",
  "description_by_you": false,
  "notify": {
    "failures": true,
    "needs_you": true,
    "every_run": false
  },
  "monthly_limit_usd": 3,
  "monthly_limit_credits": 1000,
  "full_automation": false,
  "service_limits": {},
  "service_limits_credits": {},
  "created_at": "2026-10-12T09:30:00+00:00",
  "project_id": null,
  "role": "owner",
  "state": "active",
  "attention": [],
  "missing_secrets": [],
  "missing_accounts": [],
  "running": false,
  "summary": {
    "automation_id": "2d9c6a40-7e18-4b3f-a5d2-61f08b4c9e37",
    "last_execution_id": "f60b3c91-0a2d-4e75-8b1c-d49e27a5c308",
    "last_status": "succeeded",
    "last_reason": "completed",
    "last_error": null,
    "last_created_at": "2026-11-02T08:00:00+00:00",
    "last_finished_at": "2026-11-02T08:00:41+00:00",
    "running": 0,
    "waiting": 0,
    "working": 0,
    "runs_24h": 0,
    "runs_30d": 4,
    "failed_in_row": 0,
    "cost_30d_usd": 0.084,
    "cost_30d_credits": 28,
    "average_run_credits": 7,
    "next_run_at": "2026-11-09T08:00:00+00:00",
    "questions": 0,
    "approvals": 0,
    "latest_version_id": "88e1d5b2-43a7-4c06-9f3e-b7a0c2d41e59",
    "latest_version_status": "published",
    "recent": [
      "succeeded",
      "succeeded",
      "succeeded",
      "succeeded"
    ]
  },
  "version": {
    "id": "88e1d5b2-43a7-4c06-9f3e-b7a0c2d41e59",
    "automation_id": "2d9c6a40-7e18-4b3f-a5d2-61f08b4c9e37",
    "status": "published"
  },
  "latest_version": null,
  "schedules": [],
  "held_runs": [],
  "webhooks": [],
  "email": null,
  "polls": []
}
{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "not_found",
"message": "unknown automation",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "conflict",
"message": "It has spent its monthly limit. Raise the limit to turn it back on.",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}

Authorizations

Authorization
string
header
required

An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…

Path Parameters

automation_id
string
required

The automation id.

Maximum string length: 64

Body

application/json

Send only the fields to change.

name
string

A new name.

Required string length: 1 - 80
enabled
boolean

Turn the automation on or off. It cannot be turned on while it is over its monthly limit.

pause_after_failures
integer | null

Pause after this many failures in a row. Null turns it off.

Required range: 1 <= x <= 100
project_id
string | null

Move to a project, or null to take it out of one. Only the owner can.

Maximum string length: 64
description
string | null

A description. Null or empty goes back to the one in the package.

Maximum string length: 500
notify
object
monthly_limit_credits
number | null

Monthly spending limit in credits. Null removes the limit.

Required range: x <= 10000000
full_automation
boolean

Whether it may act without asking. Only the owner can change it.

service_limits_credits
object

Limits by service in credits. Null removes one.

Response

The automation after the change.

An automation.

id
string
required

The automation id.

name
string
required

The name.

enabled
boolean
required

Whether it starts on its triggers. A paused automation is not enabled.

state
enum<string>
required

draft (nothing published), attention (needs the person), paused or active.

Available options:
draft,
attention,
paused,
active
owner_id
string

The account that owns it.

slug
string | null

A short name used in addresses.

published_version_id
string | null

The live version. Null for a draft.

paused_reason
enum<string> | null

Why it paused: manual, failures or budget.

Available options:
manual,
failures,
budget,
null
paused_at
string<date-time> | null

When it paused.

pause_after_failures
integer | null

It pauses after this many failures in a row.

description
string | null

What it does.

description_by_you
boolean

Whether the description was written by a person rather than taken from the package.

notify
object
monthly_limit_usd
number | null

The monthly spending limit in US dollars.

monthly_limit_credits
number | null

The monthly spending limit in credits.

full_automation
boolean

Whether it may take actions without asking.

service_limits
object

Spending limits by service in US dollars.

service_limits_credits
object

Spending limits by service (ai, agent) in credits.

created_at
string<date-time>

When it was created.

project_id
string | null

The project it belongs to.

role
enum<string>

The account's role on it.

Available options:
owner,
editor,
viewer
attention
enum<string>[]

Why it needs the person.

Available options:
missing_secrets,
missing_accounts,
account_expired,
question,
approval,
consent,
build_failed,
paused_after_failures,
paused_for_budget,
failing
missing_secrets
string[]

Secret names the live version needs and does not have.

missing_accounts
object[]

Connected-account slots that are not usable.

running
boolean

Whether a run is in progress.

summary
object

How the automation has been doing.

version
object | null

The live version (see AutomationVersion).

latest_version
object | null

A newer version that is not live yet, such as one awaiting consent or one that failed to build.

schedules
object[]

Schedules of the live version.

held_runs
any

Runs held back while they wait for a connected account.

webhooks
object[]

Webhooks that start it. Secrets are shown only to keys with webhooks:write.

email
object | null

The mailbox that starts it: trigger_id and address. The address is hidden from keys without webhooks:write.

polls
object[]

Polling sources and their state.