---
title: "Find meeting slots across accounts"
method: POST
path: "/v1/calendar/availability"
tags: ["Calendar"]
---

# Find meeting slots across accounts

`POST /v1/calendar/availability`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/calendar/availability`
- Auth: HTTP bearer

Slots of `durationMinutes` every `intervalMinutes` between `from` and `to` that are free for every participant (`collective`) or for at least one (`max_availability`). Buffers pad the participants' existing meetings. Open hours are evaluated in each participant's own timezone; `defaultOpenHours` applies to participants without their own.

## Request body

- object
  - `participants` object[], required
    - `accountId` string, required
    - `openHours` object[]
      - `days` integer[], required: 0 = Sunday.
      - `timezone` string, required
      - `start` string, required
      - `end` string, required
      - `exdates` string[]: Dates to exclude.
  - `from` string, date-time, required
  - `to` string, date-time, required
  - `durationMinutes` integer, required
  - `intervalMinutes` integer
  - `roundTo` integer: Rounds the first candidate slot up to this many minutes.
  - `buffer` object
    - `before` integer
    - `after` integer
  - `defaultOpenHours` object[]
    - `days` integer[], required: 0 = Sunday.
    - `timezone` string, required
    - `start` string, required
    - `end` string, required
    - `exdates` string[]: Dates to exclude.
  - `method` 'collective' | 'max_availability'

## Response `200`

Candidate slots

- object
  - `data` object
    - `timeSlots` object[]
      - `from` string, date-time
      - `to` string, date-time
      - `accountIds` string[]: The participants free in this slot.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `412`: The connected account cannot serve this request until something outside the request changes. Two codes: - `account_scope_missing`: the account was connected without the area this endpoint needs (`details.grantedAreas`, `details.missingArea`), or Google reports the grant lacks a permission. Reconnect with a wider `scopes=`. - `admin_consent_required` (Microsoft): the tenant requires an administrator's approval. `details.adminConsentUrl` is the Microsoft Entra admin-consent link to hand to one; it opens in a browser with no API key and stays valid for one hour. `GET /v1/connect/microsoft/admin-consent` mints a fresh one.

## Changes

- **2026-10-27** `0a24331f5431`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/calendar/availability/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/c319eb5d95b6?raw)
