AssetProfile
has_investmentshas_stocks_or_bondshas_mutual_fundsknown_investornet_worth_rangenet_worth_midpointAutoExportOptions
Optional demographic / lifestyle filters applied against li_consumer_data. When set, only rows with a resolved contact_id are considered (implicitly forces require_contact_id), the result is collapsed to one row per matching contact_id (person-distinct via LIMIT 1 BY obs.person_id), and only contacts matching ALL filters are returned.
Optional B2B profile filters. Only valid when the feed's output_type is business.
Optional OR consumer filter groups. Filters within a group are AND-ed; groups are OR-ed.
Optional OR business filter groups. Filters within a group are AND-ed; groups are OR-ed.
page_sizeRows per page for subsequent reads via POST /intent/feeds/exports/page. Locked at creation so total_pages is stable for the life of the export.
Optional ceiling on the export's total row count. When set, total_rows is min(matched_records, max_rows). Omit (or pass null) to include every matching row.
require_contact_idWhen true, only rows with a resolved contact_id are exported. total_rows reflects the filter, so it may be smaller than the stats response's total_records.
enrichment_bundlesOptional enrichment bundles to append to the export as JSON blob columns. Each requested bundle must be enabled for your organization. Selecting any bundle requires contact ids and forces require_contact_id=true.
BuilderFeedRequest
textNatural-language search query.
lookback_daysRolling window in days. Max 14.
Choose how closely results should match your phrase.
Option 1 — Use a preset
"low"— broader matches."medium"— balanced matches (default)."high"— closer matches.
Option 2 — Set a numeric level
Use an integer from 0 to 10. Higher values require a closer match. Send a JSON number, such as 5, not a quoted string or decimal.
Equivalent settings: 3 = low, 5 = medium, 7 = high.
output_typeFeed output mode. consumer is the default; business uses B2B export filters and bundle rules.
Optional name for the feed. Defaults to the query.
previewWhen true, returns metrics only and saves nothing. When false, saves the feed and returns its id.
BuilderFeedResponse
Set when the feed was saved.
Set when the feed was saved.
Set when the feed was saved.
Set when the feed was saved.
Set when preview=true.
BuilderPreviewMetrics
lookback_daysstart_dateStart of the window (inclusive), YYYY-MM-DD.
end_dateEnd of the window (inclusive), YYYY-MM-DD.
total_recordsTotal records matching the query in the window.
records_with_contact_idSubset of total_records linked to a known contact (carry a contact_id on export). The remainder is anonymous.
Per-day record counts across the window.
BulkAutoEnrichment
requestedfoundnot_foundBulkDonorEnrichment
requestedfoundnot_foundBulkEmailEnrichment
requestedfoundnot_foundBulkFinancialEnrichment
requestedfoundnot_foundBulkHouseholdEnrichment
requestedfoundnot_foundBulkIndividualCoreEnrichment
requestedfoundnot_foundBulkInterestEnrichment
requestedfoundnot_foundBulkLocationEnrichment
requestedfoundnot_foundBulkPhoneEnrichment
requestedfoundnot_foundBulkPoliticalEnrichment
requestedfoundnot_foundBulkProfessionalEnrichment
requestedfoundnot_foundBulkPurchaseEnrichment
requestedfoundnot_foundBusinessFilter
fieldPublic B2B filter key from /intent/feeds/filters/business/fields, for example company_domain, job_title, or person_state.
Filter value. Use a scalar for eq/neq/contains; use a list for in/not_in.
operatorComparison operator. Supported: eq, neq, in, not_in, and contains for supported text-search fields. Seniority and department filters match complete individual values, ignoring case and surrounding whitespace; in matches any selected value and not_in excludes all selected values.
BusinessFilterGroup
Filters inside the group are AND-ed together. Multiple groups are OR-ed together.
ConcurrentExportLimitExceededResponse
detailReturned error message describing what went wrong.
ConsumerFilter
fieldPublic filter key from /intent/feeds/filters/consumer/fields (for example individual_core.age.value, individual_core.gender, or financial.income.individual_range).
Filter value. Use a scalar for eq/neq/gt/gte/lt/lte; use a list for in/not_in.
operatorComparison operator. Supported: eq (equals), neq (not equals), gt, gte, lt, lte, in (value is in list), not_in (value not in list), and contains for supported location text fields.
ConsumerFilterGroup
Filters inside the group are AND-ed together. Multiple groups are OR-ed together.
ContactEmailEnrichment
contact_idfoundContactPhoneEnrichment
contact_idfoundContactProfessionalEnrichment
contact_idfoundfirst_namelast_namefull_nameperson_cityperson_stateperson_countryperson_zipjob_titlejob_functionjob_levelseniority_leveldepartmentpersonalinkedin_urllinkedin_sluglinkedin_headlinelinkedin_industrycompany_namecompany_domainwebsitecompany_linkedin_urlcompany_industrycompany_employee_rangecompany_revenue_rangecompany_citycompany_statecompany_countrywork_emailCoreAge
valuerangebirth_yearbirth_monthCoreGeo
latitudelongitudecbsadmamsascffips_statefips_countycensus_tractcensus_block_groupcensus_blockcongressional_districturbanicityaddress_typecarrier_routeCoreLocation
addresscitystatepostal_codepostal_code_extcountyCreditProfile
has_credit_cardhas_bank_cardhas_amexhas_premium_cardhas_premium_amexcredit_rangecredit_midpointcredit_linesnew_credit_rangeDailyCount
dateCalendar date in YYYY-MM-DD format.
countNumber of records observed on this date.
count_with_contact_idSubset of count whose underlying person_id resolved to a known contact (i.e. would carry a non-empty contact_id on export). Defaults to 0 on responses that don't compute the per-day breakdown.
EmailRecord
emaildomainlast_seenmd5sha1sha256EnabledEnrichmentBundlesResponse
enabled_bundlesEnrichmentRequest
contact_idsOne or more DataMoon contact ids. Send one id for a single lookup, or up to 100 ids in one request.
ExportCreateBadRequestResponse
detailReturned error message describing what went wrong.
ExportCreateForbiddenResponse
detailReturned error message describing what went wrong.
ExportCreateRequest
feed_idID of the feed to export. Must be a feed your organization can access.
lookback_daysSize of the rolling window in days, ending today (inclusive). Capped at 14 inclusive data dates and may be further limited by your organization's feed permission.
Optional demographic / lifestyle filters applied against li_consumer_data. When set, implicitly forces require_contact_id=true and collapses results to one row per matching contact_id (person-distinct).
Optional B2B profile filters applied against business feeds. Invalid for consumer feeds.
Optional OR filter groups for consumer feeds. Filters within a group are AND-ed; groups are OR-ed. Mutually exclusive with consumer_filters.
Optional OR filter groups for business feeds. Filters within a group are AND-ed; groups are OR-ed. Mutually exclusive with business_filters.
Optional ceiling on the export's total row count. When set, total_rows is min(matched_records, max_rows). Omit (or pass null) to include every matching row.
page_sizeRows per page for subsequent reads via POST /intent/feeds/exports/page. Locked at creation so total_pages is stable for the life of the export.
require_contact_idWhen true, only rows with a resolved contact_id are exported. total_rows reflects the filter, so it may be smaller than what an unfiltered export of the same job would return.
match_confidenceObservation match-confidence filter for this export. all includes every confidence level; probabilistic includes deterministic and probabilistic matches; deterministic includes deterministic matches only.
enrichment_bundlesOptional enrichment bundles to append as JSON blob columns. Each requested bundle must be enabled for your organization. Selecting any bundle forces require_contact_id=true.
ExportCreateResponse
export_idIdentifier for the export. Use with /exports/page, /exports/get.
total_rowsTotal rows in the export.
page_sizeRows per page, fixed at creation time.
total_pagesNumber of pages available to read; 0 when the export captured no rows.
created_atWhen the export was created (ISO 8601).
Window size used when the export was created.
require_contact_idmatch_confidenceenrichment_bundlesstatusBuild status: building, ready, expired, failed, or terminal source_expired.
build_progressPages materialized so far (only meaningful while status=building).
Error message when status=failed.
When the export became permanently unrebuildable.
Why the original source window cannot be reconstructed.
ExportDownloadUrlRequest
export_idExportDownloadUrlResponse
Presigned download URL for the full CSV file. Expires in 1 hour.
statusready, building, or terminal source_expired.
Response Message. E.g. reason why URL is not ready, if applicable.
ExportListRequest
Only return exports for this feed.
limitMaximum number of exports to return, newest first.
ExportPageRequest
export_idpagePage number, 1-indexed. Must satisfy page <= total_pages.
ExportPageResponse
export_idpageThe page returned.
page_sizetotal_rowstotal_pagesRows for the requested page. Always includes the default hash and match columns (contact_id, md5, sha1, sha2, match_confidence); selected enrichment bundles appear as JSON blob columns.
ExportPreviewRequest
feed_idID of the feed to export. Must be a feed your organization can access.
lookback_daysSize of the rolling window in days, ending today (inclusive). Capped at 14 inclusive data dates and may be further limited by your organization's feed permission.
Optional demographic / lifestyle filters applied against li_consumer_data. When set, implicitly forces require_contact_id=true and collapses results to one row per matching contact_id (person-distinct).
Optional B2B profile filters applied against business feeds. Invalid for consumer feeds.
Optional OR filter groups for consumer feeds. Filters within a group are AND-ed; groups are OR-ed. Mutually exclusive with consumer_filters.
Optional OR filter groups for business feeds. Filters within a group are AND-ed; groups are OR-ed. Mutually exclusive with business_filters.
Optional ceiling on the export's total row count. When set, total_rows is min(matched_records, max_rows). Omit (or pass null) to include every matching row.
page_sizeRows per page for subsequent reads via POST /intent/feeds/exports/page. Locked at creation so total_pages is stable for the life of the export.
require_contact_idWhen true, only rows with a resolved contact_id are exported. total_rows reflects the filter, so it may be smaller than what an unfiltered export of the same job would return.
match_confidenceObservation match-confidence filter for this export. all includes every confidence level; probabilistic includes deterministic and probabilistic matches; deterministic includes deterministic matches only.
enrichment_bundlesOptional enrichment bundles to append as JSON blob columns. Each requested bundle must be enabled for your organization. Selecting any bundle forces require_contact_id=true.
skip_countWhen true, returns sample rows without running the exact COUNT. Use /exports/count to lazy-load exact matched/total rows.
preview_rowsHow many sample rows to fetch for the preview. Capped at 500 to keep the round-trip quick; the dashboard's default is 100. Counts are returned regardless — preview_rows only governs the size of the row sample.
ExportPreviewResponse
feed_idmatched_rowsTotal rows that would match the feed + filters before the max_rows cap is applied. Surface this so users know how much they're leaving on the table when they cap an export.
total_rowsWhat total_rows would be on a real export — min(matched_rows, max_rows). Equal to matched_rows when max_rows is unset or larger.
require_contact_idEffective require_contact_id for the preview. May be True even when the request didn't ask for it — consumer filters force it on because the JOIN key is person_id.
One of free_text, domain, or topic — null when not resolved.
counts_readyFalse when preview was requested with skip_count=true; call /exports/count for exact matched/total rows.
Sample rows for the preview, capped by the request's preview_rows. Same shape as ExportPageResponse.rows: the default hash/match columns plus selected enrichment bundle columns.
fieldsColumn order of rows. Useful for rendering a fixed table header while individual row dicts may omit optional fields.
Filters that produced this preview, echoed for UI parity.
Business filters that produced this preview, echoed for UI parity.
Consumer OR filter groups that produced this preview.
Business OR filter groups that produced this preview.
match_confidenceEffective match-confidence filter used for the preview.
enrichment_bundlesExportRetentionUnavailableResponse
detailReturned error message describing what went wrong.
coderetryableExportSourceExpiredResponse
detailReturned error message describing what went wrong.
export_idcoderetryableExportSummary
export_idIdentifier for the export. Use with /exports/page, /exports/get.
total_rowsTotal rows in the export.
page_sizeRows per page, fixed at creation time.
total_pagesNumber of pages available to read; 0 when the export captured no rows.
created_atWhen the export was created (ISO 8601).
Window size used when the export was created.
require_contact_idmatch_confidenceenrichment_bundlesstatusBuild status: building, ready, expired, failed, or terminal source_expired.
build_progressPages materialized so far (only meaningful while status=building).
Error message when status=failed.
When the export became permanently unrebuildable.
Why the original source window cannot be reconstructed.
FeedStatsRequest
feed_idID of the feed to query. Must be a feed your organization can access.
lookback_daysSize of the rolling window in days, ending today (inclusive). A value of 14 returns exactly 14 inclusive data dates. Capped per feed by your organization's configured maximum; requests above the cap are rejected with 403.
include_daily_countsWhen true, the response includes a daily_counts array with one entry per day in the window. Useful for charts and trend displays. Off by default to keep responses small.
Set to also create a paginated export from the same stats request and include its summary in the response. When provided, the response's export field carries an ExportSummary whose export_id you can pass straight to POST /intent/feeds/exports/page. Omit this field to use the standard two-step flow (call POST /intent/feeds/exports yourself with the same feed_id and lookback_days).
FeedStatsResponse
feed_idtotal_recordsTotal number of records matched in the window.
lookback_daysWindow size used by the stats request.
records_with_contact_idRecords that resolve to a contact_id — a stable contact identifier you can use with the enrichment APIs. Use this to size an export with require_contact_id=true.
records_without_contact_idRecords that did not resolve to a contact_id.
First date covered by the window (YYYY-MM-DD).
Last date covered by the window (YYYY-MM-DD).
Per-day record counts ordered oldest to newest. Populated only when the request set include_daily_counts=true.
Auto-created paginated export, populated when the request set auto_export. Use the embedded export_id directly with POST /intent/feeds/exports/page — no separate POST /intent/feeds/exports call required.
FilterFieldConfig
namePublic filter key.
labeldata_typecategoryGroup key used to organize fields in the UI.
supported_operatorsOperators valid for this field given its data_type.
Strings get equality + set membership; numerics get the full
comparison set as well. Location city/state fields can opt into
contains as their first operator so the UI defaults to it.
Longer description shown as a tooltip in the UI.
enabledWhen false, the field is hidden from the corresponding consumer or business fields endpoint, and its values endpoint rejects it. Use to gate a column without removing it from the config.
FilterFieldsListRequest
Optional category to narrow the result to. Omit to return all fields. See FilterFieldConfig.category.
enabled_onlyWhen true (default), only fields with enabled=true are returned. Pass false to include disabled fields too — useful for an admin view that toggles availability.
FilterFieldsListResponse
Filterable fields, ordered by category then label. Use the name of any entry as the field in a ConsumerFilter or BusinessFilter predicate, respectively. For autofill, pass it to /intent/feeds/filters/consumer/values or /intent/feeds/filters/business/values, matching the fields endpoint.
categoriesDistinct categories present in fields, in declaration order. Convenience for grouping in the UI without having to do a second pass over fields.
FilterValuesRequest
fieldPublic filter key to enumerate values for. Must match the name of an enabled FilterFieldConfig.
Optional autofill query. Case-insensitive substring match for string fields; prefix match against toString(value) for numeric fields. Leave empty to list values without filtering.
limitMaximum number of distinct values to return per call.
offsetOffset-based pagination. Ignored when cursor is also set.
Cursor-based pagination. Pass the last value from the previous page (i.e. the last entry of values) to fetch the next page without paying the OFFSET cost. Mutually exclusive with offset.
FilterValuesResponse
fieldEchoed field from the request for client-side correlation.
Distinct values found for the requested column, ordered ascending. String values are returned as-is; numeric values as JSON numbers.
has_moretrue when the query produced exactly limit results — the caller should request the next page with next_offset or next_cursor to confirm and continue paginating.
Next offset to use for offset-mode pagination. null when the caller used cursor-mode or has_more is false.
Next cursor to use for cursor-mode pagination — equal to the last entry in values when has_more is true. null when there are no more results.
HomeProfile
dwelling_typesingle_familyownershipheat_typehome_pricehome_valuemedian_home_valuepurchased_years_agoyears_at_addresshas_poolHouseholdComposition
adultschildrengenerationspeoplehas_childrenchild_age_rangeshas_veteranIncomeProfile
household_rangehousehold_midpointindividual_rangemedian_area_incomepremium_household_rangepremium_household_midpointIntentFeedSummary
iddescriptioncreated_atWhen the feed was first provisioned. Surfaced so the dashboard can sort / display feeds by recency without a second round-trip.
output_typeMaximum lookback window allowed for this feed for this org, in days. null means no explicit cap is configured.
Lifetime cap on the number of rows that can be exported from this feed. null means the feed is uncapped.
Rows already consumed from the export quota. null when the feed is uncapped.
Rows still available to export. Equal to max(0, export_row_limit - export_rows_used). null when the feed is uncapped.
IntentFeedsResponse
totalTotal number of feeds matching the current query before pagination.
pageCurrent page number, 1-indexed.
page_sizeMaximum feeds per page.
total_pagesTotal pages for the current query.
InterestSignal
topicscoreMortgageProfile
age_yearsamountloan_typerefinance_age_yearsrefinance_amountrefinance_typeOrganizationCreditsResponse
Lifetime cap on rows the organization can export across all feeds whose quota_source is 'organization'. null means the org is uncapped.
records_usedRows already consumed from the org pool. Always 0 when record_limit is null.
Rows still available. Equal to max(0, record_limit - records_used). null when record_limit is null.
Reset cadence. Currently only 'lifetime'. Reserved for future monthly/billing-period resets.
OrganizationFeedLimitResponse
Maximum number of self-serve feeds the org may create.
feeds_usedNumber of self-serve feeds the org has currently created.
Number of additional self-serve feeds the org may create. null when feed_limit is null.
PhoneRecord
phonephone_typednc_flagmobile_carrierwork_phonerank_orderphone_quality_levellast_seen_dateCreateWebhook
modeurlenabledLastDelivery
event_idstatusattempted_atTestResult
deliveredduration_msmodeWebhookCreated
idurlenabledcreated_atupdated_atsigning_secretevent