API Updates - January 2026
Resolutions API
The resolutions backend has been rebuilt with a unified service architecture and a new automatic link renewal system.
Null-Aware Filter Operators
Filter operators now handle null values consistently. You can explicitly match null and non-null values using dedicated operators.
Supported null operators (case-insensitive, accept any of these forms):
is null,isnull,null- matches records where the field has no valueis not null,isnotnull,notnull,not null- matches records where the field has any value
Automatic Link Renewal
Download links for resolution exports now automatically regenerate when they expire. Background renewal jobs have been moved into a dedicated renewal service that runs on a schedule, so previously-expired links become usable again without any manual intervention or re-creation of the export.
No code changes are required in your integration.
Field Catalog API
A new Field Catalog REST API exposes the field schema used for export creation, contact filtering, and event ingestion. Use it to discover the fields, types, and picklist values supported by the platform when building integrations.
List Field Catalog
GET /api/v1/field-catalog
Query parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by status. Pass all to include archived fields |
category | string | No | Filter by field category |
Response (200 OK):
{
"fields": [
{
"key": "first_name",
"category": "person",
"type": "string",
"status": "active"
},
{
"key": "company_size",
"category": "company",
"type": "picklist",
"status": "active",
"picklist_values": ["1-10", "11-50", "51-200", "201-1000", "1000+"]
}
]
}Get Field Catalog Categories
GET /api/v1/field-catalog/categories
Returns the list of categories used to organize fields (e.g., person, company, behavior).
Get a Single Field
GET /api/v1/field-catalog/{key}
Returns the full definition for a single field, including any picklist values.
Picklist Alignment with Source Data
Picklist field values exposed by the Field Catalog API now align with the actual values present in the data lake, eliminating drift between documented and accepted values.
Lists API
Type Filter on List Queries
The lists endpoint now accepts a type query parameter to filter project-scoped lists by upload type.
GET /api/v1/lists?type=hem
List Values Download
A new endpoint streams the values in a list as a downloadable file.
GET /api/v1/lists/{id}/values/download
This supports streaming for large lists.
Exports API
resolvedOnly Field on Export Query Schema
Export query schemas now accept a resolvedOnly boolean field, allowing exports to be configured to only include resolved (identified) contacts and exclude raw events from unidentified visitors.
{
"destination_id": "dest_abc123",
"query": {
"resolvedOnly": true,
"filters": [...]
}
}Audience Filter Validation for Pixel Exports
Pixel-based exports now validate audience filter shape at submission time, returning a structured validation error rather than failing at execution.
Notifications API
Project-Scoped Notification Filters
Notification queries now accept an optional project_id query parameter to scope results to a single project.
GET /api/v1/notifications/unread?project_id=proj_abc123
Project API
Cascading Project Delete
A new endpoint cleanly deletes a project and all its child resources (lists, exports, integrations, audiences) in a single transactional call, replacing the previous multi-step cleanup workflow.
DELETE /api/v1/projects/{id}/cascade
Bug Fixes
- Fixed export validation falling back to a stale schema instead of using the current field catalog
- Fixed CRM fields proxy not forwarding the request body, causing field listing to fail for some integrations
- Fixed integration test connections returning empty errors when the test request body was consumed before forwarding
- Fixed billing usage failing to look up the correct billing contract when project context was incomplete
- Fixed a Slack destination configuration field being incorrectly rejected by validation