Booking links
Every scheduling request comes with a link you can text the customer. They open it, pick a time and book, and the same link lets them reschedule or cancel until the appointment starts.
Getting the link
Create a scheduling request as usual. The response, and every later read of the request, carries booking_url:
curl -X POST https://api.example.com/api/v1/scheduling-requests \
-H "Authorization: Bearer $BOOKER_API_KEY" -H "Content-Type: application/json" \
-d '{ "customer_id": 31, "appointment_type_id": 4, "latest_date": "2026-11-20" }'
{ "success": true, "data": { "id": 18, "status": "open", …, "booking_url": "https://book.example.com/r/MTguMQ.k3…" } }
The link is the same every time you read it, so you can show it again in your CRM or text it again. It is null when booking links aren't set up for your Booker account.
Sending it
Text or email the link yourself, or let Booker's outreach send it: put {booking_link} in an outreach step's sms_text, for example Hi {first_name}, pick a time for your {appointment_type}: {booking_link}. It counts as 100 characters toward the 320-character limit. Saving a text with {booking_link} needs booking links to be set up; if they are turned off later, those texts are skipped (reason no_booking_link).
What the customer sees
- Before booking: your company's name, their first name, the appointment type and its length, and the times they can pick. The times come from the same search your agent uses: the request's dates, location and provider, the booking window, notice and the provider's live calendar.
- After booking: the time, with buttons to reschedule or cancel. Cancelling opens the request again, so the same link can book a new time. Outreach doesn't restart.
- When the visit needs an address and Booker has no location for the customer, the page asks them to call you, with your voice number.
- When the link has ended (the appointment started, or the request was cancelled, expired or its link replaced) the page says "This link is no longer active" and shows your phone number.
The page never shows the customer's contact details, address or anything about other appointments, and it never names Booker. Bookings made through it have booked_by: "link".
Replacing a link
Anyone with the link can book for that customer, so treat it like the customer's own message. If it reached the wrong person, replace it:
curl -X POST https://api.example.com/api/v1/scheduling-requests/18/booking-link/rotate \
-H "Authorization: Bearer $BOOKER_API_KEY"
The old link stops working at once; the response carries the new booking_url. Rotating works in any status.
Next
The endpoints the page calls are in the API reference under Public booking; you don't call them yourself.