OpenCourt Developers
API ReferenceSchedule

List schedule items

GET/v1/schedule

The club's schedule as a time-ordered feed of session items — event occurrences and court bookings — one item per (event, club operating day). Courts and windows are in time_slots. All times are ISO-8601 in the club timezone (see GET /v1/club). A multi-day event (e.g. a league) appears as one item per in-range session, all sharing event_id — group by it to reconstruct the event, and fetch GET /v1/events/{id} for the full object + roster. Counts only; the roster is detail-only. Maintenance blocks are not included. Scoped to the club tied to your API key.

Authorization

bearerAuth
AuthorizationBearer <token>

Your club API key. Send it as Authorization: Bearer oc_live_….

In: header

Query Parameters

date?string

A club-local day (YYYY-MM-DD). Defaults to today.

starts_after?string

ISO-8601 lower bound. Use with starts_before (range ≤ 31 days).

starts_before?string

ISO-8601 upper bound. Use with starts_after.

type?string

Only items of this type (event | reservation).

Value in"event" | "reservation"
space_id?string

Only items using this space (court/room).

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://api.getopencourt.com/v1/schedule"
{
  "object": "list",
  "data": [
    {
      "id": "e1d2c3b4-a5f6-4789-9abc-0123456789ab_2026-06-15",
      "object": "schedule_item",
      "type": "event",
      "event_id": "e1d2c3b4-a5f6-4789-9abc-0123456789ab",
      "event_type": "league",
      "title": "Monday Night League",
      "open": true,
      "privacy": "public",
      "business_date": "2026-06-15",
      "start": "2026-06-15T19:00:00-04:00",
      "end": "2026-06-15T20:30:00-04:00",
      "time_slots": [
        {
          "start": "2026-06-15T19:00:00-04:00",
          "end": "2026-06-15T20:30:00-04:00",
          "spaces": [
            {
              "id": "b2d4f6a8-1c3e-4a5b-9d7c-0e2f4a6b8c1d",
              "name": "Court 1"
            }
          ]
        }
      ],
      "participant_count": 12,
      "max_participants": 16,
      "spots_available": 4,
      "tags": [
        {
          "id": "a1c3e5f7-2b4d-4c6e-8a0b-1d3f5a7c9e1b",
          "name": "Intermediate"
        }
      ],
      "host": {
        "customer_id": "d1f4e9c2-3a5b-4c6d-8e7f-0a1b2c3d4e5f",
        "first_name": "Karen",
        "last_name": "Smith"
      }
    }
  ],
  "has_more": true,
  "url": "string"
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "request_id": "string"
  }
}