developers.scheduld.com

Developer API

Build on scheduld with a REST API, signed webhooks, IP allowlists, and full request logging — everything you need for production integrations.

Getting started

Integrate scheduld with your stack using a REST API, signed webhooks, and enterprise-grade access controls.

Authentication

All /api/v1 endpoints require a platform API key in the Authorization header. Keys are organization-scoped and checked against your IP allowlist and rate limits.

  • Authorization: Bearer <api_key>

Base URL: https://app.scheduldonline.com/api/v1

Rate limits: 120/minute and 5,000/day per API key.

Quick start

  1. 1

    Create an API key

    In scheduld, open Settings → Developers → API. Generate a key and store it securely — it is only shown once.

  2. 2

    Verify connectivity

    Call GET /api/v1/health with your key to confirm authentication and organization scope.

  3. 3

    Discover locations & items

    Use GET /locations and GET /items to resolve IDs for availability and booking requests.

  4. 4

    Check availability

    Call GET /availability with itemId and date. Response fields adapt to the item schedule type.

  5. 5

    Create a booking

    POST /bookings with customer details, itemId, date, and timeSlot. Totals are calculated server-side.

Example request

curl -X GET "https://app.scheduldonline.com/api/v1/health" \
  -H "Authorization: Bearer sk_live_your_api_key"

Error responses

Errors return JSON with an error string. Validation failures may include a details array.

{
  "unauthorized": {
    "error": "Missing or invalid Authorization header. Use Bearer <api_key>."
  },
  "forbidden": {
    "error": "Location not found for this account."
  },
  "validation": {
    "error": "locationId is required when your organization has multiple locations."
  },
  "rateLimit": {
    "error": "Rate limit exceeded.",
    "window": "minute",
    "retryAfterSeconds": 42
  }
}

Location scoping

Use GET /locations to discover location IDs. When your organization has only one location, locationId is optional on write requests — the sole location is used automatically. With multiple locations, pass locationId explicitly.