# Update Refresh

```
PUT 
/v1/refreshes/:refresh_id
```

Change an existing refresh schedule in place. **This is how you pause one.**

A PARTIAL update: only the fields present in the body are applied, and the schedule keeps its id, its `executionCount` and its `lastRun` / `lastStatus`. So:

* `{"isActive": false}` **pauses** the schedule. The row stops being selected for execution; nothing else about it changes, and sending `{"isActive": true}` later resumes it.
* `{"cron": "0 9 * * 1"}` **reschedules** it, and the response's `nextRun` is the server's own answer for when it will fire next — read that rather than assuming the cron was accepted as written.
* `{"datasetId": …}` / `{"projectId": …}` **retarget** it. A schedule has exactly one target, so naming both is refused, and the new target is validated here before anything is written.

Prefer this to DELETE + POST for any reversible intent. Deleting and recreating is not the same operation: it issues a new id, so anything holding the old one now points at nothing, and it starts the history over — a schedule that has been failing silently for a month comes back looking brand new, with `executionCount` 0 and no `lastStatus` to show what went wrong.

## Request[​](#request "Lien direct vers request")

## Responses[​](#responses "Lien direct vers Responses")

* 200
* 404
* 422

Successful Response

Not found

Validation Error
