---
title: "Update a scheduled job"
method: PATCH
path: "/schedules/v1/cron-jobs/{id}/"
tags: ["schedules"]
---

# Update a scheduled job

`PATCH /schedules/v1/cron-jobs/{id}/`

## Request

- Base URL: `https://api.cekura.ai`
- URL: `https://api.cekura.ai/schedules/v1/cron-jobs/{id}/`
- Auth: one of:
  - API key in header `X-CEKURA-API-KEY`
  - HTTP bearer
  - HTTP bearer

Partially update an existing scheduled job

## Path parameters

- `id` integer, required

## Request body

- PatchedSchemaPostCronJob
  - `name` string: Name for the cronjob
  - `scenarios` integer[]: List of scenario IDs to execute Example: `[123, 456, 789]`
  - `tags` string[]: Alternative to scenarios - List of tags to filter scenario Example: `["tag1", "tag2", "tag3"]`
  - `agent` integer: Agent ID. Required when using tags to filter scenarios. Example: `123`
  - `crontab_expression` string: Cron expression for scheduling (e.g. '0 9 * * 1-5' for weekdays at 9am) Example: - `"0 9 * * 1-5"` - `"0 0 * * 0"`
  - `timezone` 'Africa/Abidjan' | 'Africa/Accra' | 'Africa/Addis_Ababa' | 'Africa/Algiers' | 'Africa/Asmara' | 'Africa/Bamako' | 'Africa/Bangui' | 'Africa/Banjul' | 'Africa/Bissau' | 'Africa/Blantyre' | 'Africa/Brazzaville' | 'Africa/Bujumbura' | 'Africa/Cairo' | 'Africa/Casablanca' | 'Africa/Ceuta' | 'Africa/Conakry' | 'Africa/Dakar' | 'Africa/Dar_es_Salaam' | 'Africa/Djibouti' | 'Africa/Douala' | 'Africa/El_Aaiun' | 'Africa/Freetown' | 'Africa/Gaborone' | 'Africa/Harare' | 'Africa/Johannesburg' | 'Africa/Juba' | 'Africa/Kampala' | 'Africa/Khartoum' | 'Africa/Kigali' | 'Africa/Kinshasa' | 'Africa/Lagos' | 'Africa/Libreville' | 'Africa/Lome' | 'Africa/Luanda' | 'Africa/Lubumbashi' | 'Africa/Lusaka' | 'Africa/Malabo' | 'Africa/Maputo' | 'Africa/Maseru' | 'Africa/Mbabane' | 'Africa/Mogadishu' | 'Africa/Monrovia' | 'Africa/Nairobi' | 'Africa/Ndjamena' | 'Africa/Niamey' | 'Africa/Nouakchott' | 'Africa/Ouagadougou' | 'Africa/Porto-Novo' | 'Africa/Sao_Tome' | 'Africa/Tripoli' | 'Africa/Tunis' | 'Africa/Windhoek' | 'America/Adak' | 'America/Anchorage' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/New_York' | 'America/Phoenix' | 'America/Sao_Paulo' | 'Asia/Dubai' | 'Asia/Hong_Kong' | 'Asia/Kolkata' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Tokyo' | 'Australia/Melbourne' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Amsterdam' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Madrid' | 'Europe/Moscow' | 'Europe/Paris' | 'Europe/Rome' | 'Pacific/Auckland' | 'Pacific/Honolulu' | 'US/Central' | 'US/Eastern' | 'US/Mountain' | 'US/Pacific' | 'UTC': Timezone for the cronjob (default: Project timezone) * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Chicago` - America/Chicago * `America/Denver` - America/Denver * `America/Los_Angeles` - America/Los_Angeles * `America/New_York` - America/New_York * `America/Phoenix` - America/Phoenix * `America/Sao_Paulo` - America/Sao_Paulo * `Asia/Dubai` - Asia/Dubai * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Kolkata` - Asia/Kolkata * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Tokyo` - Asia/Tokyo * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Berlin` - Europe/Berlin * `Europe/London` - Europe/London * `Europe/Madrid` - Europe/Madrid * `Europe/Moscow` - Europe/Moscow * `Europe/Paris` - Europe/Paris * `Europe/Rome` - Europe/Rome * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Honolulu` - Pacific/Honolulu * `US/Central` - US/Central * `US/Eastern` - US/Eastern * `US/Mountain` - US/Mountain * `US/Pacific` - US/Pacific * `UTC` - UTC
  - `personality` integer: DEPRECATED: Use personalities instead
  - `personalities` integer[]: List of personalities to use for test execution. Multiple personalities can be assigned to run tests with different configurations. Example: `[1, 2, 3]` (personality IDs)
  - `run_as_text` boolean: DEPRECATED: Use execution_mode instead. Run scenarios as text-based chat instead of voice calls
  - `execution_mode` 'voice' | 'text' | 'sip' | 'vapi_webrtc' | 'retell_webrtc' | 'elevenlabs' | 'ello' | 'livekit_v2' | 'pipecat_v2' | 'agora': Execution mode for the cron job. Choices: voice, text, sip Example: `"voice"`, `"text"`, or `"sip"` * `voice` - Voice * `text` - Text * `sip` - SIP * `vapi_webrtc` - VAPI WebRTC * `retell_webrtc` - Retell WebRTC * `elevenlabs` - ElevenLabs * `ello` - Ello * `livekit_v2` - LiveKit * `pipecat_v2` - Pipecat * `agora` - Agora
  - `run_settings` unknown

## Response `200`

- CronJob
  - `id` integer
  - `agent` integer: Agent ID for the cron job Example: `123`
  - `name` string: Name for the cronjob
  - `crontab_expression` string, required: Crontab expression for the cron job Example: - `"0 9 * * 1-5"` - `"0 0 * * 0"`
  - `timezone` string: Timezone for the cron job Example: `"America/Los_Angeles"`
  - `scenarios` unknown
  - `scenario_ids` integer[]: List of scenario IDs for the cron job Example: `[123, 456, 789]`
  - `scenarios_data` ScenarioInline[]
    - `id` integer
    - `agent` integer, nullable
    - `name` string: Name of the scenario
    - `personality` integer, nullable
    - `personality_name` string
  - `personality` integer, nullable: (Deprecated) Use personalities field instead. Example: `1` (personality ID)
  - `personalities` integer[]: List of personalities to use for test execution. Multiple personalities can be assigned to run tests with different configurations. Example: `[1, 2, 3]` (personality IDs)
  - `tags` string[]: List of tags for the cron job Example: `["tag1", "tag2", "tag3"]`
  - `frequency` integer: Frequency for the cron job Example: `1`
  - `concurrency_limit` integer, nullable: Max number of parallel conversations to run per execution. Leave unset for no cap (uses default capacity). Example: `3`
  - `run_settings` unknown
  - `run_as_text` boolean: DEPRECATED: Use execution_mode instead. Kept for backward compatibility. Run the cron job as text Example: `true` or `false`
  - `execution_mode` 'voice' | 'text' | 'sip' | 'vapi_webrtc' | 'retell_webrtc' | 'elevenlabs' | 'ello' | 'livekit_v2' | 'pipecat_v2' | 'agora': Execution mode for the cron job Choices: voice, text, sip, vapi_webrtc, elevenlabs, pipecat_v2, livekit_v2, retell_webrtc, ello, agora Example: `"voice"`, `"text"`, `"sip"`, `"pipecat_v2"`, `"elevenlabs"`, or `"livekit_v2"` * `voice` - Voice * `text` - Text * `sip` - SIP * `vapi_webrtc` - VAPI WebRTC * `retell_webrtc` - Retell WebRTC * `elevenlabs` - ElevenLabs * `ello` - Ello * `livekit_v2` - LiveKit * `pipecat_v2` - Pipecat * `agora` - Agora
  - `notify_on` 'never' | 'success' | 'failure' | 'both': Select when to notify * `never` - Never * `success` - Success * `failure` - Failure * `both` - Both
  - `is_active` boolean
  - `created_by` integer, nullable
  - `created_via` 'user' | 'api' | 'mcp' | 'cli' | 'sdk' | 'null', nullable: How the cron job was created: user (UI), api (API key), or mcp (MCP client) * `user` - User * `api` - API * `mcp` - MCP * `cli` - CLI * `sdk` - SDK
  - `created_at` string, date-time: Timestamp when the cron job was created Example: `2021-01-01 00:00:00`
  - `updated_at` string, date-time: Timestamp when the cron job was last updated Example: `2021-01-01 00:00:00`

## Changes

- **2026-11-03** `a6fb6a739212`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/cekura/apis/cekura-api/changes/schedules/v1/cron-jobs/:id/patch.md)

---

[API](https://skmtc.dev/cekura/apis/cekura-api.md) - [All operations](https://skmtc.dev/cekura/apis/cekura-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cekura/apis/cekura-api/revisions/a6fb6a739212?raw)
