Unavailability

Manage user unavailability to prevent scheduling conflicts. Unavailability entries indicate when users cannot work, whether from manual entries or approved time-off requests.

Get User Unavailabilities

Retrieve unavailabilities, time-off, and existing shifts for a user across all schedulers. Useful for checking availability before scheduling.

Query Parameters

ParameterTypeRequiredDescription
userIdintegerYesUser ID to check
startTimeintegerYesStart of date range (Unix timestamp)
endTimeintegerYesEnd of date range (Unix timestamp)

Example

curl --request GET \
  --url 'https://api.connecteam.com/scheduler/v1/schedulers/user-unavailability?userId=9170357&startTime=1736899200&endTime=1737504000' \
  --header 'X-API-KEY: YOUR_API_KEY'

Response

{
  "requestId": "abc123...",
  "data": {
    "userUnavailabilities": [
      {
        "userId": 9170357,
        "unavailabilities": [
          {
            "id": "unav-001",
            "type": "unavailability",
            "startTime": {
              "timestamp": 1736935200,
              "timezone": "America/New_York"
            },
            "endTime": {
              "timestamp": 1736978400,
              "timezone": "America/New_York"
            },
            "note": "Doctor appointment",
            "instanceId": 9454799
          },
          {
            "id": null,
            "type": "timeOff",
            "startTime": {
              "timestamp": 1737108000,
              "timezone": "America/New_York"
            },
            "endTime": {
              "timestamp": 1737194400,
              "timezone": "America/New_York"
            },
            "note": "Vacation",
            "policyName": "Annual Leave"
          }
        ],
        "shifts": [
          {
            "id": "shift-001",
            "startTime": {
              "timestamp": 1737021600,
              "timezone": "America/New_York"
            },
            "endTime": {
              "timestamp": 1737050400,
              "timezone": "America/New_York"
            },
            "instanceId": 9454799
          }
        ]
      }
    ]
  }
}

Response Fields

FieldTypeDescription
userIdintegerUser ID
unavailabilitiesarrayList of unavailability entries
unavailabilities[].typestringunavailability or timeOff
unavailabilities[].instanceIdintegerScheduler ID (for unavailability type)
unavailabilities[].policyNamestringTime-off policy name (for timeOff type)
shiftsarrayUser's existing shift assignments

Get Schedule Unavailabilities

Retrieve unavailabilities for a specific scheduler.

Query Parameters

ParameterTypeRequiredDescription
startTimeintegerYesStart of date range (Unix timestamp)
endTimeintegerYesEnd of date range (Unix timestamp)
limitintegerNoMax results (1-500, default: 10)
offsetintegerNoPagination offset

Example

curl --request GET \
  --url 'https://api.connecteam.com/scheduler/v1/schedulers/9454799/unavailabilities?startTime=1736899200&endTime=1737504000&limit=50' \
  --header 'X-API-KEY: YOUR_API_KEY'

Response

{
  "requestId": "abc123...",
  "data": {
    "unavailabilities": [
      {
        "id": "unav-001",
        "userId": 9170357,
        "isAllDay": true,
        "unavailabilityDate": "2025-01-15",
        "startTime": null,
        "endTime": null,
        "timezone": "America/New_York",
        "note": "Personal day"
      },
      {
        "id": "unav-002",
        "userId": 9170358,
        "isAllDay": false,
        "unavailabilityDate": "2025-01-16",
        "startTime": "09:00:00",
        "endTime": "13:00:00",
        "timezone": "America/New_York",
        "note": "Morning appointment"
      }
    ]
  },
  "paging": {
    "offset": 2
  }
}

Create Unavailability

Create a new unavailability entry for a user.

Request Body

FieldTypeRequiredDescription
userIdintegerYesUser ID
unavailabilityDatestringYesDate in ISO format (YYYY-MM-DD)
isAllDaybooleanYesWhether all-day unavailability
startTimestringConditionalStart time (HH:MM:SS) if not all-day
endTimestringConditionalEnd time (HH:MM:SS) if not all-day
timezonestringNoTz format (defaults to scheduler timezone)
notestringNoOptional description

Example: All-Day Unavailability

curl --request POST \
  --url https://api.connecteam.com/scheduler/v1/schedulers/9454799/unavailability \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: YOUR_API_KEY' \
  --data '{
    "userId": 9170357,
    "unavailabilityDate": "2025-01-20",
    "isAllDay": true,
    "note": "Family event"
  }'

Example: Partial Day Unavailability

curl --request POST \
  --url https://api.connecteam.com/scheduler/v1/schedulers/9454799/unavailability \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: YOUR_API_KEY' \
  --data '{
    "userId": 9170357,
    "unavailabilityDate": "2025-01-21",
    "isAllDay": false,
    "startTime": "14:00:00",
    "endTime": "18:00:00",
    "timezone": "America/New_York",
    "note": "Afternoon appointment"
  }'

Response

{
  "requestId": "abc123...",
  "data": {
    "id": "unav-003",
    "userId": 9170357,
    "isAllDay": false,
    "unavailabilityDate": "2025-01-21",
    "startTime": "14:00:00",
    "endTime": "18:00:00",
    "timezone": "America/New_York",
    "note": "Afternoon appointment"
  }
}
📝

Note

Repeating unavailabilities are not currently supported via API. Each entry must be created individually.


Delete Unavailability

Remove an unavailability entry.

curl --request DELETE \
  --url https://api.connecteam.com/scheduler/v1/schedulers/9454799/unavailability/unav-003 \
  --header 'X-API-KEY: YOUR_API_KEY'

Response

{
  "requestId": "abc123...",
  "data": {}
}

Unavailability vs Time-Off

TypeSourceEditable via API
unavailabilityManual entryYes
timeOffApproved time-off requestNo (read-only)

Time-off entries come from the Time Off feature and are automatically reflected in user unavailabilities. They cannot be created or deleted through the Scheduler API.


API Reference