Skip to content
GET/v1/events/slug/{slug}all plans

Retrieve an event by slug

Returns the same event as /v1/events/{id}, addressed by slug instead of id.

slug is unique per (metro, type). If the key can see this slug in more than one metro, returns 400 with details.metros; pass metro= to disambiguate. include_archived=true returns an archived row.

Returns 503 when this endpoint is unavailable.

Try this requestRun it with sample data, no key needed. Paste a key to run it live.
Example request
curl -sS \
  -H "X-API-Key: $TAILEND_API_KEY" \
  "https://api.tailend.dev/v1/events/slug/toddler-time-ages-5-and-under-toddler-time-observer-e50d61ea"
Example response · 200
{
  "data": {
    "id": "b81a95d2-1d4e-46fd-9cff-322a41e429ad",
    "type": "event",
    "slug": "toddler-time-ages-5-and-under-toddler-time-observer-e50d61ea",
    "name": "Toddler Time (Ages 5 and Under) / Toddler Time Observer",
    "description": "Includes Treehouses and Free Play Areas for toddlers ages 5 and under.",
    "starts_local": "2026-09-14T09:30:00",
    "ends_local": null,
    "start_time": "09:30:00",
    "has_time": true,
    "has_date": true,
    "all_day": false,
    "timezone": "America/New_York",
    "starts_at": "2026-09-14T13:30:00.000Z",
    "ends_at": null,
    "is_recurring": true,
    "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
    "recurrence_description": null,
    "place": {
      "id": "9cde4494-6c2a-4bfc-b15a-22edce13f3f7",
      "slug": "treehouse-world-d34361f7",
      "name": "Treehouse World"
    },
    "location": {
      "address": "1442 Phoenixville Pike, West Chester, PA 19380, USA",
      "street_address": "1442 Phoenixville Pike, West Chester, PA 19380, USA",
      "city": "West Chester",
      "state": "PA",
      "zip": "19380",
      "lat": 40.0240296,
      "lng": -75.5858949,
      "neighborhood": "Newtown Square",
      "neighborhood_slug": "newtown-square"
    },
    "price": {
      "type": "fixed",
      "min": 12,
      "max": 12,
      "scope": "admission",
      "note": "$12.00",
      "unit": "per_session",
      "is_free": false,
      "currency": "USD"
    },
    "ages": {
      "min": 1,
      "max": 5,
      "text": null,
      "audience": "kids",
      "bands": [
        "baby",
        "toddler",
        "young_kids"
      ]
    },
    "audience": "kids",
    "traits": {
      "seasons": [
        "fall"
      ]
    },
    "categories": [
      "social_play_spaces"
    ],
    "occasions": [],
    "teams": [],
    "registration_url": "https://treehouseworld.com/pages/admission-prices",
    "ticket_url": null,
    "registration_required": false,
    "is_sold_out": false,
    "image_url": null,
    "organization": {
      "id": "c45b9b3a-45ab-4f9c-b2e2-986dcb921f25",
      "name": "Treehouse World",
      "slug": "treehouseworldcom-a86bfd79"
    },
    "confidence": 1,
    "verified_at": "2026-09-26T14:06:38.332Z",
    "metro": "philadelphia",
    "status": "published",
    "created_at": "2026-09-14T08:04:04.969Z",
    "updated_at": "2026-09-26T14:06:38.788Z",
    "links": {
      "self": "/v1/events/b81a95d2-1d4e-46fd-9cff-322a41e429ad",
      "place": "/v1/places/9cde4494-6c2a-4bfc-b15a-22edce13f3f7",
      "organization": "/v1/organizations/c45b9b3a-45ab-4f9c-b2e2-986dcb921f25"
    }
  }
}

Try any request with sample data, no key needed. Available on every plan.

Listing slug — the segment a consumer already has in its own URLs.

Optional parameters (6)

Which metro's row is meant, when a slug is not unique across the key's metros.

Also serve a listing whose status is archived — a permalink that should still render, with a "this has passed" banner, rather than 404.

Keep only these dotted paths on each item (name,place.name,price.is_free); id and type are always kept so a trimmed item stays addressable.

Attach the full Place and/or the Organization behind each item under expanded, one extra read per expansion per page (not per row).

Opt into a block the lean default response leaves out.

How an include= the key is not entitled to is handled.

Ctrl Enter to send