Skip to main content
POST /api/v2/buyer/advertisers/{advertiserId}/audiences/sync Syncs first-party CRM audiences for an advertiser by adding, removing, or deleting members. Processing is asynchronous — the call returns 202 with a taskId you poll for completion.

Request

curl
curl -X POST https://api.interchange.io/api/v2/buyer/advertisers/25/audiences/sync \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audiences": [
      {
        "audienceId": "loyalty-members-2026",
        "name": "Loyalty members",
        "consentBasis": "consent",
        "add": [
          { "externalId": "cust_8841", "hashedEmail": "a1b2c3d4e5f6071829304152637485960718293041526374859607182930a1b2" }
        ],
        "remove": [
          { "externalId": "cust_2210" }
        ]
      }
    ],
    "deleteMissing": false
  }'

Parameters

FieldTypeRequiredNotes
advertiserIdstring (path)YesAdvertiser ID (numeric string, e.g. 25)
audiencesarrayYesAudiences to sync (at least 1)
audiences[].audienceIdstringYesBuyer’s identifier for the audience (1–255 chars). Used in targeting overlays
audiences[].namestringNoHuman-readable name (max 255 chars)
audiences[].consentBasisenumNoGDPR lawful basis: consent, legitimate_interest, contract, legal_obligation
audiences[].addarrayNoMembers to add (max 100000). Each needs externalId; optionally hashedEmail, hashedPhone, uids[]
audiences[].removearrayNoMembers to remove by externalId (max 100000)
audiences[].deletebooleanNoWhen true, delete this audience entirely
deleteMissingbooleanNoWhen true, audiences not in this request are marked deleted
pushNotificationConfigobjectNoADCP push notification config to receive a callback when processing completes
hashedEmail is the SHA-256 hash of a lowercased, trimmed email (64-char hex). hashedPhone is the SHA-256 hash of an E.164 phone number. Send hashed identifiers, never raw PII.

Response

{
  "success": true,
  "accountId": "25",
  "operationId": "550e8400-e29b-41d4-a716-446655440000",
  "taskId": "550e8400-e29b-41d4-a716-446655440000"
}
Returns 202 Accepted. taskId (identical to operationId) tracks async processing — poll GET /api/v2/buyer/tasks/{taskId} until status is completed or failed. See Async tasks. The synced audiences then appear via List audiences.

Errors

  • 400 VALIDATION_ERROR — empty audiences, malformed hashedEmail/hashedPhone, or a batch exceeding 100000 members.
  • 404 NOT_FOUNDadvertiserId does not exist or is not visible to the authenticated customer.
See Errors for the full error contract.

Advertiser tasks

All advertiser operations

Async tasks

Poll a taskId to completion

List audiences

Check match status after sync

Advertiser overview

Fields, lifecycle, and concepts