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

# Upload Updated Place List

`POST /place_lists/{place_list_id}/upload`

## Request

- Base URL: `https://api.mediamath.com/api/v3.0`
- URL: `https://api.mediamath.com/api/v3.0/place_lists/{place_list_id}/upload`
- 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/upload/post.ts> (a function with typed inputs; its response is checked against the schema)

Update a place list from a CSV file.

If `file` is present, the CSV is treated as the desired full set of
places: omitted places are deleted, matching places are updated in place,
and new places are inserted. Metadata fields are optional. The upload is
atomic: if any row is invalid, the API returns `400` with validation
errors and no changes are persisted. If the uploaded CSV changes
geographic Place content by adding a place, removing a place, or
changing an existing place's `latitude`, `longitude`, or
`radius_meters`, `sensitive_location_attestation` is required and must
be `"true"`. Matched-place `name` and `external_id` edits are metadata
edits that persist without requiring or recording attestation. A no-op
CSV resubmission of unchanged Place content does not require or record a
new attestation. The CSV header must be exactly
`name,latitude,longitude,radius_meters,external_id`.

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 uploads 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 `multipart/form-data`

- object
  - `file` string, binary: CSV file with header `name,latitude,longitude,radius_meters,external_id`.
  - `name` string: Optional updated place list name.
  - `description` string: Optional updated place list description.
  - `version` string: Optional optimistic-lock version. It is a string because this is a form upload.
  - `sensitive_location_attestation` string: Optional for metadata-only updates and no-op CSV resubmissions. If the uploaded CSV 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.

## 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)
