GoodInbound

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.