# PUT /api/v1/cron/jobs

> List, create, update or delete cron jobs

- Group: cron
- Tier: W
- Required scope: read:hosting
- Docs: https://api.inleed.com/reference/cron/update-cron-jobs

## Description

`list` returns each job's `cronId`, `schedule` and `command`; `create` adds one from a five-field schedule and a command; `update` replaces one by `cronId` with a new schedule and command; `delete` removes one by `cronId`.

## Body

- `input` — string (required). A domain, email address, website URL, or Inleed service id — for example example.se, info@example.se or 42976. Resolved to the owning account automatically, and the resolved target is echoed back in the response. Up to 255 characters.
- `action` — enum. What to do: list all jobs (read), create a new job, update one by cron_id, or delete one by cron_id. One of list, create, update, delete.
- `schedule` — string. For create and update: five cron fields (minute hour day-of-month month day-of-week), e.g. 0 3 * * *, or a macro like @daily.
- `command` — string. For create and update: the shell command the cron runs. Passed verbatim to DirectAdmin as its own field.
- `cron_id` — string. For update and delete: the cronId from a list call — the numeric id of the job.

## Request

```bash
curl -X PUT "https://mcp.inleed.com/api/v1/cron/jobs" \
  -H "Authorization: Bearer inl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"input":"example.se","action":"list","schedule":"0 3 * * *","command":"/usr/bin/php /home/inleed42/backup.php","cron_id":"res_01hx8n3k5p7q9r2s4t6v8w0y41"}'
```

## Errors

- **400**  — codes: invalid_request
- **401** No token was presented, or the token is revoked, expired or unknown. — codes: unauthorized, token_expired, token_revoked
- **403** The token lacks a required scope, or this account does not own the resource. — codes: insufficient_scope, domain_not_owned
- **404** No such resource for this account. — codes: not_found
- **422** Validation error — codes: validation_failed
- **429** The rate limit for this token is exhausted. See `Retry-After`. — codes: rate_limited
- **500** Something went wrong on our side. The failure is logged against `requestId`. — codes: internal_error

## Related

- GET /api/v1/cron/jobs — https://api.inleed.com/reference/cron/manage-cron-jobs
- POST /api/v1/cron/jobs — https://api.inleed.com/reference/cron/create-cron-jobs
- DELETE /api/v1/cron/jobs — https://api.inleed.com/reference/cron/delete-cron-jobs

