---
title: "Add a place, and switch to it"
method: POST
path: "/equipment/places"
tags: ["Places"]
---

# Add a place, and switch to it

`POST /equipment/places`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/equipment/places`
- Auth: HTTP bearer

The athlete is saying where they are now, so the new place becomes the active one — both surfaces that create a place are reached at the moment it is needed. The first place an athlete ever creates is also home. Names are unique per athlete (NAME_TAKEN, 409).

## Headers

- `X-Client-Platform` string
- `X-Client-Version` string

## Request body

- object
  - `name` string, nullable, required: What to call it. Null only with justForToday: a one-off is never named.
  - `items` object, required: What is there. An empty object means nothing is, which is a real answer and is stored as one.
  - `justForToday` boolean: True for somewhere the athlete will not go again: it becomes active for today and reverts to home tomorrow, and it is never listed. Creating another replaces it, so retrying is safe. False (the default) creates a place that is listed and holds until the athlete switches.

## Response `201`

OK

- object
  - `id` string, required: Opaque identifier.
  - `name` string, nullable, required: What the athlete called it. Null for the unnamed one-off in force today (see justForToday): it has no name because it is never listed and never chosen again.
  - `items` object, required: What is at this place, each item mapping to the heaviest single implement of it in kilograms, or null for "enough" (a rack needs no number). Absent keys are not there. An empty object is a real place — a hotel room with nothing in it — and not a place with no answer.
  - `isHome` boolean, required: The place everything reverts to: exactly one of the athlete's places is home. It can't be deleted while another place exists — make another one home first.
  - `isActive` boolean, required: True for the one place every prescription is currently written from. Exactly one place is active, and it stays active until the athlete switches.
  - `forDate` string, date, nullable, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
  - `createdAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
  - `updatedAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.

## Other responses

- `401`: Error: UNAUTHORIZED.
- `409`: Error: NAME_TAKEN.

---

[API](https://skmtc.dev/bodylab/apis/body-lab-api.md) · [All operations](https://skmtc.dev/bodylab/apis/body-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bodylab/apis/body-lab-api/revisions/544c201eaf88?raw)
