Booking Pages
A booking page publishes one mailbox’s open availability at a public URL so visitors can pick a slot and book a meeting. Booking pages are the only calendar configuration stored by shipmail; slots are always computed live from the owner’s calendar, never stored.
Last updated
The booking page object
{
"object": "booking_page",
"id": "bkp_abc123",
"mailbox": "hello@yourdomain.com",
"slug": "intro",
"url": "https://shipmail.to/book/yourdomain.com/intro",
"name": "Intro call",
"description": null,
"duration_minutes": 30,
"availability_days": [1, 2, 3, 4, 5],
"window_start_minutes": 540,
"window_end_minutes": 1020,
"timezone": "America/New_York",
"buffer_minutes": 0,
"minimum_notice_minutes": 0,
"max_advance_days": 30,
"conferencing_provider": "zoom",
"active": true,
"created_at": "2026-07-07T10:00:00.000Z",
"updated_at": "2026-07-07T10:00:00.000Z"
}List and get
GET /v1/booking-pages
GET /v1/booking-pages/:idScope: booking_pages:read. The list endpoint supports cursor and limit pagination.
Create a booking page
POST /v1/booking-pagesScope: booking_pages:write.
{
"name": "Intro call",
"mailbox": "hello@yourdomain.com",
"slug": "intro",
"duration_minutes": 30,
"availability_days": [1, 2, 3, 4, 5],
"window_start_minutes": 540,
"window_end_minutes": 1020,
"timezone": "America/New_York",
"conferencing_provider": "zoom"
}Conferencing is opt-in per booking page. The selected provider must already be connected to the page’s mailbox, or the request is rejected. See Zoom and Google Meet.
Update or delete
PATCH /v1/booking-pages/:id
DELETE /v1/booking-pages/:idScope: booking_pages:write. PATCH accepts any subset of the create fields. DELETE returns 204.
{
"conferencing_provider": null
}Set conferencing_provider to null to stop creating meeting links.