# Waity API

Waity gives AI agents live wait times for places with a line: the posted wait now, the usual wait, when it should drop, and shorter options nearby. Current coverage: GET /v1/categories. Guide: /llms.txt. ER and urgent care: Waity tracks only some, so their lists are coverage partial: never call the results the nearest. 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; serious symptoms are seen first. An ER wait is the time until a provider first sees you, not the whole visit; sources measure it differently, so never compare minutes across sources. 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 crossings: waits are for entering the US only; Waity has none for leaving the US. Place-specific rules (the gates a checkpoint serves, what a DMV number counts) come in each answer's notes: repeat them.

Base URL: https://api.waity.ai
OpenAPI: https://api.waity.ai/openapi.json
Guide: https://api.waity.ai/llms.txt (full: https://api.waity.ai/llms-full.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 with their current wait: near a point, by q, 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: now, usual, next and instead; a group id returns its lanes or 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

Current coverage by category, with default under thresholds

## GET /v1/plans

The plans: price, daily call limit, keys and features. Accounts and paid plans open soon; POST /v1/keys gives a free key today.

## POST /v1/keys

A free API key, shown once

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

The new key is shown once and the old one stops working. The token is single-use and valid 30 minutes.

## POST /mcp

MCP (streamable HTTP): tools find_waits and get_wait

Protocol versions 2025-03-26, 2025-06-18, 2025-11-25 and 2026-07-28. A request with an Origin header is accepted only from an allowlist and gets 403 otherwise; browser apps should call the REST routes. Details: /llms-full.txt.

## GET /llms.txt

Short guide for agents

## GET /llms-full.txt

Full guide for agents

## GET /v1/changelog

What changed in the API, MCP, data and accounts, newest first

Not counted against any limit. Cached 60 s with an ETag; send If-None-Match for a 304.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | no | integer | How many entries, newest first. |

## GET /health

Service health: API and live data status
