# Waity API

Live and usual waits for ERs, urgent care, DMV offices, airport security lanes and land border crossings. GET /v1/categories gives each category's current coverage (coverage, live_places). The reading guide is at /llms.txt. ER: the wait is the time until a provider first sees you, not the whole visit, which takes hours. Each hospital system measures it differently (HCA: a 4-hour average; Inova: a median; Northwell: an estimate it posts as 60+ over an hour), so never compare minutes across systems. People with serious symptoms are seen first: for chest pain, stroke signs, trouble breathing or a serious injury, tell the user to call 911 or go to the nearest ER, whatever the waits say. A freestanding ER (place.facility freestanding_ed) has no inpatient beds or surgery. Urgent care: for minor illness or injury only, never for an emergency. Border: waits are for entering the US only (time in line to reach the CBP booth). Waity has no waits for leaving the US; don't use them for a southbound or outbound trip. DMV (Virginia): the number is the driver's license and ID queue, the longest current wait after check-in, not every service at the office. Airport (DCA): each checkpoint serves specific gates. Terminal 1 (Checkpoint A) serves only gates A1-A9; the Terminal 2 checkpoints (North and South) serve gates B10-E59. Never send a traveler to a checkpoint that doesn't serve their gate.

Base URL: https://api.waity.ai
OpenAPI: https://api.waity.ai/openapi.json
Guide: https://api.waity.ai/llms.txt

Send a key as `X-Api-Key: <key>` or `Authorization: Bearer <key>`. Without a key the daily limit is lower.

## GET /v1/places

Places near a point, by name, city, airport code or ZIP, or by id

One of near, cell, q or ids (or the X-Waity-Location header) is required.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `near` | query | no | string | Latitude,longitude. |
| `cell` | query | no | string | An H3 cell instead of a point. |
| `q` | query | no | string | Place name, city, airport code or ZIP. |
| `ids` | query | no | string | Up to 25 place ids, comma-separated, returned in that order. |
| `category` | query | no | string | One or more categories, comma-separated. |
| `open` | query | no | true \\| false | true: only places open now. |
| `limit` | query | no | string | 1 to 25, default 10. |
| `sort` | query | no | distance \\| wait \\| total |  |
| `view` | query | no | full \\| minimal | full (default) or minimal. |
| `X-Waity-Location` | header | no | string | latitude,longitude of the user, accepted in place of near (preferred: it keeps the location out of URLs and logs). |

## GET /v1/places/{id}

One place with now, usual, next and instead; an airport or border port id returns its lanes, a hospital campus id its departments

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `id` | path | yes | string |  |
| `under` | query | no | string | Threshold in minutes for next.under_by. Defaults per category. |
| `travel_min` | query | no | string | Travel time in minutes; adds next.leave_by. |
| `date` | query | no | string | Plan a local day, today to 7 days ahead. |
| `near` | query | no | string | Latitude,longitude. |
| `forecast` | query | no | true \\| false | With view=minimal, adds a compact forecast. |
| `view` | query | no | full \\| minimal | full (default) or minimal. |
| `X-Waity-Location` | header | no | string | latitude,longitude of the user, accepted in place of near (preferred: it keeps the location out of URLs and logs). |

## GET /v1/categories

The categories, with labels, default under thresholds and current coverage (places, live_places, coverage)

## GET /v1/plans

The plans: id, name, monthly price, daily call limit, max keys and features. Accounts and paid plans are at https://account.waity.ai.

## POST /v1/keys

A free API key (1,000 calls a day). Limited to 5 a minute per IP and 3 a day per email.

## POST /v1/keys/rotate

Swaps the key behind an emailed rotate link for a new one, shown once. The old key stops working. The token is single-use and valid 30 minutes.

## POST /mcp

MCP endpoint (JSON-RPC over streamable HTTP). Tools find_waits and get_wait mirror the two GET routes.

Protocol versions 2025-03-26, 2025-06-18 and 2025-11-25 (initialize first), and 2026-07-28 (no initialize; the version goes in params._meta and the MCP-Protocol-Version header). initialize answers an unsupported version, such as 2024-11-05, with 2025-11-25. A request with an Origin header is accepted only from an allowlist of origins (claude.ai, chatgpt.com, waity.ai) and gets 403 otherwise; browser apps should call the REST routes, which allow any origin.

## GET /llms.txt

Plain-text guide for agents

## GET /health

Service health: API and live data status
