---
title: "Upload New Place List"
method: POST
path: "/place_lists/upload"
tags: ["Place Lists"]
---

# Upload New Place List

`POST /place_lists/upload`

## Request

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

Create a place list from a CSV file.

The CSV upload is atomic: if any row is invalid, the API returns `400`
with validation errors and no place list or places are created. The CSV
header must be exactly `name,latitude,longitude,radius_meters,external_id`.
`sensitive_location_attestation` is required and must be `"true"`.

Before uploading Place List locations through the API, API users must
accept the sensitive-location attestation. Accepting this field 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).

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`. This is a
per-request acknowledgment, not a one-time account-level setting.

The attestation language may be updated over time.

## Request body `multipart/form-data`

- object
  - `file` string, binary, required: CSV file with header `name,latitude,longitude,radius_meters,external_id`.
  - `organization_id` string, required: The ID of the owning organization. It is a string because this is a form upload.
  - `name` string, required: The name of the place list being uploaded.
  - `description` string: Optional place list description.
  - `sensitive_location_attestation` 'true', required: Required and must be `"true"` for Place List content writes.

## Response `201`

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

---

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