# Locations API – Tiempo

> A place resources work at, with its own timezone. Locations can be closed with blocks.

Source: https://tiempo.one/docs/locations

A place resources work at, with its own timezone. Locations can be closed with blocks.

## Create a location

`POST /v1/locations`

Send the business’s id in `Tiempo-Account`.

### Body parameters

-   `name` (string, required)
    
    Shown in your dashboard; not to customers.
    
-   `timezone` (string)
    
    IANA name, for example Europe/London.
    
-   `metadata` (map)
    
    Up to 50 keys of your own (strings, keys up to 40 characters, values up to 500). Returned on every read and webhook. On update, an empty string removes a key.
    

POST /v1/locations

```bash
curl -X POST "https://api.tiempo.one/v1/locations" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Soho",
    "timezone": "Europe/London"
  }'
```

200Response

```json
{
  "id": "loc_01m42ytbzgnn27ckn9fsqmsbze",
  "object": "location",
  "livemode": false,
  "name": "Soho",
  "timezone": "Europe/London",
  "metadata": {},
  "created_at": "2026-10-04T07:58:12Z"
}
```

## List locations

`GET /v1/locations`

Send the business’s id in `Tiempo-Account`.

### Query parameters

-   `limit` (integer)
    
    1 to 100. Defaults to 20.
    
-   `starting_after` (string)
    
    An object id from the previous page; returns the page after it.
    
-   `ending_before` (string)
    
    An object id; returns the page before it.
    
-   `metadata[key]` (string)
    
    Only objects whose metadata has this key and value. Repeat for several.
    

GET /v1/locations

```bash
curl "https://api.tiempo.one/v1/locations" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "object": "list",
  "data": [
    {
      "id": "loc_01m42ytbzgnn27ckn9fsqmsbze",
      "object": "location",
      "livemode": false,
      "name": "Soho",
      "timezone": "Europe/London",
      "metadata": {},
      "created_at": "2026-10-04T07:58:12Z"
    }
  ],
  "has_more": false
}
```

## Retrieve a location

`GET /v1/locations/{id}`

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

GET /v1/locations/{id}

```bash
curl "https://api.tiempo.one/v1/locations/loc_01m42ytbzgnn27ckn9fsqmsbze" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "id": "loc_01m42ytbzgnn27ckn9fsqmsbze",
  "object": "location",
  "livemode": false,
  "name": "Soho",
  "timezone": "Europe/London",
  "metadata": {},
  "created_at": "2026-10-04T07:58:12Z"
}
```

## Update a location

`POST /v1/locations/{id}`

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

### Body parameters

-   `name` (string)
    
    Shown in your dashboard; not to customers.
    
-   `timezone` (string)
    
    IANA name, for example Europe/London.
    
-   `metadata` (map)
    
    Up to 50 keys of your own (strings, keys up to 40 characters, values up to 500). Returned on every read and webhook. On update, an empty string removes a key.
    

POST /v1/locations/{id}

```bash
curl -X POST "https://api.tiempo.one/v1/locations/loc_01m42ytbzgnn27ckn9fsqmsbze" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Soho (Dean Street)"
  }'
```

200Response

```json
{
  "id": "loc_01m42ytbzgnn27ckn9fsqmsbze",
  "object": "location",
  "livemode": false,
  "name": "Soho",
  "timezone": "Europe/London",
  "metadata": {},
  "created_at": "2026-10-04T07:58:12Z"
}
```

## Delete a location

`DELETE /v1/locations/{id}`

Only a location nothing refers to can be deleted; otherwise 409.

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

DELETE /v1/locations/{id}

```bash
curl -X DELETE "https://api.tiempo.one/v1/locations/loc_01m42ytbzgnn27ckn9fsqmsbze" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "id": "…",
  "object": "…",
  "deleted": true
}
```

The machine-readable description is at [/openapi.json](https://tiempo.one/openapi.json). Try calls in [Swagger UI](https://tiempo.one/swagger-ui.html).[Tiempo home](https://tiempo.one/)[Dashboard](https://tiempo.one/app)
