---
title: hub.requestVisitChange | Doing Work API
description: From the customer hub, ask the shop to move (reschedule, with the times that work better) or cancel an upcoming visit. The visit stays as it is until the s
url: https://doingwork.work/docs/reference/hub-requestvisitchange/
---

# hub.requestVisitChange

From the customer hub, ask the shop to move (reschedule, with the times that work better) or cancel an upcoming visit. The visit stays as it is until the shop answers. One open request per visit. Hosted page only.

|  |  |
|---|---|
| Who | Hosted page only (a person does it in the browser) |
| REST | `POST /v1/hub/requestVisitChange` |
| MCP tool | Not an MCP tool |
| Writes | yes, send an Idempotency-Key |
| Area | [Customer hub, requests and customer emails](https://doingwork.work/docs/reference/#customer-hub-requests-and-customer-emails) |

## 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

Send the person the link. They finish this step themselves on the page; you never do it for them.

## Input

| Field | Type | Required |
|---|---|---|
| `k` | string | yes |
| `visit_id` | string (uuid) | yes |
| `kind` | string (one of reschedule, cancel) | yes |
| `preferred_times` | string | no |
| `note` | string | no |

## Example

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

{
  "k": "...",
  "visit_id": "00000000-0000-4000-8000-000000000000",
  "kind": "reschedule"
}
```

## Output

| Field | Type | Always there |
|---|---|---|
| `change_request_id` | string (uuid) | yes |
| `status` | string | yes |

```json
{
  "change_request_id": "00000000-0000-4000-8000-000000000000",
  "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/). |
