---
title: visits.answerChange | Doing Work API
description: Answer a customer's request to move or cancel a visit. decline leaves the visit as it is. accept on a cancel request cancels the visit (visits.cancel); acc
url: https://doingwork.work/docs/reference/visits-answerchange/
---

# visits.answerChange

Answer a customer's request to move or cancel a visit. decline leaves the visit as it is. accept on a cancel request cancels the visit (visits.cancel); accept on a reschedule moves it to starts_at (and ends_at, or the same length as before) through visits.update. Pass apply false to mark it accepted without changing the visit (you already moved it). The customer sees the answer and your note on their hub. If a shop approval rule holds the visit change, the request stays open and the approval id comes back. Owner or office only.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `POST /v1/visits/answerChange` |
| MCP tool | `visits_answerChange` |
| Writes | yes, send an Idempotency-Key |
| Area | [Scheduling and visits](https://doingwork.work/docs/reference/#scheduling-and-visits) |

## When to use it

Give a customer one page with everything they have with the shop: hub.createLink makes a link for one customer (shown once; send it yourself, Doing Work sends nothing). On it the customer sees their quotes, jobs, invoices with what is still owed, upcoming visits and requests, opens a quote, pays an invoice, asks to move or cancel a visit, and asks for new work (it arrives as a portal request).

## What to tell the owner

Say what you did in plain words and what happens next.

## Input

| Field | Type | Required |
|---|---|---|
| `change_request_id` | string (uuid) | yes |
| `decision` | string (one of accept, decline) | yes |
| `note` | string | no |
| `starts_at` | string (date-time) | no |
| `ends_at` | string (date-time) | no |
| `apply` | boolean | no |

## Example

```http
POST https://doingwork.work/v1/visits/answerChange
content-type: application/json
Idempotency-Key: 3f1c...

{
  "change_request_id": "00000000-0000-4000-8000-000000000000",
  "decision": "accept"
}
```

## Output

JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are `{code, message, status}`.

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
