---
type: api
title: Update a private location
description: **Spaces method and path for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana-serverless/operation/operation-put-private-location
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana-serverless/operation/operation-put-private-location
products:
  - Kibana
---

# Update a private location

- Server: `https://{kibana_url}`

## Paths

- `PUT` `/api/synthetics/private_locations/{id}`
- `PUT` `/s/{space_id}/api/synthetics/private_locations/{id}`

#### Path parameters

- `id` (string · min length: 1 · max length: 1024) — required
  The unique identifier of the private location to update.

## Description

Refer to [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces) for more information.

Update an existing private location's label, tags, or agent policy.

You must have `all` privileges for the Synthetics and Uptime feature in the Observability section of the Kibana feature privileges.

When a private location's label is updated, all monitors using this location are also updated to maintain data consistency.

When a private location's agent policy is changed, the package policies of all monitors using this location are deleted and recreated on the new agent policy. Monitors stop running on the previous agents until agents on the new policy pick them up. The new agent policy must be available in all spaces of the private location and must not be used by another private location.

## Required authorization

- Privileges: `uptime-read` and `private-location-write` and `uptime-write`

## Authentication

- Api key: `Authorization: <value>`
  You must create an API key and use the encoded value in the request header. To learn about creating keys, go to [API keys](https://www.elastic.co/docs/current/serverless/api-keys).

## Header parameters

- `kbn-xsrf` (string) — required
  A required header to protect against CSRF attacks

## Request body

`application/json`

- `agentPolicyId` (string · min length: 1 · max length: 1024) — optional
  The ID of the Fleet agent policy to move the private location to.
- `label` (string · min length: 1 · max length: 1024) — optional
  A new label for the private location. Monitors using this location are updated to match.
- `tags` (string[] · max items: 100) — optional
  An array of tags to categorize the private location.

## Responses

#### `200`

A successful response.

`application/json`

- `agentPolicyId` (string)
  The ID of the agent policy associated with the private location.
- `geo` (object)
  Geographic coordinates (WGS84) for the location.
  - `lat` (number)
    The latitude of the location.
  - `lon` (number)
    The longitude of the location.
- `id` (string)
  The unique identifier of the private location.
- `isInvalid` (boolean)
  Indicates whether the location is invalid. If `true`, the location is invalid, which means the agent policy associated with the location is deleted.
- `label` (string)
  A label for the private location.
- `namespace` (string)
  The namespace of the location, which is the same as the namespace of the agent policy associated with the location.
- `spaces` (string[])
  The space IDs where the private location is available.
- `tags` (string[])
  An array of tags to categorize the private location.
#### `400`

If the `label` is shorter than 1 character, or the `agentPolicyId` is not available in the current space, does not cover all spaces of the private location, or is already used by another private location, the API returns a 400 Bad Request response with a corresponding error message.

#### `404`

If the private location with the specified ID does not exist, the API returns a 404 Not Found response.

## Code examples

#### Console

```console
PUT kbn://api/synthetics/private_locations/location-id
{"label":"Updated Private Location Name"}
```

#### curl

```curl
curl \
  -X PUT "${KIBANA_URL}/api/synthetics/private_locations/location-id" \
  -H "Authorization: ApiKey ${API_KEY}" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{"label":"Updated Private Location Name"}'
```

## Response examples

#### Put private location response example1

```json
{
  "agentPolicyId": "test-private-location-id",
  "geo": {
    "lat": 37.7749,
    "lon": -122.4194
  },
  "id": "test-private-location-id",
  "isInvalid": false,
  "isServiceManaged": false,
  "label": "Updated Private Location Name",
  "spaces": [
    "*"
  ],
  "tags": [
    "private",
    "testing",
    "updated"
  ]
}
```

