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

> Update signal metadata and manage access records

`PUT /api/v2/storefront/signals/{signalId}`

Updates a signal's metadata and access records. You can change `name`, `description`, and `isLive`, and add, update, or archive access records. `signalId`, `keyType`, and `regions` cannot change after creation.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X PUT https://api.interchange.io/api/v2/storefront/signals/acme_high_value_customers \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "signalId": "acme_high_value_customers",
      "description": "Top 5% LTV customers, refreshed weekly",
      "isLive": true
    }'
  ```

  ```json Add and archive access theme={null}
  {
    "signalId": "acme_high_value_customers",
    "addAccess": [
      {
        "advertiserId": 90517,
        "visibility": "PROPRIETARY",
        "price": {
          "pricing_option_id": "po_cpm_partner",
          "pricing_model": "cpm",
          "currency": "USD",
          "fixed_price": 3.0
        }
      }
    ],
    "archiveAccess": [9001]
  }
  ```
</CodeGroup>

## Parameters

| Field           | Type       | Required | Notes                                                                               |
| --------------- | ---------- | -------- | ----------------------------------------------------------------------------------- |
| `signalId`      | string     | Yes      | Signal identifier. Must match the path; **cannot be changed**                       |
| `name`          | string     | No       | New name (max 255)                                                                  |
| `description`   | string     | No       | New description (max 5000)                                                          |
| `isLive`        | boolean    | No       | Deploy or undeploy the signal                                                       |
| `addAccess`     | object\[]  | No       | New access records. Each requires `advertiserId` and `visibility`; optional `price` |
| `updateAccess`  | object\[]  | No       | Existing access records to modify                                                   |
| `archiveAccess` | integer\[] | No       | Access record `id`s to archive                                                      |

## Response

```json theme={null}
{
  "signal": {
    "id": 50213,
    "signalId": "acme_high_value_customers",
    "customerId": 1001,
    "adcpAgentId": null,
    "name": "Acme — High-Value Customers",
    "description": "Top 5% LTV customers, refreshed weekly",
    "keyType": ["rampid", "uid2"],
    "regions": ["NORAM", "EMEA"],
    "metadata": null,
    "isLive": true,
    "archivedAt": null,
    "createdBy": "agent@acme.example",
    "updatedBy": "agent@acme.example",
    "createdAt": "2026-06-06T12:00:00Z",
    "updatedAt": "2026-06-06T14:30:00Z"
  },
  "access": [
    {
      "id": 9002,
      "signalId": 50213,
      "advertiserId": 90517,
      "visibility": "PROPRIETARY",
      "price": {
        "pricing_option_id": "po_cpm_partner",
        "pricing_model": "cpm",
        "currency": "USD",
        "fixed_price": 3.0
      },
      "archivedAt": null,
      "createdAt": "2026-06-06T14:30:00Z",
      "updatedAt": "2026-06-06T14:30:00Z"
    }
  ]
}
```

## Errors

* `400 VALIDATION_ERROR` — attempting to change `keyType` or `regions`, or `signalId` does not match the path.
* `404 NOT_FOUND` — no signal with that `signalId` is visible to the authenticated account.

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

## Related

<CardGroup cols={2}>
  <Card title="Signal tasks" href="/v2/storefront/signals/tasks" icon="list-check">
    All signal operations
  </Card>

  <Card title="Get signal" href="/v2/storefront/signals/tasks/get-signal" icon="magnifying-glass">
    One signal with access records
  </Card>

  <Card title="Delete signal" href="/v2/storefront/signals/tasks/delete-signal" icon="trash">
    Archive a signal
  </Card>

  <Card title="Signal overview" href="/v2/object-guides/signal" icon="wave-pulse">
    Fields, lifecycle, and concepts
  </Card>
</CardGroup>
