Skip to the documentation
API

List and read booking pages

Every booking page of the person, oldest first, or one page by its id.

GET/booking-pages

Runs any of 2 calls on your workspace.

GET /booking-pages

Every booking page of the person, oldest first, or one page by its id.

Example

Needs calendar:read. The list is not paged, because a person holds at most 25 pages.

curl
curl "$OE/booking-pages?q=intro&sort=name" -H "$AUTH"curl "$OE/booking-pages/bkp_5c1e9a7b3d2f48e6a0b4c7d1" -H "$AUTH"
Response
{  "object": "list",  "data": [{      "object": "booking_page",      "id": "bkp_5c1e9a7b3d2f48e6a0b4c7d1",      "slug": "intro-call",      "name": "Intro call",      "status": "active",      "url": "https://openemail.uk/book/intro-call",      "problem": null,      "config": {        "description": "A first chat about your project.",        "hostName": "Hana Sato",        "durations": [30],        "location": { "kind": "video", "value": "https://meet.example.com/hana" },        "availability": {          "timezone": "Europe/Berlin",          "weekly": [            [],            [{ "start": 540, "end": 1020 }],            [{ "start": 540, "end": 1020 }],            [{ "start": 540, "end": 1020 }],            [{ "start": 540, "end": 1020 }],            [{ "start": 540, "end": 1020 }],            []          ],          "overrides": [{ "date": "2026-12-24", "ranges": [] }]        },        "rules": {          "noticeMinutes": 240,          "horizonDays": 60,          "intervalMinutes": null,          "bufferBeforeMinutes": 0,          "bufferAfterMinutes": 15,          "dailyLimit": null        },        "approval": false,        "fromEmail": "[email protected]",        "notifyHost": true,        "questions": [          { "id": "notes", "kind": "long-text", "label": "Anything we should know?", "required": false, "options": [] }        ],        "confirmation": "",        "redirectUrl": "",        "appearance": {          "accent": "#2563eb",          "theme": "auto",          "showAvatar": true,          "background": "default",          "fonts": { "primary": null, "secondary": null },          "backgroundImage": null        },        "guestChanges": { "cancel": true, "reschedule": true, "cutoffMinutes": 120 },        "busy": { "addresses": null, "subscriptions": true, "outOfOffice": true },        "seo": { "title": "", "description": "", "indexable": false },        "extraGuests": 0      },      "counts": { "upcoming": 3, "pending": 0 },      "away": [        { "address": "[email protected]", "startsAt": "2026-12-22T00:00:00.000Z", "endsAt": "2027-01-02T00:00:00.000Z" }      ],      "createdAt": "2026-10-13T07:00:05.870Z",      "updatedAt": "2026-10-13T07:00:05.870Z"    }]}

counts.upcoming is the confirmed bookings that have not started, and counts.pending the ones waiting for approval.

url is the public link to hand to guests.

A missing page, or one that belongs to another person, answers 404 booking_page_not_found.

q finds pages by name or link, status keeps the active or the paused ones, since and until keep the pages made in a window, and sort is oldest (the default), newest, name or upcoming.

Reference