# POST /scheduling/voice/reschedule-booking

**Resource:** [Scheduling Bookings](./scheduling-bookings.md)  
**Scopes:** `scheduling:write`  
**Write operation:** yes

Voice-agent booking reschedule. Returns text/plain. Resolves the caller by phone, then moves an existing booking to a new slot. New booking is created first (slot-race protection), then the old booking is cancelled. If the old cancel fails, a rollback is attempted on the new booking. Uses the same two-shot disambiguation pattern as cancel-booking when multiple upcoming bookings exist. Always returns HTTP 200 - failures begin with "RESCHEDULE FAILED:".

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `phone` | body | string | no | Caller phone number (E.164 or AU local). Falls back to Retell call envelope. |
| `booking_selector` | body | string | no | Which booking to reschedule. Same format as cancel-booking selector. Omit for auto-select or to trigger disambiguation. |
| `new_slot` | body | string | yes | New slot in "YYYY-MM-DD HH:MM" format, as returned by the /slots endpoint for this event type. |
| `timezone` | body | string | no | IANA timezone name. Defaults to the event type configured timezone. |

## Request example

```bash
curl -X POST \
  "https://api.trustpager.com/functions/v1/api/v1/scheduling/voice/reschedule-booking" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "args": { "phone": "+61412345678", "new_slot": "2026-04-30 14:00", "timezone": "Australia/Brisbane" } }'
```

## Response example

```json
Rescheduled! Your Free Consultation is now confirmed for Wednesday, 30 April 2026 at 2:00 PM.
The previous booking has been cancelled.
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`