# Retrieve a place

> A place by id.

Source: https://api.tailend.dev/docs/api/get-place

```http
GET https://api.tailend.dev/v1/places/{id}
X-API-Key: $TAILEND_API_KEY
```

A place by id. Published and active by default; archived rows answer
`404` unless `include_archived=true`, and drafts never appear. The
response carries `status`.

Authorization: send your key in the `X-API-Key` header. Available on every plan.

## Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string (uuid) | yes | Listing id. |

## Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `include_archived` | boolean | no | Also serve a listing whose status is archived — a permalink that should still render, with a "this has passed" banner, rather than 404. |
| `fields` | array of string | no | 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. |
| `expand` | array of string | no | Attach the full Place and/or the Organization behind each item under expanded, one extra read per expansion per page (not per row). |
| `include` | array of string | no | Opt into a block the lean default response leaves out. |
| `include_mode` | string | no | How an include= the key is not entitled to is handled. |

## Example request

```bash
curl -sS \
  -H "X-API-Key: $TAILEND_API_KEY" \
  "https://api.tailend.dev/v1/places/1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e"
```

## Responses

### 200

The place

```json
{
  "data": {
    "id": "1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e",
    "type": "place",
    "slug": "philly-art-center-queen-village",
    "name": "Philly Art Center - Queen Village",
    "description": "Philly Art Center's Queen Village studio offers classes, camps, and after-school programs for kids from infancy through tweens, plus adult classes in drawing, painting, printmaking, fibers, and clay. Programs include Creative Playgroup + Story Time (drop-in for 0-30 months), adult+child music and art classes, drop-off kids art classes (ages 2+), tween classes, summer camps (ages 4-13), vacation camps (ages 5-12), and after-school art with free school pick-up. Process over product philosophy — all materials included.",
    "type_hint": "other",
    "type_hint_notes": "Art studio / creative learning center",
    "location": {
      "address": "514 Bainbridge St, Philadelphia, PA 19147, USA",
      "street_address": "514 Bainbridge St, Philadelphia, PA 19147, USA",
      "city": "Philadelphia",
      "state": "PA",
      "zip": "19147",
      "lat": 39.9408481,
      "lng": -75.1516337,
      "neighborhood": "Queen Village",
      "neighborhood_slug": "queen-village"
    },
    "hours": {
      "monday": "Closed",
      "tuesday": "Class hours vary",
      "wednesday": "Class hours vary",
      "thursday": "Class hours vary",
      "friday": "Class hours vary",
      "saturday": "Class hours vary",
      "sunday": "Closed",
      "notes": "Hours vary by class schedule. Check phillyartcenter.captyn.com for current session times.",
      "exceptions": null
    },
    "admission": {
      "type": "paid",
      "child_price": null,
      "adult_price": null,
      "infant_age_cutoff": null,
      "notes": "Varies by program. Tuition assistance available. 10% household discount.",
      "currency": "USD"
    },
    "membership": {
      "available": false,
      "price_monthly": null,
      "price_annual": null,
      "notes": null,
      "currency": "USD"
    },
    "birthday_parties": {
      "available": false,
      "min_guests": null,
      "max_guests": null,
      "age_range": null,
      "booking_url": null,
      "notes": null
    },
    "classes": {
      "available": true,
      "types": [
        "art",
        "music",
        "playgroup",
        "after school art"
      ],
      "age_range": "0-12 years",
      "schedule_notes": "Fall Registration is LIVE!",
      "registration_url": "https://phillyartcenter.com/kids-classes/"
    },
    "amenities": {
      "has_outdoor_space": false,
      "has_parking": false,
      "parking_notes": "Street parking on Bainbridge St and surrounding blocks.",
      "has_wifi": false,
      "socks_required": false,
      "outside_food_allowed": true,
      "stroller_policy": null
    },
    "ages": {
      "min": 0,
      "max": 17,
      "text": "Playgroup: 0-30 months. Adult+child classes: 3-36 months. Kids classes: ages 2+. Tween classes available. Summer camps: 4-13. Vacation camps: 5-12.",
      "audience": null,
      "bands": [
        "baby",
        "toddler",
        "young_kids",
        "bigger_kids"
      ]
    },
    "audience": "teens",
    "categories": [
      "arts_creative"
    ],
    "image_url": "https://a.mpcdn.io/pac/2023/04/pac-social-share.jpg?auto=compress%2Cformat&ixlib=php-3.3.1",
    "images": [
      "https://mpcdn.imgix.net/pac/26/04/web-banner_fnl-copy-2.png?auto=compress%2Cformat&ixlib=php-3.3.1",
      "https://mpcdn.imgix.net/pac/26/07/fall-classes_final-1.png?auto=compress%2Cformat&ixlib=php-3.3.1",
      "https://a.mpcdn.io/pac/2023/03/testimonial-bg.jpg?auto=compress%2Cformat&ixlib=php-3.3.1"
    ],
    "website_url": "https://phillyartcenter.com/",
    "organization": {
      "id": null,
      "name": null,
      "slug": null
    },
    "confidence": 0.7,
    "verified_at": null,
    "metro": "philadelphia",
    "status": "published",
    "created_at": "2026-02-18T19:16:17.504Z",
    "updated_at": "2026-09-21T18:07:17.391Z",
    "links": {
      "self": "/v1/places/1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e",
      "events": "/v1/places/1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e/events",
      "classes": "/v1/places/1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e/classes",
      "camps": "/v1/places/1aed87ca-ab4f-4fc0-baaa-8c6ebeefa10e/camps"
    }
  }
}
```

### 400

Malformed or contradictory parameters (lat without lng, to before from, unknown category), or a cursor this API did not issue for this exact request — replayed from another endpoint, resource, metro or filter set, hand-crafted, or altered.

```json
{
  "error": {
    "code": "bad_request",
    "message": "radius_m: must be at least 100",
    "details": {
      "param": "radius_m"
    },
    "request_id": "req_dfbc3295a8382b05"
  }
}
```

### 401

Missing, unknown or revoked X-API-Key.

```json
{
  "error": {
    "code": "unauthorized",
    "message": "missing X-API-Key header",
    "request_id": "req_90e63908273f6bff"
  }
}
```

### 403

Two different reasons share this status.

```json
{
  "error": {
    "code": "forbidden",
    "message": "key is not scoped to metro 'boston'",
    "details": {
      "metros": [
        "philadelphia"
      ]
    },
    "request_id": "req_9e7a750acef48ab2"
  }
}
```

### 404

No published, active resource with that id (or unknown metro).

```json
{
  "error": {
    "code": "not_found",
    "message": "unknown metro 'boston'",
    "request_id": "req_7431b51e10ec2b77"
  }
}
```

### 405

The path exists; the method does not.

```json
{
  "error": {
    "code": "method_not_allowed",
    "message": "POST is not allowed on this path; this API is read-only",
    "details": {
      "allow": [
        "GET",
        "HEAD",
        "OPTIONS"
      ]
    },
    "request_id": "req_01J9Z3"
  }
}
```

### 429

A limit was reached.

```json
{
  "error": {
    "code": "rate_limited",
    "message": "3 requests per minute exceeded",
    "request_id": "req_06bfd3c2d5e8aa9f"
  }
}
```

### 500

A bug on our side.

```json
{
  "error": {
    "code": "internal",
    "message": "internal error",
    "request_id": "req_01J9Z3"
  }
}
```

### 501

This endpoint or feature is not available and will not become available without a configuration change — for ?address=, this means no geocoder is configured.

```json
{
  "error": {
    "code": "not_implemented",
    "message": "this endpoint is not enabled on this deployment; it is not a fault and retrying will not help",
    "request_id": "req_01J9Z3"
  }
}
```

### 503

A transient outage: a dependency could not be reached or did not answer in time.

```json
{
  "error": {
    "code": "unavailable",
    "message": "the service is temporarily unable to serve this request; retry after the interval in Retry-After",
    "request_id": "req_01J9Z3"
  }
}
```
