Update a Contact's Publications

Subscribes or unsubscribes a contact per publication.

PATCHhttps://api.audienceful.com/v2/people/{id}/publications
curl --location --request PATCH 'https://api.audienceful.com/v2/people/jQKdwqp3YRRtTrwqUJEp7d/publications' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <your-api-key>' \
--data-raw '{
    "publications": {
        "kR2xN9mDfLpQ": true,
        "mZ7bV3nQwXcT": false
    }
}'
{
  "data": [
    {
      "id": "kR2xN9mDfLpQ",
      "name": "The Weekly",
      "subscribed": true,
      "explicit": true,
      "source": "api"
    },
    {
      "id": "mZ7bV3nQwXcT",
      "name": "Product Updates",
      "subscribed": false,
      "explicit": true,
      "source": "api"
    }
  ],
  "unsubscribed_all": false
}

Requires the publications:write scope.

Sets a contact's consent per publication. Unlike creating or updating a contact — where the publications field can only grant consent — this endpoint can both subscribe (true) and unsubscribe (false).

The update is a partial map: only the publication ids you name are changed. A publication you leave out of the object keeps its current state, so a partial payload can never silently revoke consent for a publication you didn't mention.

Path parameters

idstringrequired
The contact's id or email address (either identifier works).

Body

publicationsobjectrequired
A map of publication id → boolean. Set a publication to true to subscribe the contact or false to unsubscribe them. Only the ids present in the object are applied. Every key must be a known publication id in the workspace — an unknown id returns a 400. (Get ids from Retrieve a Contact's Publications.)

Response

Returns the contact's full consent state after the update — the same shape as Retrieve a Contact's Publications.

dataarray[object]
One entry per publication in the workspace.
Properties
idstring
The publication's id.
namestring
The publication's name.
subscribedboolean
Whether the contact is currently subscribed to this publication. When the contact has made no explicit choice, this reflects the publication's default.
explicitboolean
true when the contact has a deliberate choice on record for this publication, false when subscribed is simply the publication's default. Publications you set through this endpoint come back as explicit: true.
sourcestring or null
How the contact's explicit choice was made, or null when explicit is false. A change made through this endpoint is recorded with source api. See Retrieve a Contact's Publications for the full list of values.
unsubscribed_allboolean
true when the contact has globally unsubscribed from all email. A global unsubscribe outranks every per-publication state, so a contact with subscribed: true on a publication still receives nothing while this is true.
Last updated: July 24, 2026