Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.leadpipe.com/llms.txt

Use this file to discover all available pages before exploring further.

Get the filter catalog

GET /v1/intent/audiences/filters
x-api-key: YOUR_API_KEY
The response is a catalog, not a flat list of values. Render filters from data.groups[].filters[] and submit each filter by its key.
type IntentFilterCatalog = {
  version: {
    status: "catalog" | "static_fallback";
    sourceTable: string;
    catalogTable: string;
    catalogVersion: string | null;
    buildId: string | null;
    buildDate: string | null;
    generatedAt: string | null;
  };
  summary: {
    groupCount: number;
    filterCount: number;
    valueCount: number;
    recommendedFilterCount: number;
    standardFilterCount: number;
    advancedFilterCount: number;
    supportsAdvancedLogic: boolean;
    defaultFieldLogic: "and";
  };
  groups: Array<{
    key: string;
    label: string;
    description: string;
    filters: FilterDefinition[];
  }>;
};
type FilterDefinition = {
  key: string;
  label: string;
  type: "multi_select" | "boolean" | "text_terms" | "number_range";
  valueType: "enum" | "boolean" | "string" | "number";
  operators: string[];
  values?: Array<{ value: string; label: string; count: number }>;
  ui: {
    label: string;
    description: string;
    control: "multi_select" | "toggle" | "text_chips" | "number_range";
    section: "recommended" | "standard" | "advanced";
    recommended: boolean;
    advanced: boolean;
    placeholder?: string;
    helperText?: string;
  };
};
Hide backend diagnostic fields such as sourceColumn, source, requiresSidecar, and isSearchOnly in normal product UI.

Common filter keys

Use the live catalog as the source of truth. Common current groups include:
AreaExample keys
Companycompany.industries, company.industryGroups, company.revenueRanges, company.names, company.domains
Rolerole.seniority, role.departments, role.isDecisionMaker, role.isCeo, role.isVp, role.isFinance
Job titlesjobTitle.include, jobTitle.exclude, jobTitle.exact
Contactabilitycontact.hasBusinessEmail, contact.hasPersonalEmail, contact.hasLinkedin, contact.hasAnyPhone
Geographygeo.personalStates, geo.companyStates, geo.personalCities, geo.companyCities
Demographicsdemographics.gender, demographics.ageRanges, demographics.incomeRanges, demographics.netWorth
Do not submit old flat filter keys such as companyIndustry, companySize, seniority, or hasBusinessEmail.

Multi-select filters

Submit raw values[].value, not the display labels.
{
  "filters": {
    "company.industries": {
      "values": ["software development", "financial services"]
    },
    "role.seniority": {
      "values": ["director", "vp", "c_suite"]
    }
  }
}
Values inside one multi-select are ORed together. Different top-level filters are ANDed together.

Boolean filters

{
  "filters": {
    "contact.hasBusinessEmail": true,
    "role.isDecisionMaker": true
  }
}
Object form is also supported:
{
  "filters": {
    "contact.hasBusinessEmail": {
      "operator": "is_true"
    }
  }
}

Text chip filters

Use text chip filters for free-text job title, company name, domain, NAICS, SIC, city, or ZIP inputs when those keys are present in the catalog.
{
  "filters": {
    "jobTitle.include": {
      "values": ["CFO", "VP Finance", "Head of Revenue"],
      "operator": "contains",
      "mode": "any"
    },
    "jobTitle.exclude": {
      "values": ["assistant", "intern", "student"],
      "operator": "contains",
      "mode": "any"
    }
  }
}
Supported text operators are contains, exact, and starts_with. mode: "any" ORs terms together, and mode: "all" ANDs terms together.

Number range filters

{
  "filters": {
    "company.revenueMin": {
      "min": 1000000,
      "max": 10000000
    }
  }
}
Single-sided range form:
{
  "filters": {
    "company.revenueMin": {
      "operator": "gte",
      "value": 1000000
    }
  }
}

Advanced logic

Prefer simple top-level filters for normal builders. Advanced and and or groups are supported when the user explicitly builds nested logic.
{
  "filters": {
    "and": [
      { "field": "contact.hasBusinessEmail", "value": true },
      {
        "or": [
          { "field": "role.isCfo", "value": true },
          { "field": "role.isVp", "value": true },
          {
            "field": "jobTitle.include",
            "values": ["head of finance"],
            "mode": "any"
          }
        ]
      }
    ]
  }
}
Rules:
  • A group can contain either and or or at the same level, not both.
  • Top-level simple filters and top-level groups are combined with AND.
  • Nested OR groups cannot mix serving-only fields and filter-surface-only fields.