Introduction
ContactBased Data APIs
ContactBased helps you turn intent signals into exportable records and enrichable contacts.
The API has four main surfaces:
- Organization — list available feeds and read your records / feed creation limits.
- Intent feeds — preview or search feeds your organization can access.
- Feed exports — preview, count, create, page through, and download CSV exports.
- Enrichment — enrich exported
contact_ids with enabled person, email, phone, location, professional, automotive, interest, donor, household, purchase, and financial bundles.
Open the API Reference for full schemas and the interactive playground.
Authentication
All public endpoints use API key authentication. Send your key in the X-API-Key header.
Code
Invalid or inactive keys return 401.
Feeds
A feed is the saved audience definition you search or export against. Feeds can be based on domains, topics, or free text. Free-text feeds are resolved to matching domains when they are created or updated, so search and export queries run against a stable domain set.
Use GET /organization/feeds to list feeds available to your organization.
| Endpoint | Purpose |
|---|---|
GET /organization/feeds | Paginated list of accessible feeds. Supports search, page, and page_size. |
GET /organization/credits | Org-wide records credit pool. |
GET /organization/feed-limit | Self-serve feed creation limit. |
POST /intent/feeds/builder | Preview a free-text feed query or save it as a new feed. |
POST /intent/feeds/search | Return feed totals for a rolling window. Can also create an export with auto_export. |
Lookback windows use lookback_days, ending today and inclusive. Feed and organization permissions decide the maximum allowed window.
Export Flow
The current export flow is asynchronous and bucket-backed. Creating an export stores metadata immediately with status: "building", then ContactBased materializes page CSVs and a full CSV in object storage. Poll the export summary or read pages until status becomes "ready".
Recommended flow:
- Preview a configuration with
POST /intent/feeds/exports/preview. - Optionally lazy-load exact counts with
POST /intent/feeds/exports/count. - Create the export with
POST /intent/feeds/exports. - Poll metadata from
POST /intent/feeds/exports/listor your savedexport_id. - Read pages with
POST /intent/feeds/exports/page, or request a full-file URL withPOST /intent/feeds/exports/download-urlonce ready.
Code
Export Options
| Option | Meaning |
|---|---|
page_size | Rows per page, fixed at creation. Current range is 1,000 to 50,000. |
max_rows | Optional ceiling on the export size. |
require_contact_id | Only return rows with a stable contact_id. Required automatically by consumer filters and enrichment bundles. |
consumer_filters | Demographic / lifestyle filters applied to contact-linked rows. Filters make the export person-distinct. |
enrichment_bundles | Adds enabled enrichment bundle payloads as JSON columns on export rows. |
Export summaries include status, build_progress, and build_error. status is one of building, ready, or failed.
Creating an export reserves records from your organization credit pool. Reading pages and downloading the finished CSV do not consume more records.
Filters
Consumer filters let you narrow exports to contact-linked people with specific demographic, household, financial, or lifestyle attributes.
| Endpoint | Purpose |
|---|---|
POST /intent/feeds/filters/fields | List supported filter fields, operators, labels, and categories. |
POST /intent/feeds/filters/values | Fetch distinct values for a filter field to power autocomplete controls. |
When consumer_filters is present, exports require contact IDs and return at most one row per matching contact_id.
Enrichment
Export rows may contain a public contact_id. Use that ID with /enrich to request additional bundles.
contact_id values are formatted as id_ followed by 16 lowercase hex characters, for example id_3f2a8d1b9c0e5f47.
| Endpoint | Bundle |
|---|---|
GET /enrich/bundles | Lists enrichment bundle keys enabled for your organization. |
POST /enrich/individual-core | Core person and address fields. |
POST /enrich/emails | Email addresses and hash fields. Email records expose last_seen, the most recent of source register/update dates. |
POST /enrich/phones | Phone numbers and phone metadata. |
POST /enrich/location | Address and geographic location details. |
POST /enrich/professional | Professional and LinkedIn-style signals. |
POST /enrich/auto | Automotive ownership and vehicle summaries. |
POST /enrich/interests | Interest signals. |
POST /enrich/donor | Charitable giving signals. |
POST /enrich/household | Household and property signals. |
POST /enrich/purchases | Purchase and shopping behavior signals. |
POST /enrich/financial | Credit, income, and asset indicators. |
Enrichment requests are bulk-first:
Code
Responses preserve input order and include found / not-found counts. Unknown contacts do not fail the whole batch.
Next Steps
- Start with
GET /organization/feedsto discover available feed IDs. - Use
POST /intent/feeds/exports/previewbefore creating large exports. - Use
POST /intent/feeds/exports/download-urlwhen you need the full finished CSV. - Use
/enrich/bundlesbefore requesting enrichment bundles, especially when appending bundles to exports.