BlueSuite API
REST API v1

Events

Manage events via the REST API

The Events API lets you create, read, update, and delete events (appointments, tasks, and calendar events) in your workspace.

Note: Recurring event creation is not supported in v1. All events created via the API are single (non-recurring) events.

List Events

Returns a paginated list of events.

GET /api/v1/events

Required Scope: events:read

Query Parameters:

ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerResults per page, 1-100 (default: 25)
searchstringSearch events by keyword
sort_bystringField to sort by
sort_directionstringasc or desc (default: desc)
start_datestringFilter events starting on or after this date (YYYY-MM-DD)
end_datestringFilter events ending on or before this date (YYYY-MM-DD)
job_idintegerFilter by job ID
typestringFilter by event type: appointment, task, or event
assignee_idsstringComma-separated list of user UUIDs to filter by assignee
statusstringComma-separated list of statuses to filter by (e.g. scheduled,completed)
request_idintegerFilter by request ID
curl "https://app.bluesuite.com/api/v1/events?start_date=2025-03-01&end_date=2025-03-31&type=appointment" \
  -H "Authorization: Bearer wk_abc123.your_api_key"
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Site inspection",
      "start_date": "2025-03-15",
      "end_date": "2025-03-15",
      "start_time": "09:00",
      "end_time": "10:00",
      "type": "appointment",
      "status": "scheduled",
      "all_day": false
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total_pages": 1
  }
}

Create Event

Creates a new single (non-recurring) event.

POST /api/v1/events

Required Scope: events:write

Request Body:

FieldTypeRequiredDescription
namestringNoEvent name
descriptionstringNoEvent description
job_idintegerNoAssociated job ID
request_idintegerNoAssociated request ID
start_datestringYesStart date (YYYY-MM-DD)
end_datestringYesEnd date (YYYY-MM-DD)
start_timestringNoStart time (HH:MM, 24-hour format)
end_timestringNoEnd time (HH:MM, 24-hour format)
all_daybooleanNoWhether this is an all-day event (default: false)
multi_daybooleanNoWhether this event spans multiple days (default: false)
typestringNoOne of: appointment, task, event (default: event)
statusstringNoOne of: pending, in_progress, scheduled, cancelled, missed, completed (default: scheduled)
assignee_idsarray of stringsNoUser UUIDs to assign to this event
curl -X POST https://app.bluesuite.com/api/v1/events \
  -H "Authorization: Bearer wk_abc123.your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Site inspection",
    "start_date": "2025-03-15",
    "end_date": "2025-03-15",
    "start_time": "09:00",
    "end_time": "10:00",
    "type": "appointment",
    "job_id": 10,
    "assignee_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
  }'
{
  "success": true,
  "data": {
    "id": 50,
    "name": "Site inspection",
    "start_date": "2025-03-15",
    "end_date": "2025-03-15",
    "start_time": "09:00",
    "end_time": "10:00",
    "type": "appointment",
    "status": "scheduled",
    "job_id": 10,
    "all_day": false,
    "multi_day": false,
    "created_at": "2025-03-10T12:00:00.000Z"
  }
}

Get Event

Returns a single event with expanded details (assignees, job, etc.).

GET /api/v1/events/:id

Required Scope: events:read

curl https://app.bluesuite.com/api/v1/events/50 \
  -H "Authorization: Bearer wk_abc123.your_api_key"
{
  "success": true,
  "data": {
    "id": 50,
    "name": "Site inspection",
    "start_date": "2025-03-15",
    "end_date": "2025-03-15",
    "start_time": "09:00",
    "end_time": "10:00",
    "type": "appointment",
    "status": "scheduled",
    "job_id": 10,
    "all_day": false,
    "multi_day": false,
    "assignees": [
      {
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "first_name": "Jane",
        "last_name": "Doe"
      }
    ]
  }
}

Update Event

Updates an existing event. Only include the fields you want to change.

PUT /api/v1/events/:id

Required Scope: events:write

Request Body: Same fields as Create Event. All fields are optional.

curl -X PUT https://app.bluesuite.com/api/v1/events/50 \
  -H "Authorization: Bearer wk_abc123.your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Site inspection - rescheduled",
    "start_date": "2025-03-20",
    "end_date": "2025-03-20",
    "start_time": "14:00",
    "end_time": "15:00"
  }'
{
  "success": true,
  "data": {
    "id": 50,
    "name": "Site inspection - rescheduled",
    "start_date": "2025-03-20",
    "end_date": "2025-03-20",
    "start_time": "14:00",
    "end_time": "15:00",
    "status": "scheduled"
  }
}

Delete Event

Deletes an event.

DELETE /api/v1/events/:id

Required Scope: events:write

curl -X DELETE https://app.bluesuite.com/api/v1/events/50 \
  -H "Authorization: Bearer wk_abc123.your_api_key"
{
  "success": true,
  "data": {
    "deleted": true
  }
}

Update Event Status

Updates only the status of an event.

PUT /api/v1/events/:id/status

Required Scope: events:write

Request Body:

FieldTypeRequiredDescription
statusstringYesOne of: pending, in_progress, scheduled, cancelled, missed, completed
curl -X PUT https://app.bluesuite.com/api/v1/events/50/status \
  -H "Authorization: Bearer wk_abc123.your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "completed" }'
{
  "success": true,
  "data": {
    "id": 50,
    "status": "completed"
  }
}

On this page