API Updates - May 2026
Distinct profile count on audience responses
Audience responses now include a distinct_profile_count field, reporting the number of unique resolved profiles. This is separate from the raw record count, which can be larger because a single profile may carry multiple records. Use it to report true reach without downloading and de-duplicating the audience yourself.
The field is returned by both the list and detail endpoints.
GET /api/v1/audiences
GET /api/v1/audiences/{id}
Response:
distinct_profile_count(integer) - number of unique resolved profiles in the audience
Example:
curl https://apiv3.delivr.ai/api/v1/audiences/{id} \
-H "Authorization: Bearer YOUR_TOKEN"Intent frequency and impression count on audience samples
The audience sample endpoint now returns two additional per-contact fields for intent and persona audiences, giving a graded signal rather than a binary match.
GET /api/v1/audiences/{id}/sample
Response (per contact):
intent_frequency(integer) - number of times the profile appeared in the audience over the lookback windowimpression_count(integer) - ad impressions served to the profile over the same window
Example:
curl https://apiv3.delivr.ai/api/v1/audiences/{id}/sample \
-H "Authorization: Bearer YOUR_TOKEN"API key and secret pair validation
API key authentication now validates the key and its secret together. Send the secret in the X-Api-Secret header alongside X-Api-Key. For clients with secret enforcement enabled, a request that presents a valid key without the matching secret is now rejected. If your integration has only been sending the key, add the secret you saved at key creation time.
Headers:
X-Api-Key(string) - your API keyX-Api-Secret(string) - the secret issued when the key was created
Example:
curl https://apiv3.delivr.ai/api/v1/audiences \
-H "X-Api-Key: YOUR_KEY" \
-H "X-Api-Secret: YOUR_SECRET"Application client secrets are no longer returned in plaintext
Application credential reads no longer return the raw client secret. Credential validation now compares a hash of the secret you supply, so the secret cannot be read back from the API. Store the secret issued at creation time; it is the only opportunity to capture it.
GET /api/app/get
GET /api/app/retrieve/{app_id}
Example:
curl https://api.delivr.ai/public/core/api/app/retrieve/{app_id} \
-H "Authorization: Bearer YOUR_TOKEN"Refreshing a paused audience returns 409
Requesting a refresh on a paused audience now returns a 409 with a structured reason, instead of reporting success without queuing a rebuild. Resume the audience before requesting a refresh.
POST /api/v1/audiences/{id}/refresh
Response:
409- returned when the audience is paused; includes a structured reason. Resume the audience first, then retry.
Example:
curl -X POST https://apiv3.delivr.ai/api/v1/audiences/{id}/refresh \
-H "Authorization: Bearer YOUR_TOKEN"Bug Fixes
GET /api/v1/audiences/{id}/downloadno longer returns a spurious400when upstream data lands late for an otherwise-ready intent audience.GET /api/v1/audiencesno longer returns500for projects in certain organization hierarchies.- Audience filters using range operators (such as greater-than or less-than on bucketed fields like company employee-count ranges) now return only records that fall within the requested range.
For full endpoint details, parameters, and examples, see our developer documentation.