Calendar API
Note:
Calendar API includes read only date fields (such as
localStartDateTimeorlocalEndDateTime) with the timezone applied. Such fields use ISO-8601 datetime format.
If API caller is a user (not API CLIENT), that user timezone will be applied. If caller is an API CLIENT, that timezone of event user host id will be applied.
For UTC time you should use field without local prefix (such as startDateTime and endDateTime)
HTTP Method: GET
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/work-hours
URL examples:
https://api.live.welkincloud.io/gh/sb-demo/calendar/work-hours ?psm-ids=301b2895-cbf0-4cac-b4cf-1d082faee95c &from=2020-01-01T00:00:00.000Z &to=2020-01-31T23:59:59.000Zhttps://api.live.welkincloud.io/gh/sb-demo/calendar/work-hours ?psm-ids=301b2895-cbf0-4cac-b4cf-1d082faee95c,18f393a8-62b3-4b4b-aa42-da769ce4489a &from=2020-01-01T00:00:00.000Z &to=2020-01-31T23:59:59.000Z
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveList of id and values
["28f393a8-62b3-4b4b-aa42-da769ce4489a","18f393a8-62b3-4b4b-aa42-da769ce4489a"]Date_time in ISO-8601 format
2020-01-01T00:00:00.000ZDate_time in ISO-8601 format
2020-01-31T23:59:59.000ZIf provided, return localtime fields (localStartDateTime, localEndDateTime) with provided timezone, otherwise use timezone for psmId user. String timezone (IANA format).
List of work hours (requires psmIds and a from/to date range)
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/work-hours HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"details": [
{
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"daysInfo": [
{
"daysInfoId": "123e4567-e89b-12d3-a456-426614174000",
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}
]
}
]HTTP Method: POST
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/work-hours
Work Hours required fields
psmId
type - WORKING_HOURS, if creating working hours for a user or AVAILABILITY, if creating availability for an encounter
startDateTime
endDateTime
daysInfo
daysInfo.startTime
daysInfo.endTime
daysInfo.day
If an availability is created, it is necessary to specify an encounters block in the body, inside of which you should list all encounters that will have this availability. Example:
"encounters": [
"etmp-a1"
]
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveWORKING_HOURSPossible values: Required when type is AVAILABILITY.
Work hours created
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
POST /{tenantName}/{instanceName}/calendar/work-hours HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 332
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"daysInfo": [
{
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"details": [
{
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"daysInfo": [
{
"daysInfoId": "123e4567-e89b-12d3-a456-426614174000",
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}
]
}Updating work hours or avability by ID.
type - WORKING_HOURS, if updating working hours or AVAILABILITY, if updating availability for an encounter
If an availability is updating, it is necessary to specify an encounters block in the body, inside of which you should list all encounters that will have this availability. Example:
"encounters": [
"etmp-a1"
]
HTTP Method: PUT
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/work-hours/c7a4251f-d70e-4ccb-8c96-1038c76fd737
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the work hours record
WORKING_HOURSPossible values: Required when type is AVAILABILITY.
Updated work hours
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
PUT /{tenantName}/{instanceName}/calendar/work-hours/{workHoursId} HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 332
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"daysInfo": [
{
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"details": [
{
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"daysInfo": [
{
"daysInfoId": "123e4567-e89b-12d3-a456-426614174000",
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}
]
}HTTP Method: GET
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events/
Example URLs:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events?from=2020-01-15T14:00:00.000Z&participantIds=301b2895-cbf0-4cac-b4cf-1d082faee95c&sort=createdAt,asc&to=2020-02-11T00:00:00.000Z&eventType=APPOINTMENThttps://api.live.welkincloud.io/gh/sb-demo/calendar/events?from=2020-01-15T14:00:00.000Z&to=2020-02-11T00:00:00.000Z&eventType=ENCOUNTER&includeEncounterInfo=true
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveDate_time in ISO-8601 format , required
2022-02-11T00:00:00.000ZList of id and values, either users or
["301b2895-cbf0-4cac-b4cf-1d082faee95c"]Enum of allowed values ("APPOINTMENT", "LEAVE", "ENCOUNTER")
APPOINTMENTShould or not API return cancelled events (default: false)
trueShould or not API include encounterInfo field into dto (the field is exists for events with ENCOUNTER event type) (default: false)
trueDate_time in ISO-8601 format, required
2021-09-04T14:00:00.000ZIf true, only events that are not assigned to encounter will returns (default: false)
trueAllows one to specify the sort order of the returned patients collection
createdAt,ascPaginated list of calendar events
Standard paginated response wrapper.
Total number of matching records
Total number of pages
Current page number (zero-based)
Page size
Number of elements on the current page
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/events HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"content": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2026-01-01T00:00:00.000Z",
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"duration": 1,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": true,
"empty": true
},
"pageSize": 1,
"pageNumber": 1,
"offset": 1,
"unpaged": true,
"paged": true
},
"totalElements": 1,
"totalPages": 1,
"last": true,
"first": true,
"number": 1,
"size": 1,
"numberOfElements": 1,
"empty": true,
"sort": {
"sorted": true,
"unsorted": true,
"empty": true
}
}Request to create an event in Calendar.
NOTE: It's required to fill "eventColor", otherwise it will be white and not visible on Welkin UI.
For Appointments it should be "eventColor": "green" and for Leave event "eventColor": "grey".
Event required fields
startDateTime
endDateTime
hostId
participants
participants.participantId
participants.participantRole
HTTP Method: POST
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveEurope/MinskFree text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Created calendar event
Free text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
POST /{tenantName}/{instanceName}/calendar/events HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1447
{
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2026-01-01T00:00:00.000Z",
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"duration": 1,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}HTTP Method: GET
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events/externalId?type=EXTERNAL_ID
viewerTimezone
String timezone (IANA format)
If provided, return localtime fields (localStartDateTime, localEndDateTime) with provided timezone, otherwise use timezone for psmId user
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the calendar event
EXTERNAL_IDIf true, include encounter details when the event is linked to an encounter.
trueCalendar event (disambiguate by the type query param: ID, EXTERNAL_ID, EXTERNAL_CALENDAR_EVENT_ID)
Free text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/events/{eventId} HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2026-01-01T00:00:00.000Z",
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"duration": 1,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the calendar event
Free text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Updated calendar event
Free text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
PUT /{tenantName}/{instanceName}/calendar/events/{eventId} HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1447
{
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2026-01-01T00:00:00.000Z",
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"duration": 1,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}Note: Only future events can be deleted
EndFragmentStartFragment
HTTP Method: DELETE
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events/2dfbd113-5282-4f70-b456-d8cf7ecb5573
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the calendar event
Calendar event cancelled
No content
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
DELETE /{tenantName}/{instanceName}/calendar/events/{eventId} HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
HTTP Method: PATCH
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events/2dfbd113-5282-4f70-b456-d8cf7ecb5573
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the calendar event
Partial update — all fields optional.
Updated calendar event
Free text — commonly one of CalendarEventType's values.
Free text — commonly one of CalendarEventStatus's values.
Free text — commonly one of DeliveryMethod's values.
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
PATCH /{tenantName}/{instanceName}/calendar/events/{eventId} HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 898
{
"externalId": "text",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"participants": [
{
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalCalendarEventId": "text",
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2026-01-01T00:00:00.000Z",
"externalId": "text",
"externalIdUpdatedAt": "2026-01-01T00:00:00.000Z",
"eventTitle": "text",
"eventDescription": "text",
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"allDayEvent": true,
"duration": 1,
"eventType": "text",
"eventStatus": "text",
"eventMode": "text",
"eventColor": "text",
"hostId": "123e4567-e89b-12d3-a456-426614174000",
"timezone": "text",
"additionalInfo": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"acuityAppointmentId": 1,
"externalCalendarEventId": "text",
"encounterInfo": {
"encounterId": "123e4567-e89b-12d3-a456-426614174000",
"dispositionId": "123e4567-e89b-12d3-a456-426614174000",
"templateName": "text",
"templateTitle": "text",
"patientId": "123e4567-e89b-12d3-a456-426614174000",
"title": "text",
"description": "text",
"notes": "text",
"type": "text",
"status": "DRAFT",
"serviceCost": 1,
"preVisitCost": 1,
"visitServices": [
{
"name": "text",
"quantity": 1,
"serviceCost": 1,
"cancellationFee": 1,
"preVisitCost": 1,
"modifiers": [
"text"
]
}
],
"location": "text"
},
"participants": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participantRole": "patient",
"participationStatus": "UNKNOWN",
"attended": true,
"timezone": "text",
"firstName": "text",
"lastName": "text",
"deleted": true,
"hasAccess": true,
"hiddenPhi": true,
"email": "name@gmail.com",
"phone": "text",
"gender": "MALE",
"birthDate": "2026-01-01T00:00:00.000Z",
"enabled": true
}
],
"externalEventMetadata": {
"participants": [
{
"email": "name@gmail.com",
"status": "UNKNOWN",
"owner": true
}
],
"calendarProvider": "GOOGLE"
}
}HTTP Method: GET
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/psm-event-summary?from=2020-01-15T14:00:00.000Z&to=2020-02-11T00:00:00.000Z&psmIds=301b2895-cbf0-4cac-b4cf-1d082faee95c
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveDate_time in ISO-8601 format
2020-01-15T14:00:00.000ZDate_time in ISO-8601 format
2020-02-11T00:00:00.000ZUser id
["28f393a8-62b3-4b4b-aa42-da769ce4489a"]Event/working-hours summary per PSM
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/psm-event-summary HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"summary": [
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"totalCreatedEvents": 1,
"totalOccurredEvents": 1,
"totalFutureEvents": 1,
"eventStatusCount": {
"SCHEDULED": 3,
"CANCELLED": 1
},
"totalWorkingHours": "text",
"totalEventHours": "text",
"occupancy": "text"
}
]
}The request returns information about the schedule of users for the specified period: working hours, availability for encounters, all events in the calendar
Example:
https://api.live.welkincloud.io/gh/sb-demo/calendar/psm-schedules ?psmIds=28f393a8-62b3-4b4b-aa42-da769ce4489a,18f393a8-62b3-4b4b-aa42-da769ce4489a &from=2020-01-01T00:00:00.000Z &to=2020-01-31T23:59:59.000Z
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveList of id and values
["28f393a8-62b3-4b4b-aa42-da769ce4489a","18f393a8-62b3-4b4b-aa42-da769ce4489a"]Date_time in ISO-8601 format
2020-01-15T14:00:00.000ZDate_time in ISO-8601 format
2020-02-11T00:00:00.000ZWORKING_HOURS or AVAILABILITY
List of PSM schedules (work hours + events)
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/psm-schedules HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"workHours": [
{
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"daysInfo": [
{
"daysInfoId": "123e4567-e89b-12d3-a456-426614174000",
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}
],
"events": [
{
"eventId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"eventTitle": "text",
"eventType": "text",
"eventColor": "text",
"allDayEvent": true,
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z"
}
]
}
]The request checks the availability of users for the specified period and returns information about working hours, availabilities for encounters and all events in the calendar. In order for the information to be displayed for a user, the user must have working hours set for the specified period. If the user does not have working hours in the specified period, he is considered unavailable and the information will not be displayed for him
Example:
https://api.live.welkincloud.io/gh/sb-demo/calendar/psm-schedules ?psmIds=28f393a8-62b3-4b4b-aa42-da769ce4489a,18f393a8-62b3-4b4b-aa42-da769ce4489a &from=2020-01-01T00:00:00.000Z &to=2020-01-31T23:59:59.000Z
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveList of id and values
["28f393a8-62b3-4b4b-aa42-da769ce4489a","18f393a8-62b3-4b4b-aa42-da769ce4489a"]Date_time in ISO-8601 format
2020-01-15T14:00:00.000ZDate_time in ISO-8601 format
2020-02-11T00:00:00.000ZWORKING_HOURS or AVAILABILITY
List of available PSM schedules
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
GET /{tenantName}/{instanceName}/calendar/available-psm-schedules HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"psmId": "123e4567-e89b-12d3-a456-426614174000",
"workHours": [
{
"workHoursId": "123e4567-e89b-12d3-a456-426614174000",
"createdBy": "123e4567-e89b-12d3-a456-426614174000",
"updatedBy": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"type": "WORKING_HOURS",
"ruleType": "DEFAULT",
"startDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z",
"daysInfo": [
{
"daysInfoId": "123e4567-e89b-12d3-a456-426614174000",
"day": 1,
"startTime": "09:00:00",
"endTime": "17:00:00"
}
],
"encounters": [
"text"
]
}
],
"events": [
{
"eventId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"eventTitle": "text",
"eventType": "text",
"eventColor": "text",
"allDayEvent": true,
"startDateTime": "2026-01-01T00:00:00.000Z",
"localStartDateTime": "2026-01-01T00:00:00.000Z",
"endDateTime": "2026-01-01T00:00:00.000Z",
"localEndDateTime": "2026-01-01T00:00:00.000Z"
}
]
}
]HTTP Method: PUT
HTTP URL:
https://api.live.welkincloud.io/gh/sb-demo/calendar/events/2dfbd113-5282-4f70-b456-d8cf7ecb5573/invitation-response
Note: all fields are required
Bearer token obtained from POST /{tenantName}/admin/api_clients/{clientName}. Valid for 60 minutes.
Your organization (tenant) name, e.g. acme-health
acme-healthYour environment name: live, sandbox, or a custom name
liveUUID of the calendar event
e.g. Yes, No, Maybe
Invitation response recorded
No content
Bad request — the request could not be understood or was missing required parameters.
Unauthorized — the Bearer token is missing, expired, or invalid.
Forbidden — the API client role does not have permission for this resource. Check the role and security policy in Admin.
Not found — the requested resource does not exist.
Too many requests — rate limit exceeded. Implement exponential backoff.
Internal server error.
PUT /{tenantName}/{instanceName}/calendar/events/{eventId}/invitation-response HTTP/1.1
Host: api.live.welkincloud.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 85
{
"participantId": "123e4567-e89b-12d3-a456-426614174000",
"participationStatus": "text"
}No content
Last updated
Was this helpful?