# Closer Chauffeur developer portal

Programmatic access to Closer Chauffeur for AI agents and partner integrations.

## Quickstart

1. Read this portal: https://www.closerchauffeur.com/developers
2. Fetch the OpenAPI 3.1 spec: https://www.closerchauffeur.com/openapi.json
3. Call the versioned REST API at https://www.closerchauffeur.com/api/v1
4. Optional: MCP JSON-RPC at https://www.closerchauffeur.com/api/mcp (bearer token)
5. Optional CLI: `npx closer-chauffeur --help` (see the portal)

## Public REST API v1

No API key is required for read endpoints. Write/checkout and MCP tool calls that mutate state need a bearer token issued by Closer.

- `GET /api/v1` — catalog
- `GET /api/v1/distance?from=&to=` — km, duration, ETA, Zone A
- `GET /api/v1/places?input=` — address autocomplete
- `GET /api/v1/price?vehicleClass=&distanceKm=` — list price (optional tourSlug, waitMinutes, inZoneA)
- `GET /api/v1/availability?pickupDatetime=` — lead-time check
- `GET /api/v1/rating` — Google Business rating snapshot
- `POST /api/v1/checkout` — Stripe Checkout session (validated booking payload)

Errors use RFC 9457 `application/problem+json` with `code`, `detail`, and `hint`. Rate limit: 60 requests / 60s per client (`RateLimit` headers; `Retry-After` on 429).

Versioning: URL path `/api/v1/`. Breaking changes ship as `/api/v2`. Deprecated operations remain for at least 90 days and send `Deprecation` + `Sunset` headers.

## When to call the API

Use the API when you already know the user wants a Closer chauffeur quote or booking — not to scrape marketing pages. For human-readable context, prefer llms.txt and the HTML/Markdown site pages.

[OpenAPI](https://www.closerchauffeur.com/openapi.json) · [MCP / agents](https://www.closerchauffeur.com/for-agents) · [Contact for API keys](https://www.closerchauffeur.com/contact)
