Bookings API
Send bookings from any booking tool to a business in bizvoid. This is the API the bizvoid apps for Make and Zapier call, and any tool that can send an HTTP request can call it too.
Base URL: https://www.bizvoid.com/api/bookings
Last updated: October 2026
Overview
Each business in bizvoid, your own or an agency client's, can turn on an incoming booking link. A booking sent to it lands in that business's Bookings tab, where its Appointment reminder and Review request agents can text the customer.
There are two calls. Both use HTTPS and answer in JSON.
GET /in/mechecks a link and names its business.POST /increates, moves or cancels a booking.
Bookings from other tools come with the Pro and Agency plans, for your own business and for each of your clients.
Authentication
A business's booking link is its credential. There is no API key or app to register.
Get the link
- In bizvoid, open Agents, then My business or one of your clients.
- Open the Booking tools tab. If the link isn't on yet, press Turn on my link.
- Press Copy link.
Each business has its own link. It looks like this:
https://www.bizvoid.com/api/bookings/in/YOUR_BOOKING_SECRETThe last part is the secret: 20 to 100 letters, digits, hyphens or underscores. In the examples on this page, put your secret in place of YOUR_BOOKING_SECRET.
Keep it secret
Anyone with the link can add, move and cancel that business's bookings, so treat it like a password. Keep it out of shared documents, screenshots and support chats. If it gets out, open Booking tools and replace it or turn it off:
- Make a new link replaces it. The old link stops working right away, and every Zap or Make scenario that used it needs the new one.
- Turn off my link stops it working right away, so any Zap or scenario using it stops adding bookings. Bookings already received stay. You can turn on a new link any time.
Either way, the old link answers 404 from then on.
Send it in a header
Authorization: Bearer YOUR_BOOKING_SECRETThis is what the bizvoid apps for Make and Zapier send. bizvoid also accepts X-Bizvoid-Booking-Key: YOUR_BOOKING_SECRET.
A tool that can only call a URL, like Make's HTTP module or Webhooks by Zapier, can use the whole link instead: send bookings to the link itself, and check it at the link with /me added. Use the header when you can, because URLs end up in logs.
curl -X POST https://www.bizvoid.com/api/bookings/in/YOUR_BOOKING_SECRET \
-H "Content-Type: application/json" \
-d '{"phone": "+1 512 555 0141", "start_time": "2026-11-05T14:00:00-06:00"}'Check a link
GEThttps://www.bizvoid.com/api/bookings/in/me
Answers with the name of the business the link is for. The bizvoid apps for Make and Zapier call it when you connect, and show the name next to the connection.
curl https://www.bizvoid.com/api/bookings/in/me \
-H "Authorization: Bearer YOUR_BOOKING_SECRET"The answer:
{
"success": true,
"data": {
"business": "Example Hair Studio"
}
}business is the name bizvoid uses for the business. When it has none, it is My business, or Client for an agency's client.
It can answer 403, 404, 429, 500 or 503, as in Errors. With the link as the URL, it is GET https://www.bizvoid.com/api/bookings/in/YOUR_BOOKING_SECRET/me.
Send a booking
POSThttps://www.bizvoid.com/api/bookings/in
Creates a booking, or moves or cancels one sent before. Send one booking per request, as a JSON object. Form fields (application/x-www-form-urlencoded or multipart/form-data) work too. A JSON or form-encoded body can be up to 20,000 characters.
curl -X POST https://www.bizvoid.com/api/bookings/in \
-H "Authorization: Bearer YOUR_BOOKING_SECRET" \
-H "Content-Type: application/json" \
-d '{
"name": "Jordan Lee",
"phone": "+1 512 555 0141",
"email": "jordan@example.com",
"start_time": "2026-11-05T14:00:00-06:00",
"duration_minutes": 30,
"service": "Haircut",
"booking_id": "bk_10482"
}'With the link as the URL, it is POST https://www.bizvoid.com/api/bookings/in/YOUR_BOOKING_SECRET.
Fields
Field names are matched without case, spaces or punctuation, so start_time, Start Time and startTime are the same field. Names booking tools often use work too, like phone_number, mobile, start, end, event_id and invitee_email. A nested object is read with its parent's name in front, so {"customer": {"phone": "..."}} is customer_phone. A JSON list holding one booking is read as that booking; a longer list is refused.
Dates and time zones
start_time and end_time take ISO 8601. Send the time zone with the time when you can:
2026-11-05T14:00:00-06:00with an offset2026-11-05T20:00:00.000Zin UTC, the way Make sends its dates2026-11-05 14:00 America/Chicagowith a time zone name2026-11-05T14:00:00or2026-11-05 14:00with no time zone
They also take Unix time in seconds or milliseconds, and text like 11/05/2026 2:00 PM (month first), November 5, 2026 2:00 PM and 5 November 2026 14:00.
A time with no time zone is read in time_zone when the booking has one, and otherwise in the business's own time zone in bizvoid. If bizvoid doesn't know the business's time zone, the booking is refused with a 400. It is never guessed as UTC.
A date with no time is refused, and so is a start more than 2 years before or after now. Answers give times in UTC, like 2026-11-05T20:00:00.000Z.
Sending a booking again
bizvoid never saves the same booking twice. It first looks for one the business already got from its link:
- with a
booking_id, the booking with that ID; - without one, a booking at the same start time with the same phone, or the same email when there is no phone.
Then:
- Nothing found: a new booking is saved, and the action is
created. Arescheduledstatus saves a new booking too. - Found: that booking is updated instead. A new start time or length moves it (
rescheduled), and its reminder and review request go out again for the new time. Anything else isupdated. A cancelled booking sent again is booked again. - A cancel: the booking found is cancelled (
cancelled) and gets no reminder. If none is found, nothing changes (not_found). To cancel, send thebooking_id, or the phone or email with thestart_time.
Each update is read as a whole booking: send end_time or duration_minutes again, or its length goes back to 60 minutes. A name, phone, email or notes left out keep what was saved, and agreed_to_texts and agreed_to_review_texts both left out keep the answers already saved.
Two copies with the same booking_id sent at the same moment still make one booking, so a retry is safe.
curl -X POST https://www.bizvoid.com/api/bookings/in \
-H "Authorization: Bearer YOUR_BOOKING_SECRET" \
-H "Content-Type: application/json" \
-d '{
"booking_id": "bk_10482",
"status": "rescheduled",
"phone": "+1 512 555 0141",
"start_time": "2026-11-06T10:00:00-06:00",
"duration_minutes": 30
}'curl -X POST https://www.bizvoid.com/api/bookings/in \
-H "Authorization: Bearer YOUR_BOOKING_SECRET" \
-H "Content-Type: application/json" \
-d '{"booking_id": "bk_10482", "status": "cancelled"}'Responses
A booking that was read answers 200:
{
"success": true,
"data": {
"action": "created",
"message": "Booking saved.",
"appointmentId": "8d0c6b8e-3f4a-4b7e-9a51-2f6d1c0e7a42",
"startsAt": "2026-11-05T20:00:00.000Z"
}
}appointmentId is the booking's ID in bizvoid, and null for not_found. startsAt is the start time in UTC, and null for a cancel sent without a start_time.
A new booking that hasn't started yet sends the business its new booking alert. One whose start time has passed is saved without an alert, so past bookings can be sent too.
Errors
Every error answers with an HTTP status and JSON like this:
{
"success": false,
"error": "Missing phone or email. Send at least one so we know who booked.",
"code": "VALIDATION_ERROR"
}error is written for a person and says what to fix, so show it as it is. code is for your code.
A path or method the API doesn't have, like a typo in the path or GET /in, answers 404 or 405 with no JSON.
Rate limits
Each link takes up to 60 bookings a minute. Each IP address can make up to 120 requests a minute to booking links, counting every call. The counts start again at the top of each minute. Past either limit, the answer is 429 with Retry-After: 60.
Make and Zapier
The bizvoid apps call this API for you. You connect with the booking link: the app checks it with GET /in/me and names the connection after the business. The secret only goes in the Authorization header, and only to www.bizvoid.com, whatever host a pasted link names.
- Make, Create a booking: sends the fields above to
POST /in. Make sends dates in UTC, like2026-11-05T20:00:00.000Z, so the time zone is always included. A time typed without one is read in your Make time zone. - Make, Make an API call: sends any request to a path under
https://www.bizvoid.com/api/bookings, like/in/me, with the link already in the header. - Zapier, Create Booking: sends the fields above to
POST /in. Its Time Zone field fillstime_zonefor a Start Time without one.
In both, a link that was replaced or turned off answers 404, which stops the step with bizvoid's message, so you can connect again with the new link.
Questions
Reach us at bizvoid.com/?support=1 or support@bizvoid.com.