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.
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