Booking API
Check availability and create bookings anonymously from your own booking UI. Cancelling needs a project API key.
Check availability#
GET /api/v1/availability/:projectSlug
Returns the open time slots for an event type on a date. Use it to show times before creating a booking.
| Property | Type | Required | Description |
|---|---|---|---|
date |
string | Yes | Date in YYYY-MM-DD format |
eventTypeSlug |
string | Yes | The event type's URL slug |
timezone |
string | No | IANA timezone, defaults to UTC |
curl "https://goodinbound.com/api/v1/availability/acme?date=2026-08-12&timezone=UTC&eventTypeSlug=consultation"
{
"slots": [
{ "start": "2026-08-12T09:00:00Z", "end": "2026-08-12T09:30:00Z" },
{ "start": "2026-08-12T10:00:00Z", "end": "2026-08-12T10:30:00Z" }
],
"date": "2026-08-12",
"timezone": "UTC"
}
Create a booking#
POST /api/v1/bookings
Book an open slot for a guest. GoodInbound checks the slot is still available, emails the guest a confirmation, and creates the Google Calendar event when a calendar is connected.
| Property | Type | Required | Description |
|---|---|---|---|
projectSlug |
string | Yes | Your project's URL slug |
eventTypeSlug |
string | Yes | The event type's URL slug |
startTime |
string | Yes | ISO 8601 datetime |
name |
string | Yes | Guest name |
email |
string | Yes | Guest email |
timezone |
string | Yes | Guest timezone (IANA, e.g. America/New_York) |
notes |
string | No | Additional notes from the guest |
formFields |
object | No | Values for the event type's custom booking-form fields, keyed by field ID |
curl -X POST "https://goodinbound.com/api/v1/bookings" \
-H "Content-Type: application/json" \
-d '{
"projectSlug": "acme",
"eventTypeSlug": "consultation",
"startTime": "2026-08-12T09:00:00Z",
"name": "Jane Smith",
"email": "jane@example.com",
"notes": "Looking forward to our meeting",
"timezone": "America/New_York"
}'
{
"booking": {
"id": "bk_abc123",
"eventTypeId": "et_xyz789",
"name": "Jane Smith",
"email": "jane@example.com",
"startTime": "2026-08-12T09:00:00Z",
"endTime": "2026-08-12T09:30:00Z",
"timezone": "America/New_York",
"status": "confirmed",
"notes": "Looking forward to our meeting",
"createdAt": "2026-08-11T20:00:00Z"
}
}
Cancel a booking#
PATCH /api/projects/:projectId/bookings/:bookingId/cancel
Cancel a booking. Its status becomes cancelled, and the Google Calendar event is removed. This is a management route: send a project API key from your server.
curl -X PATCH "https://goodinbound.com/api/projects/proj_123/bookings/bk_abc123/cancel" \
-H "Authorization: Bearer gi_live_your_api_key"
{
"booking": {
"id": "bk_abc123",
"status": "cancelled",
"cancelledAt": "2026-08-12T08:00:00Z"
}
}
Confirming, declining, and listing bookings are in Bookings and Forms.