---
title: "Read hand-marked slots for an email (no auth; confirmed / live data only)"
method: GET
path: "/api/manual-availability"
---

# Read hand-marked slots for an email (no auth; confirmed / live data only)

`GET /api/manual-availability`

## Request

- Base URL: `https://whenmeet.me`
- URL: `https://whenmeet.me/api/manual-availability`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Host-session`
  - none

Reads the layer the same caller's save would write to: the signed-in caller's own address → the global (owner-proven) layer only (own address beats k). Otherwise the global layer merged with at most one host's layer: the issuer of a valid k for this email, else the signed-in caller (session / PAT), else none. If both layers have rows in the window, the more recently saved one wins whole. Never another host's layer.

## Query parameters

- `email` string, email, required
- `from` integer, required
- `to` integer, required
- `k` string

## Response `200`

email + freeSlots[] + busySlots[] (live data only — pending saves never show).

## Other responses

- `400`: invalid_email | bad_window.

---

[API](https://skmtc.dev/whenmeet/apis/whenmeet-me-api.md) · [All operations](https://skmtc.dev/whenmeet/apis/whenmeet-me-api/llms.txt) · [OpenAPI document](https://skmtc.dev/whenmeet/apis/whenmeet-me-api/revisions/202b80022215?raw)
