API Reference
API reference
Every endpoint, parameter, field and status code, generated from the OpenAPI spec.
Each endpoint page below is generated from the OpenAPI spec, so it always matches what the API does. Every page shows the parameters, the response fields, an example request and a sample body for each status code, and a Try it panel: try any request with sample data, no key needed, or paste a key to run it live.
Base URL
https://api.tailend.devEvery endpoint is a GET under /v1. The API is read-only.
Authentication
Send your API key in the X-API-Key header on every request.
curl -H "X-API-Key: $TAILEND_API_KEY" https://api.tailend.dev/v1/metrosA missing or revoked key returns 401; a key without access to a metro, type or add-on returns 403. See Authentication.
Responses
Lists return { "data": [...], "meta": {...} }; single reads return { "data": {...} }. Failures return one error envelope:
{ "error": { "code": "not_found", "message": "unknown metro 'boston'", "request_id": "req_7431b51e10ec2b77" } }| Status | Means |
|---|---|
200 | Success |
304 | Not modified, when you send If-None-Match (Caching) |
400 | The request is invalid; details names the parameter |
401 | Missing, invalid or revoked key |
403 | Your key is not entitled to this metro, type, add-on or feature |
404 | Unknown metro, id or slug |
405 | Not a GET |
429 | Rate limit or monthly quota reached; read error.code and Retry-After |
500 | Our error; retry once, then report the request_id |
501 | Not available on this deployment; do not retry |
503 | Temporarily unavailable; retry after Retry-After |
Branch on error.code, not on the status. The full list is in Errors.
Endpoints
Metros
Cities the product serves.
GET/v1/metrosList metrosSearch
Unified discovery across listing collections.
GET/v1/{metro}/searchSearch every listing collectionEvents
Single occurrences with a local start (and optional end) time.
GET/v1/{metro}/eventsList eventsGET/v1/{metro}/events/calendarEvent counts per dayGET/v1/events/{id}Retrieve an eventGET/v1/events/slug/{slug}Retrieve an event by slugGET/v1/places/{id}/eventsList place eventsGET/v1/organizations/{id}/eventsList organization eventsClasses
Enrollable programs with a term, a weekly schedule and tuition.
GET/v1/{metro}/classesList classesGET/v1/classes/{id}Retrieve a classGET/v1/classes/slug/{slug}Retrieve a class by slugGET/v1/places/{id}/classesList place classesGET/v1/organizations/{id}/classesList organization classesCamps
Camps and their sessions (dated, priced blocks).
GET/v1/{metro}/campsList campsGET/v1/camps/{id}Retrieve a campGET/v1/camps/slug/{slug}Retrieve a camp by slugGET/v1/places/{id}/campsList place campsGET/v1/organizations/{id}/campsList organization campsPlaces
Places, with hours, admission, birthday and class facts.
GET/v1/{metro}/placesList placesGET/v1/places/{id}Retrieve a placeGET/v1/places/slug/{slug}Retrieve a place by slugGET/v1/organizations/{id}/placesList organization placesOrganizations
The organization behind a listing.
GET/v1/organizations/{id}Retrieve an organizationDirectory
Who publishes in a metro and where — organizations and neighborhoods with live counts.
GET/v1/{metro}/organizationsList organizationsGET/v1/{metro}/neighborhoodsList neighborhoodsAddress search
Search around an address: one response with grouped, ranked results and an activity summary.
GET/v1/{metro}/aroundSearch around an addressActivity
How lively a point is, computed from the listings near it.
GET/v1/{metro}/activityRetrieve area activityGET/v1/{metro}/nearbyList nearby listingsCoverage
How much, how fresh, and how clean a metro's data is.
GET/v1/{metro}/coverageRetrieve metro coverageChanges
Versions feed for incremental sync.
GET/v1/listings/{id}/versionsList listing versionsGET/v1/changesList changes