Hillwinds API
Core Concepts

Field Tiers

Every entity has basic and advanced fields. Your API key's field_tier setting determines which fields you can access and what credit cost applies.

What is the difference between basic and full fields?

Basic fields provide firmographic identity, while full fields add benefits intelligence such as brokers, carriers, premiums, plan funding, renewals, 401(k) data, and signals. Usemode=basic for the cheaper identity layer or mode=full when the workflow requires those advanced fields.

Basic vs. advanced

Basic = identity. Who and where the company is — name, address, industry, size, and website. This is the firmographic layer.

Advanced (mode=full) = benefits intelligence. Everything basic has, plus proprietary broker, carrier, premium, plan-funding, renewal, 401k, signal, and administrator data.

Advanced is a strict superset of basic. Upgrading never removes a basic field; it only adds fields.

Two independent knobs

KnobControlsValues
modeWhich fields you get and the credit costbasic · full
formatThe shape of the responsejson (nested) · flat (one flat row)

These choices are orthogonal: mode is what data is returned; formatis how that data is laid out. The request value is mode=basic or mode=full. mode=advanced is invalid and returns 400, even though a full response reports meta.response_tier: "advanced".

Reproduce it in sandbox

Run both requests with an ss_test_ key. Sandbox reads use the production request contract, are capped at 100 rows, and charge zero credits.

Company 946157413
curl -H "Authorization: Bearer ss_test_YOUR_API_KEY" \
  "https://api.hillwinds.ai/v1/companies/946157413?mode=basic"

The basic response contains firmographics and attribution only. The advanced response contains those same keys unchanged, then adds benefits intelligence such as primary_broker, all_brokers_detail, all_carriers_detail, total_premiums, renewal_date, signals, and plan-administrator fields.

For agents
  • Need only to identify, locate, or deduplicate a company? Use mode=basic.
  • Need broker, carrier, premium, or plan data? Use mode=full.
  • Advanced already includes basic; never request both.
  • format=flat only reshapes the selected fields for CSV or spreadsheets.

Key access and billing

  • Basic keys — can only access basic fields. Requests for advanced-only fields or signal filters return 403 FORBIDDEN.
  • Advanced keys — can request either mode=basic (cheaper) or mode=full (all fields). The credit cost is determined by which mode you use, not which key you have.

Company fields

Basic (0.10 credits/row)

FieldTypeDescription
idstringCompany EIN
company_namestringLegal entity name
company_statestringTwo-letter state code
company_citystringCity
company_zipstringZIP code
company_addressstringStreet address
company_dmastringDesignated Market Area
company_industrystringIndustry classification
employee_bandstringEmployee count band
total_number_of_employeesintegerExact employee count
websitestringCompany website
crm_statusstring[]CRM sync status
last_updated_atdatetime stringLast upstream refresh time
lead_sourceobjectResponse attribution and retrieval time

Advanced (1.00 credits/row) — requires advanced access

FieldTypeDescription
premium_tierstringPremium tier classification
self_funded_or_fully_insuredstringFunding status
linkedinstringLinkedIn URL
renewal_datedatetime stringBenefits renewal timestamp
filing_yearintegerFiling year
available_filingsstring[]Filing types available
signalsstring[]Active signals (carrier_change, broker_change, etc.)
participantsintegerPlan participants
total_premiumsintegerTotal annual premiums ($)
medical_premiumsintegerMedical-only premiums ($)
primary_brokerstringPrimary broker name
primary_broker_officestringPrimary broker office
broker_commissionintegerBroker commission ($)
broker_tenure_yearsintegerYears with current broker
broker_commission_growth_pctnumberYoY commission growth (%)
primary_broker_compensationintegerBroker total compensation ($)
primary_broker_addressstringBroker street address
primary_broker_citystringBroker city
primary_broker_statestringBroker state
all_carriersstring[]All carrier names
all_brokersstring[]All broker names
health_carriersstring[]Health insurance carrier names
lines_of_insurancestring[]Insurance lines held
carrier_by_lineobject[]Carriers grouped by insurance line
all_carriers_detailobject[]Carrier name, participants, premiums, benefit types
all_brokers_detailobject[]Broker name, compensation, rank, benefit types
broker_office_idstringPrimary broker office ID
participant_growthnumberYoY participant growth (%)
relationship_countintegerTotal carrier/broker/provider relationships
relationship_densitystringRelationship density band
assets_401kinteger401K assets ($)
asset_tier_401kstring401K asset tier
provider_401kstring401K provider name
accounting_firmstringAccounting firm name
administrator_linkedinstringPlan admin LinkedIn URL
admin_namestringPlan administrator name
admin_emailstringPlan administrator email
admin_phonestringPlan administrator phone

Personnel fields

Basic (0.50 credits/row)

FieldTypeDescription
idstringContact ID
first_namestringFirst name
last_namestringLast name
full_namestringFull name
titlestringJob title
job_descriptionstringJob description
senioritystringSeniority level
email_addressstringEmail address
email_statusstringEmail verification status
person_linkedin_urlstringLinkedIn profile URL
lead_typestringcompany or broker
company_namestringAssociated company
company_einstringCompany EIN
company_citystringCompany city
company_statestringCompany state
company_industrystringCompany industry
company_websitestringCompany website
company_linkedinstringCompany LinkedIn
broker_namestringAssociated broker
broker_office_idstringBroker office ID
broker_office_citystringBroker office city
broker_office_statestringBroker office state
form5500_rolestringForm 5500 filing role
person_citystringPerson's city
person_statestringPerson's state
person_dmastringPerson's DMA
crm_statusstring[]CRM sync status

Advanced (2.00 credits/row) — requires advanced access

FieldTypeDescription
filing_yearintegerFiling year
available_filingsstring[]Filing types available
signalsstring[]Active signals
phone_numberstringPhone number
company_renewal_datestringCompany renewal timestamp
total_number_of_employeesintegerCompany employee count
broker_coverageintegerBroker's client count (if broker lead)

Broker Office fields

Basic (1.00 credits/row)

FieldTypeDescription
idstringBroker office ID
broker_namestringParent brokerage firm name
office_namestringOffice name / branch name
broker_office_idstringBroker office ID (alias for id)
broker_idstringParent broker ID
broker_citystringOffice city
broker_statestringOffice state
broker_dmastringOffice DMA
brokerage_classstringnational player, regional player, or local broker
addressstringStreet address
websitestringOffice or parent broker website
crm_statusstring[]CRM sync status

Advanced (2.00 credits/row) — requires advanced access

FieldTypeDescription
client_countintegerNumber of clients serviced by this office
client_count_bandstringClient count band
filing_yearintegerFiling year
available_filingsstring[]Filing types available
signalsstring[]Active signals (e.g. commission_growth)
total_commissionsintegerTotal commissions for this office ($)
commission_tierstringCommission tier band
total_premiumsintegerTotal premiums managed by this office ($)
number_of_officesintegerTotal offices for the parent broker
funding_mixstringSelf-funded vs fully insured mix
top_industriesobject[]Industry distribution of clients
top_carriersobject[]Top carrier relationships
employee_coveragestring[]Employee bands served
office_statesstring[]States this office covers

Broker fields

Basic (1.00 credits/row)

FieldTypeDescription
idstringBroker ID
broker_namestringBroker/brokerage name
brokerage_classstringnational player, regional player, or local broker
headquarters_citystringHQ city
headquarters_statestringHQ state
broker_dmastringHQ DMA
total_clientsintegerTotal client count
total_officesintegerTotal office count
websitestringBroker website
crm_statusstring[]CRM sync status

Advanced (2.00 credits/row) — requires advanced access

FieldTypeDescription
client_count_bandstringClient count band
filing_yearintegerFiling year
available_filingsstring[]Filing types
signalsstring[]Active signals
total_commissionsintegerTotal commissions ($)
total_premiumsintegerTotal premiums managed ($)
funding_mixstringSelf-funded vs fully insured mix
top_carriersobject[]Top carrier relationships
top_industriesobject[]Client industry distribution
employee_coveragestring[]Employee bands served
office_statesstring[]States with offices

Selecting fields manually

Use the fields parameter to request specific fields regardless of mode:

bash
GET /v1/companies?states=CA&fields=id,company_name,total_premiums,primary_broker

Requesting any advanced field triggers the advanced per-row credit cost. Requesting an advanced field with a basic-tier key returns 403.

Need a key?

Keys are issued by our team, not a signup form. Book a 25-minute walkthrough and you'll leave with sandbox and live credentials.