Zernio
APIFor you
Zernio
APIFor you
API Reference

Audiences

List custom audiencesGETCreate custom audiencePOSTGet audience detailsGETUpdate an audiencePUTDelete custom audienceDELETEAdd users to audiencePOSTRemove users from audienceDELETEReplace audience companiesPOST
Dashboard
OverviewPlatformsAPI ReferenceResources
Audiences

Remove users from audience

Removes customer emails and phone numbers from a Meta customer list audience. Same body as POST /v1/ads/audiences/{audienceId}/users: send plaintext rows, they are normalized and SHA256-hashed server-side exactly like an upload, so a row removes the person it added.

Meta only, customer_list only. Every other platform returns 422 with code feature_not_available, and every other audience type returns 422. Max 10,000 users per request. Meta applies the removal asynchronously, so the audience size does not drop immediately.


PlatformsMeta
DELETE
/v1/ads/audiences/{audienceId}/users

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Path Parameters

audienceId*string

The Zernio audience id (the id field of GET /v1/ads/audiences), not the platform segment id.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adaudiences.removeUsersFromAdAudience({  path: {    audienceId: 'audience_abc123',  },  body: {    users: [      {        email: 'user@example.com',        phone: 'string',      },    ],  },});console.log(data);
{  "message": "string",  "numReceived": 0,  "numInvalid": 0,  "invalidEntrySamples": {    "property1": "string",    "property2": "string"  }}
Was this page helpful?

Add users to audience

Uploads customer emails (and phone numbers on Meta) to a customer list audience, hashed before they are sent. Data is SHA256-hashed server-side before sending to the platform. Email is used on every platform; phone is used on Meta only (other platforms ignore it). On TikTok and Pinterest, the first upload also provisions the audience (deferred create). LinkedIn uploads are full-replace. Max 10,000 users per request. customer_list only. A LinkedIn `company_list` audience takes company rows, not people: send those to `POST /v1/ads/audiences/{audienceId}/companies`. This endpoint 422s for every other audience type.

Replace audience companies

Upload the company rows of a LinkedIn `company_list` audience (account-based marketing). LinkedIn-only, every other platform returns 422. A LinkedIn audience segment holds exactly one uploaded list, so the list you send here REPLACES the segment's list instead of being appended to it: always send the full set of companies. LinkedIn returns only the identifier of the uploaded file, never its rows, so the merge cannot be done for you, keep the source list on your side. How the matching behaves: - Rows are plain text (not hashed), matched against LinkedIn's own company graph. - Matching is asynchronous: LinkedIn takes up to 48h for a new audience and up to 24h for a later update, and the audience stays `processing` meanwhile. - LinkedIn does not document how quickly companies dropped from the list stop being targeted, so treat removals as eventual rather than immediate. - LinkedIn recommends at least 1,000 companies for a usable match rate, and caps a list at 300,000. The initial list is sent with `companies` on `POST /v1/ads/audiences`; this endpoint is for every change after that.

users*array<>
Items1 <= items <= 10000