API & WebhooksSchedulers & Bookings

Schedulers & Bookings

List schedulers, get scheduler details, list bookings, get booking details, and cancel bookings via the API.

Schedulers & Bookings API

Access scheduler and booking data. Requires API tokens with schedulers.view, bookings.view, or bookings.manage abilities.


List Schedulers

GET /api/v1/schedulers — Permission: schedulers.view

Query Parameters

ParameterTypeRequiredDescription
searchstringNoSearch by scheduler name
is_activebooleanNoFilter by active status
per_pageintegerNoResults per page, 1–100 (default: 25)

Example Request

curl -X GET "https://your-domain.com/api/v1/schedulers" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Example Response

{
  "data": [
    {
      "id": 1,
      "name": "30-Minute Consultation",
      "slug": "30-minute-consultation",
      "description": "Free introductory call",
      "duration": 30,
      "location": { "type": "google_meet" },
      "is_active": true,
      "booking_count": 56,
      "fields": [],
      "created_at": "2025-01-20T08:00:00.000000Z",
      "updated_at": "2025-04-10T12:00:00.000000Z"
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "per_page": 25, "total": 1 },
  "links": { "first": "...", "last": "...", "prev": null, "next": null }
}

Get Scheduler

GET /api/v1/schedulers/{id} — Permission: schedulers.view

Returns the scheduler with its custom booking form fields.


List Bookings

GET /api/v1/schedulers/{id}/bookings — Permission: bookings.view

Query Parameters

ParameterTypeRequiredDescription
statusstringNoFilter: pending_approval, confirmed, cancelled, declined, completed, no_show, rescheduled
per_pageintegerNoResults per page, 1–100 (default: 25)

Example Request

curl -X GET "https://your-domain.com/api/v1/schedulers/1/bookings?status=confirmed" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Example Response

{
  "data": [
    {
      "id": 10,
      "scheduler_id": 1,
      "contact_name": "Alice Johnson",
      "contact_email": "alice@example.com",
      "status": "confirmed",
      "starts_at": "2025-06-15T10:00:00.000000Z",
      "ends_at": "2025-06-15T10:30:00.000000Z",
      "location": { "type": "google_meet" },
      "data": { "company": "Acme Corp" },
      "contact_id": 22,
      "created_at": "2025-06-10T08:00:00.000000Z"
    }
  ],
  "meta": { "current_page": 1, "last_page": 3, "per_page": 25, "total": 56 },
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." }
}

Get Booking

GET /api/v1/schedulers/{id}/bookings/{bookingId} — Permission: bookings.view

Returns the same shape as a single item in the list response.


Cancel Booking

POST /api/v1/schedulers/{id}/bookings/{bookingId}/cancel — Permission: bookings.manage

Cancels a booking that is in pending_approval or confirmed status.

Example Request

curl -X POST "https://your-domain.com/api/v1/schedulers/1/bookings/10/cancel" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Example Response

{
  "data": {
    "id": 10,
    "scheduler_id": 1,
    "contact_name": "Alice Johnson",
    "contact_email": "alice@example.com",
    "status": "cancelled",
    "starts_at": "2025-06-15T10:00:00.000000Z",
    "ends_at": "2025-06-15T10:30:00.000000Z",
    "location": { "type": "google_meet" },
    "data": { "company": "Acme Corp" },
    "contact_id": 22,
    "created_at": "2025-06-10T08:00:00.000000Z"
  }
}

Returns 422 if the booking is not in a cancellable status.

Was this article helpful?