Skip to main content
PUT /api/v2/storefront/signals/{signalId} Updates a signal’s details and access records. You can change name, description, countries, and isLive, and add, update, or archive access records. signalId, keyType, and metadata cannot change after creation.
Immutable fields are ignored, not rejected. This endpoint accepts a closed set of fields. Send keyType or metadata and they are dropped before the write — the response is still 200 with the unchanged stored values, so a request that tried to change them looks like it succeeded. Send signalId in the body and it is overwritten by the id in the path, so it can never rename the signal or redirect the write to another one; the safest thing to send is the same id you addressed, or nothing.Read the response back and compare, rather than assuming a 200 means every field you sent was applied. To change a fixed field, archive the signal and register a replacement.
The in-chat signal tool guards this for you: it reads the stored signal first, lets an unchanged round-trip echo of the fixed fields through, and refuses a request that would actually change one — rather than reporting a save the API did not make.

Request

Parameters

Response

Errors

  • 400 VALIDATION_ERROR — a malformed signalId (it must match ^[\w\-:.]+$ and be 1–255 characters), a field that breaks a length or enum constraint, a countries entry that is not an assigned ISO 3166-1 alpha-2 code, a price that is not an AdCP VendorPricingOption, or a body carrying no updatable field at all.
  • 404 NOT_FOUND — no signal with that signalId is visible to the authenticated account.
These are not validation errors. Sending keyType or metadata does not fail — the fields are dropped before the write and the response is 200 with the unchanged stored values. A body signalId that differs from the path is not rejected either; it is overwritten by the path value. Both cases look like a successful update, which is why the Warning above tells you to read the response back and compare rather than trusting the status code.
See Errors for the full error contract.

Signal tasks

All signal operations

Get signal

One signal with access records

Delete signal

Archive a signal

Signal overview

Fields, lifecycle, and concepts