Skip to main content
POST /api/v2/storefront/signals Registers a signal so it can be deployed and surfaced to buyers. You set the key types and regions at creation; keyType and regions are immutable afterward. Use access records to control visibility (PUBLIC or PROPRIETARY) and optional per-seat pricing.

Request

curl -X POST https://api.interchange.io/api/v2/storefront/signals \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signalId": "acme_high_value_customers",
    "name": "Acme — High-Value Customers",
    "description": "Top 10% LTV customers, refreshed weekly",
    "keyType": ["rampid", "uid2"],
    "regions": ["NORAM", "EMEA"],
    "isLive": false
  }'

Parameters

FieldTypeRequiredNotes
signalIdstringYesCaller-supplied stable identifier. Pattern ^[\w\-:.]+$, max 255. Immutable
namestringYesHuman-readable name (max 255)
keyTypestring[]YesIdentifiers the segment is keyed on. At least one of property, postal_code, uk_postal_district, maid, rampid, lat_long_radius, id5, coreid, yahoo_connect, uid2, euid, pairid, url. Immutable
agentIdstringNoOwning signals agent (for agent-managed signals)
descriptionstringNoWhat the segment represents (max 5000)
regionsstring[]NoAvailability regions: NORAM, LATAM, EMEA, APAC, ANZ, GLOBAL (max 6). Immutable
metadataobjectNoFree-form key/value metadata
accessobject[]NoAccess records. Each requires seatId (int64) and visibility (PUBLIC or PROPRIETARY); optional price
isLivebooleanNoWhether the signal is deployed and accepting buys. Default false

Response

{
  "signal": {
    "id": 50213,
    "signalId": "acme_high_value_customers",
    "customerId": 1001,
    "adcpAgentId": null,
    "name": "Acme — High-Value Customers",
    "description": "Top 10% LTV customers, refreshed weekly",
    "keyType": ["rampid", "uid2"],
    "regions": ["NORAM", "EMEA"],
    "metadata": null,
    "isLive": false,
    "archivedAt": null,
    "createdBy": "agent@acme.example",
    "updatedBy": null,
    "createdAt": "2026-06-06T12:00:00Z",
    "updatedAt": "2026-06-06T12:00:00Z"
  },
  "access": []
}
The numeric id and the string signalId are both returned. Pass signalId to every sibling operation.

Errors

  • 400 VALIDATION_ERROR — missing signalId, name, or keyType; malformed signalId; or an empty keyType array.
  • 401 UNAUTHORIZED — missing or invalid bearer token.
See Errors for the full error contract.

Signal tasks

All signal operations

Signal overview

Fields, lifecycle, and concepts

Update signal

Change metadata and access records

Discover signals

Find external segments from agents