# `api.jobs.on_hold.update` > `PUT /job/{jobDisplayId}/onhold/{onHoldId}` — ACPortal **Python** ```python api.jobs.on_hold.update(job_display_id: int, on_hold_id: str, *, data: SaveOnHoldRequest | dict) -> SaveOnHoldResponse ``` **CLI** ```bash ab jobs on_hold update [--data ...] ``` Update an existing on-hold record. ## Request body — `SaveOnHoldRequest` | Field | Type | Required | Description | |---|---|---|---| | `reasonId` | `str` | yes | Hold reason UUID (required) | | `responsiblePartyTypeId` | `str` | yes | Responsible-party-type UUID (required) | | `comment` | `Optional[str]` | no | Free-text comment (<=1024 chars) | | `nextStepId` | `Optional[str]` | no | Next-step lookup UUID | | `dueDate` | `Optional[datetime]` | no | Follow-up due date | | `assignedToId` | `Optional[int]` | no | Contact ID assigned to follow up (int) | | `resolvedDate` | `Optional[datetime]` | no | Resolution timestamp | | `resolvedCodeId` | `Optional[str]` | no | Resolution code lookup UUID | | `startDate` | `Optional[datetime]` | no | Hold start timestamp | ## Response Returns `SaveOnHoldResponse`. | Field | Type | Required | Description | |---|---|---|---| | `onHoldId` | `Optional[str]` | no | On-hold record ID | | `status` | `Optional[str]` | no | Operation status | --- [← Back to api.jobs](../jobs.md)