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/eventsRequired Scope: events:read
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Results per page, 1-100 (default: 25) |
search | string | Search events by keyword |
sort_by | string | Field to sort by |
sort_direction | string | asc or desc (default: desc) |
start_date | string | Filter events starting on or after this date (YYYY-MM-DD) |
end_date | string | Filter events ending on or before this date (YYYY-MM-DD) |
job_id | integer | Filter by job ID |
type | string | Filter by event type: appointment, task, or event |
assignee_ids | string | Comma-separated list of user UUIDs to filter by assignee |
status | string | Comma-separated list of statuses to filter by (e.g. scheduled,completed) |
request_id | integer | Filter 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/eventsRequired Scope: events:write
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | Event name |
description | string | No | Event description |
job_id | integer | No | Associated job ID |
request_id | integer | No | Associated request ID |
start_date | string | Yes | Start date (YYYY-MM-DD) |
end_date | string | Yes | End date (YYYY-MM-DD) |
start_time | string | No | Start time (HH:MM, 24-hour format) |
end_time | string | No | End time (HH:MM, 24-hour format) |
all_day | boolean | No | Whether this is an all-day event (default: false) |
multi_day | boolean | No | Whether this event spans multiple days (default: false) |
type | string | No | One of: appointment, task, event (default: event) |
status | string | No | One of: pending, in_progress, scheduled, cancelled, missed, completed (default: scheduled) |
assignee_ids | array of strings | No | User 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/:idRequired 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/:idRequired 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/:idRequired 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/statusRequired Scope: events:write
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | One 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"
}
}