# @lilith/provider-api-client Type-safe HTTP client for the provider API public surface. ## Base URL resolution 1. `import.meta.env.VITE_QUINN_API_BASE_URL` (Vite env override) 2. `localhost` / `127.0.0.1` → `http://localhost:3040` 3. Otherwise → `https://api.quinn.apricot.lan` ## Exports ### Types `BlogPostSummary`, `BlogPost`, `ContactChannel`, `ContactPayload`, `ContactResult`, `TouringPayload`, `TouringResult`, `TrackAvailability`, `RosterApplicationPayload`, `RosterApplicationResult`, `AnalyticsEventPayload` ### Error classes `ApiError`, `NotFoundError`, `RateLimitError`, `ValidationError`, `NetworkError` ### Endpoints | Function | Method | Path | |---|---|---| | `fetchBlogPosts()` | GET | `/www/blog` | | `fetchBlogPost(slug)` | GET | `/www/blog/:slug` | | `submitContact(payload)` | POST | `/public/contact` | | `subscribeToTouring(payload)` | POST | `/public/touring/subscribe` | | `fetchAvailability()` | GET | `/public/roster/availability` | | `fetchAvailabilityBySlug(slug)` | GET | `/public/roster/availability/:slug` | | `submitRosterApplication(payload)` | POST | `/public/roster/apply` | | `trackEvent(path, payload)` | POST | `/public/analytics/track/*` (fire-and-forget) | ### Low-level `apiFetch(url, init?)` — typed fetch with automatic error mapping `resolveBaseUrl()` — base URL resolution