API Updates - May 2026
Audiences
Audience responses now carry richer reach and signal data for developers reading them programmatically.
Distinct profile count on audience responses
Audience responses now include a distinct_profile_count field reporting the number of unique resolved profiles, separate from the raw record count (which can be larger because a profile may carry multiple records). Both GET /api/v1/audiences and GET /api/v1/audiences/{id} return it, so you can report true reach without post-processing the download.
Intent frequency and impression count on audience samples
The audience sample endpoint now returns two additional per-contact fields: intent_frequency (how many times a profile appeared in the audience over the lookback window) and impression_count (ad impressions served to that profile over the same window). These are available on GET /api/v1/audiences/{id}/sample for intent and persona audiences, giving a graded signal rather than a binary match.
Authentication
Two changes tighten credential handling. Review them before your next integration build.
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 presenting a valid key without the matching secret is now rejected. If you have only been sending the key, add the secret you saved at creation time.
Application client secrets are no longer returned in plaintext
Application credential reads through GET /api/app/get and GET /api/app/retrieve/{app_id} no longer return the raw client secret. Credential validation now compares a hash of the secret you supply, so store the secret issued at creation time; it cannot be read back from the API.
Behavior Changes
Refreshing a paused audience returns 409
POST /api/v1/audiences/{id}/refresh against a paused audience now returns a 409 with a structured reason, instead of reporting success without actually queuing a rebuild. Resume the audience before requesting a refresh.
Bug Fixes
- Intent audience downloads via
GET /api/v1/audiences/{id}/downloadno longer return a spurious400when upstream data lands late for an otherwise-ready 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 actually fall within the requested range.
For full endpoint details, parameters, and examples, see our developer documentation.