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

# Update property list

> Rename a property list or replace its identifier set entirely

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

Updates a list's `name` and/or replaces its identifiers. There is no incremental add/remove — when you send `domains` or `identifiers`, the full set is replaced with what you submit. Updating an **include** list cascades to active media buys that reference it.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X PUT https://api.interchange.io/api/v2/buyer/advertisers/12345/property-lists/42 \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "identifiers": [
        { "type": "domain", "value": "example-times.com" },
        { "type": "ios_bundle", "value": "com.exampletimes.ExampleTimes" }
      ]
    }'
  ```

  ```json Rename only theme={null}
  {
    "name": "Q1 Campaign - UK Premium (revised)"
  }
  ```
</CodeGroup>

## Parameters

| Field          | Type      | Required | Notes                                                  |
| -------------- | --------- | -------- | ------------------------------------------------------ |
| `advertiserId` | string    | Yes      | Path. Owning advertiser                                |
| `listId`       | string    | Yes      | Path. The property list to update                      |
| `name`         | string    | No       | Updated name (1–255 chars)                             |
| `domains`      | string\[] | No       | Replacement domains shorthand. Up to 100,000           |
| `identifiers`  | object\[] | No       | Replacement typed `{ type, value }` set. Up to 100,000 |

Send at least one field. Providing `domains` and/or `identifiers` replaces the entire identifier set; pass the full union you want stored.

## Response

```json theme={null}
{
  "propertyList": {
    "listId": "42",
    "name": "Q1 Campaign - UK Premium",
    "purpose": "include",
    "identifiers": [
      { "type": "domain", "value": "example-times.com" },
      { "type": "ios_bundle", "value": "com.exampletimes.ExampleTimes" }
    ],
    "unresolvedIdentifiers": [],
    "registeredIdentifiers": [],
    "domains": ["example-times.com"],
    "propertyCount": 12,
    "resolutionSummary": {
      "totalRequested": 2,
      "resolvedCount": 2,
      "registeredCount": 0,
      "unresolvedCount": 0,
      "resolutionRate": 1
    },
    "cascadeSummary": {
      "totalMediaBuys": 4,
      "updatedCount": 3,
      "failedCount": 1
    },
    "updatedAt": "2026-01-20T14:45:00.000Z"
  }
}
```

`resolutionSummary` and `cascadeSummary` appear only when identifiers change — a name-only update returns neither. The cascade is best-effort: failures are logged for retry and do not roll back the update.

## Errors

* `400 VALIDATION_ERROR` — no fields supplied, or combined identifier total above 100,000.
* `404 NOT_FOUND` — `listId` or `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">
    Cascade behavior and resolution concepts
  </Card>

  <Card title="Get property list" href="/v2/buyer/property-lists/tasks/get-property-list" icon="magnifying-glass">
    Full resolved resource for one list
  </Card>

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