Skip to content

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

Text
https://api.tailend.dev

Every 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
curl -H "X-API-Key: $TAILEND_API_KEY" https://api.tailend.dev/v1/metros

A 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:

JSON
{ "error": { "code": "not_found", "message": "unknown metro 'boston'", "request_id": "req_7431b51e10ec2b77" } }
StatusMeans
200Success
304Not modified, when you send If-None-Match (Caching)
400The request is invalid; details names the parameter
401Missing, invalid or revoked key
403Your key is not entitled to this metro, type, add-on or feature
404Unknown metro, id or slug
405Not a GET
429Rate limit or monthly quota reached; read error.code and Retry-After
500Our error; retry once, then report the request_id
501Not available on this deployment; do not retry
503Temporarily 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 metros

Unified discovery across listing collections.

GET/v1/{metro}/searchSearch every listing collection

Events

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 events

Classes

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 classes

Camps

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 camps

Places

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 places

Organizations

The organization behind a listing.

GET/v1/organizations/{id}Retrieve an organization

Directory

Who publishes in a metro and where — organizations and neighborhoods with live counts.

GET/v1/{metro}/organizationsList organizationsGET/v1/{metro}/neighborhoodsList neighborhoods

Search around an address: one response with grouped, ranked results and an activity summary.

GET/v1/{metro}/aroundSearch around an address

Activity

How lively a point is, computed from the listings near it.

GET/v1/{metro}/activityRetrieve area activityGET/v1/{metro}/nearbyList nearby listings

Coverage

How much, how fresh, and how clean a metro's data is.

GET/v1/{metro}/coverageRetrieve metro coverage

Changes

Versions feed for incremental sync.

GET/v1/listings/{id}/versionsList listing versionsGET/v1/changesList changes