---
title: "Update Place List"
method: POST
path: "/place_lists/{place_list_id}"
tags: ["Place Lists"]
---

# Update Place List

`POST /place_lists/{place_list_id}`

## Request

- Base URL: `https://api.mediamath.com/api/v3.0`
- URL: `https://api.mediamath.com/api/v3.0/place_lists/{place_list_id}`
- Auth: OAuth 2
  - Authorization code: `https://auth.mediamath.com/authorize`
  - Token URL: `https://auth.mediamath.com/oauth/token` scopes: `offline_access`, `manage:services`
- TypeScript: <https://skmtc.dev/mediamath/apis/campaigns-api/docs/place_lists/:place_list_id/post.ts> (a function with typed inputs; its response is checked against the schema)

Update a place list by ID.

List-level fields (`name`, `description`) are partially updated. If
`places[]` is present, it is treated as the desired full set: omitted
places are deleted, matching places are updated in place, and new places
are inserted. An empty `places[]` clears the list.
`sensitive_location_attestation` may be omitted for metadata-only
updates and for no-op `places[]` resubmissions. If the submitted
`places[]` content changes geographic Place content by adding a place,
removing a place, or changing an existing place's `latitude`,
`longitude`, or `radius_meters`, the API requires
`sensitive_location_attestation: true`; otherwise, the request is
rejected. Matched-place `name` and `external_id` edits are metadata
edits that persist without requiring or recording attestation. `version`
is optional and enables optimistic locking when present.

When changing Place List locations through the API, accepting
`sensitive_location_attestation: true` confirms the following
attestation on behalf of the API user for this request:

```text
I represent and warrant that these locations are not being used to
target or identify individuals at sensitive locations, and that I have
the rights and consents necessary for this targeting, including consent
to share with third parties where required.
```

For guidance on what qualifies as a sensitive location, see
[Places attestation guidelines](https://support.infillion.com/s/article/Places).

Geographic-content-changing requests submitted without
`sensitive_location_attestation`, or with it set to any value other than
`true`, are rejected with a `400` `invalid-request` error on
`/sensitive_location_attestation`. Metadata-only matched-place edits
and no-op resubmissions of unchanged Place content do not require or
record a new attestation. This is a per-request acknowledgment for
actual geographic content changes, not a one-time account-level setting.

The attestation language may be updated over time.

## Path parameters

- `place_list_id` integer, required

## Request body

- PlaceListUpdate
  - `version` integer: Optional optimistic-lock version. When present, it must match the current Place List version.
  - `name` string
  - `description` string, nullable
  - `sensitive_location_attestation` boolean: Optional for metadata-only updates and no-op content resubmissions. If submitted `places` content changes geographic Place content by adding a place, removing a place, or changing an existing place's `latitude`, `longitude`, or `radius_meters`, this field must be `true`. Matched-place `name` and `external_id` edits do not require or record attestation.
  - `places` PlaceCreate[]: Desired full set of circle places. When present, omitted existing places are deleted, matching places are updated in place to preserve stable child place IDs, and new places are inserted. An empty array clears all places from the list. Within one place list, nonblank external_id values must be unique and circle geometry (latitude, longitude, radius_meters) must be unique after coordinate truncation to four decimal places.
    - `name` string, nullable
    - `external_id` string, nullable
    - `latitude` number, required: JSON number using standard JSON syntax; do not include leading zeroes (use `40.7589`, not `040.7589`).
    - `longitude` number, required: JSON number using standard JSON syntax; do not include leading zeroes (use `-73.9851`, not `-073.9851`).
    - `radius_meters` integer, required

## Response `200`

Place list response

- object
  - `data` PlaceListFull
    - `id` integer
    - `entity_type` string
    - `version` integer
    - `organization_id` integer
    - `name` string
    - `description` string, nullable
    - `filename` string, nullable
    - `content_updated_on` string, date-time, nullable
    - `places_count` integer
    - `strategy_count` integer: Number of strategies currently assigned to this Place List through PLCS geofence targeting.
    - `created_on` string, date-time
    - `updated_on` string, date-time
    - `places` Place[]: Nested places — returned on create/update and single GET responses
      - `id` integer
      - `name` string, nullable
      - `external_id` string, nullable
      - `geometry_type` 'circle': Returned by the API and must not be supplied by users
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `radius_meters` integer, nullable
  - `meta` SingleMetadata
    - `status` string, required

## Other responses

- `400`: Error response
- `401`: Error response
- `403`: Error response
- `404`: Error response
- `409`: Error response

---

[API](https://skmtc.dev/mediamath/apis/campaigns-api.md) - [All operations](https://skmtc.dev/mediamath/apis/campaigns-api/llms.txt) - [OpenAPI document](https://skmtc.dev/mediamath/apis/campaigns-api/revisions/408743891def?raw)
