Skip to content
API reference/Appointments

List appointments

Try it

A site's appointments by time. upcoming=true (the default) = from now on; false = everything, oldest first. Filter by status (pending = waiting for your answer).

GET/api/v1/sites/{site_id}/appointments

Authentication

An API key as Authorization: Bearer or x-api-key. It needs the bookings:read scope — read booking hours and appointments.

bookings:readRead onlyMCP tool: list_appointments

Parameters

Named placeholders go in the path; the rest in the query string.

site_idstringPath · required
The site's id.1 to 100 characters
statusstringQuery · optional
One of: pending, confirmed, declined, cancelled
upcomingstringQuery · optional
true = only appointments that haven't ended.One of: true, falseDefault "true"
limitintegerQuery · optional
How many to return (1–100).1 to 100Default 50
cursorstringQuery · optional
next_cursor from the previous page.1 to 100 characters

Response

200 with JSON on success (schema on the right). Errors use the standard envelope.

curl
curl -X GET 'https://websites.workflowcorp.com/api/v1/sites/SITE_ID/appointments?status=pending' \
  -H "Authorization: Bearer $WEBSITEBUDDY_API_KEY"
Example arguments
{
  "site_id": "SITE_ID",
  "status": "pending"
}
Response schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "confirmed",
              "declined",
              "cancelled"
            ]
          },
          "status_words": {
            "type": "string",
            "description": "The status as the inbox says it: \"Waiting for your answer\", \"Booked\"…"
          },
          "starts_at": {
            "type": "string",
            "description": "ISO instant."
          },
          "ends_at": {
            "type": "string"
          },
          "when": {
            "type": "string",
            "description": "\"Tuesday, October 20 at 9:00 AM\" in the booking time zone."
          },
          "service": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The form message it arrived with (list_submissions)."
          },
          "decided_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reminder_sent_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_changed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the customer last cancelled or moved it themselves (the link in their emails); null = never."
          },
          "is_sample": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "status_words",
          "starts_at",
          "ends_at",
          "when",
          "service",
          "name",
          "email",
          "phone",
          "notes",
          "message_id",
          "decided_at",
          "reminder_sent_at",
          "customer_changed_at",
          "is_sample",
          "created_at"
        ],
        "additionalProperties": false
      }
    },
    "has_more": {
      "type": "boolean"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "data",
    "has_more",
    "next_cursor"
  ],
  "additionalProperties": false
}