> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create property list

> Create an include or exclude list of typed properties for an advertiser

`POST /api/v2/buyer/advertisers/{advertiserId}/property-lists`

Creates a named property list scoped to an advertiser. Submit website domains via the `domains` shorthand, mixed web/mobile/CTV identifiers via `identifiers`, or both. Identifiers are resolved against the AAO registry and local catalog; the response carries a `resolutionSummary` showing how many will actually target.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.interchange.io/api/v2/buyer/advertisers/12345/property-lists \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Q1 Campaign - UK Premium",
      "purpose": "include",
      "domains": ["example-times.com", "example-press.co.uk", "example-news.com"],
      "filters": { "channels_any": ["display", "olv"] }
    }'
  ```

  ```json Mixed web + mobile + CTV theme={null}
  {
    "name": "Cross-screen premium",
    "purpose": "include",
    "identifiers": [
      { "type": "domain", "value": "example-times.com" },
      { "type": "ios_bundle", "value": "com.exampletimes.ExampleTimes" },
      { "type": "android_package", "value": "com.exampletimes.android" },
      { "type": "roku_store_id", "value": "12" }
    ]
  }
  ```
</CodeGroup>

## Parameters

| Field          | Type      | Required | Notes                                                                                                                                                                                                                                  |
| -------------- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `advertiserId` | string    | Yes      | Path. Owning advertiser                                                                                                                                                                                                                |
| `name`         | string    | Yes      | List name (1–255 chars)                                                                                                                                                                                                                |
| `purpose`      | enum      | Yes      | `include` (only buy these) or `exclude` (never buy these)                                                                                                                                                                              |
| `domains`      | string\[] | No       | Shorthand for `identifiers` of `type: "domain"`. Up to 100,000                                                                                                                                                                         |
| `identifiers`  | object\[] | No       | Typed `{ type, value }`. `type` is `domain`, `subdomain`, `ios_bundle`, `android_package`, `apple_app_store_id`, `google_play_id`, `roku_store_id`, `fire_tv_asin`, `samsung_app_id`, `apple_tv_bundle`, or `bundle_id`. Up to 100,000 |
| `filters`      | object    | No       | `channels_any` restricts which targeting profiles the list links to. Channels include `display`, `olv`, `social`, `ctv`, `dooh`, and more                                                                                              |

Provide `domains`, `identifiers`, or both — the combined total must be 1–100,000. They are concatenated and deduplicated.

## Response

```json theme={null}
{
  "propertyList": {
    "listId": "42",
    "name": "Cross-screen premium",
    "purpose": "include",
    "identifiers": [
      { "type": "domain", "value": "example-times.com" },
      { "type": "ios_bundle", "value": "com.exampletimes.ExampleTimes" },
      { "type": "android_package", "value": "com.exampletimes.android" }
    ],
    "unresolvedIdentifiers": [{ "type": "roku_store_id", "value": "12" }],
    "registeredIdentifiers": [],
    "domains": ["example-times.com"],
    "unresolvedDomains": [],
    "registeredDomains": [],
    "propertyCount": 14,
    "resolutionSummary": {
      "totalRequested": 4,
      "resolvedCount": 3,
      "registeredCount": 0,
      "unresolvedCount": 1,
      "resolutionRate": 0.75
    },
    "createdAt": "2026-01-15T10:30:00.000Z",
    "updatedAt": "2026-01-15T10:30:00.000Z"
  }
}
```

`identifiers` is the persisted resolved set. `unresolvedIdentifiers` and `registeredIdentifiers` are transient — they appear on create/update only, not on subsequent `GET`s. Always inspect `resolutionSummary`: a non-zero `unresolvedCount` means those identifiers will not target.

## Errors

* `400 VALIDATION_ERROR` — missing `name` or `purpose`, empty identifier set, or combined total above 100,000.
* `404 NOT_FOUND` — `advertiserId` does not exist or is not visible to the authenticated account.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Property list tasks" href="/v2/buyer/property-lists/tasks" icon="list-check">
    All property list operations
  </Card>

  <Card title="Property Lists guide" href="/v2/guides/property-lists" icon="list">
    Identifier types, resolution, and concepts
  </Card>

  <Card title="Check property list" href="/v2/buyer/property-lists/tasks/check-property-list" icon="circle-check">
    Validate a candidate set before creating
  </Card>

  <Card title="Update property list" href="/v2/buyer/property-lists/tasks/update-property-list" icon="pen">
    Replace identifiers on an existing list
  </Card>
</CardGroup>
