Changelog
Changelog
Updates to the Hillwinds API. Subscribe via RSS for notifications.
August 2026
Identity integrity and writing-context contracts
- Identity detail reads now return a strong
ETag. Array replacements requireIf-Match; missing and stale preconditions return428and412respectively without applying the write. - Proof points are stored canonically in
proofPoints, legacy mirrors are de-duplicated, placeholder and unattributed content is excluded from writing selection, and no-op updates preserveupdated_at. - Identity list fields now use
companyNameandversionName. Version names include a· vNsuffix, and the identity schema now fully describes all nested arrays and structured objects. - Writing dry runs now use the same context-resolution path as real jobs, unscoped writing options return an explanatory warning, and
brandVoice.avoidis enforced during generation. - Single writing-play creation now returns
dataas an object. Explicit bulk play creation continues to return an array withmeta.bulk: true.
Personal Play temperature controls
- Added
GET,POST, andPATCH/v1/writing/temperatureso API users can read, set, or clear their own Personal Play temperature override. - Reads require
writing:read; updates requirewriting:write. The endpoint costs 0 credits and cannot target another user.
July 2026
V1 lookalike search
- New endpoint:
POST /v1/lookalikesreturns up to 50 ranked company, broker-office, or email-eligible personnel IDs from one to five seeds. - Entity-specific category weights are normalized before ranking. Company, broker-office, and privacy-safe personnel weight categories are documented in the API reference.
- Live requests cost exactly 1 credit per returned result. Sandbox results and all rejected, unavailable-seed, no-match, timeout, and failed requests cost 0 credits.
- Company searches require
read:companies, broker-office searches requireread:broker-offices, and personnel searches requireread:personnel.
Dynamic tags and Copywriter API parity
- Added full CRUD for dynamic Smart Filter definitions, writing plays, CTAs, and saved subject lines, including list and detail requests.
- Added asynchronous email and LinkedIn generation with saved, fully inline, and hybrid input modes plus automatic, specific, and disabled content selection.
- Writing generation now has configurable credit rates and idempotent charging. Internal test access can request model-token and estimated AI-cost diagnostics.
- Writing HTTP calls and background executions use the standard usage-log format, with dedicated writing-usage and internal AI-cost reports.
- Writing and identity job polling now supports cursor-optional bounded long polling. Identity job progress is monotonic, accepted identity jobs remain readable through a terminal state, and writing jobs now reserve credits when accepted and finalize charges only after successful completion. Failed, errored, and timed-out writing jobs release the reservation and settle to zero charged credits. Internal test access can force a failure to verify reservation-release accounting.
Company filtering by broker office
broker_office_idson/v1/companiesfilters by one or more broker office ids (comma-separated) on the samebroker_office_idforeign key asbroker_office=<id>, so counts match. Use it for the office → its clients join.primary_broker_officeon/v1/companiesis an office-name substring filter (e.g.MERCER - HOUSTON, TX). It is not comma-split — repeat the param for multiple names.
Personnel tags read paths
- New endpoint:
GET /v1/personnel/:id/tagsreturns the tags you've assigned to a contact. GET /v1/personnel/:id?mode=fullnow includes atagsfield, so a tag written viaPOST /v1/tagsis visible through every read path (thetags=filter, the tags corpus, and the record itself).
Broker office name alias
- Broker office responses now return
broker_office_nameas an alias ofoffice_name(same value), so consumers keyed on either name resolve.
Filter validation
- An explicitly empty column filter (
cf[column]=) now returns400VALIDATION_ERROR(issue: missing_value) instead of silently matching everything. Broker book-size numeric filters (cf[total_clients],cf[client_count],cf[total_premiums],cf[total_commissions]) apply theirgte:/lte:ranges correctly.
June 2026
Structured lead source attribution
lead_sourceon companies, personnel, broker offices, and brokers now returns{ source, retrieved_at }instead of a single formatted string.retrieved_atis ISO-8601 UTC and represents when the row was assembled for the response.
Docs audit + AI-agent improvements
- Base URL corrected in every code sample from
api.segmentstudio.comtoapi.hillwinds.ai(the canonical host). - New page:
/docs/for-ai-agents— anti-pitfall guide, recipe library, and a machine-readable endpoint index for LLMs / coding agents. - New page:
/docs/api/reports— documentsPOST /v1/reportsfor filing API bug reports from automation. - Tags:
POST /v1/tags/bulkbody shape documented;GET /v1/tags/entitiesdocumented; body field aliases (entity_type↔resource) called out. - Review flags:
/v1/review-flagsand/v1/data-flagsalias relationship documented; body field aliases (field↔field_key,issue↔reason) called out;corrections[]structured example added. - Filter options: three new sub-endpoints documented —
/v1/filter-options/{key},/v1/filter-options/{resource}, and/v1/filter-options/{resource}/{filter}. Industries, signals, job_function, and funding_status are now individually enumerable. - Autocomplete: response shape updated across resources — now returns
{ id, label, resource, value }. All four autocomplete resources return populated IDs. - llms.txt rewritten with the corrected host + agent-guide link;
llms-full.txtadded for context-window-friendly consumption. - Pitfall callouts added to companies / personnel / broker-offices / brokers pages for known quirks (broad-query gate, single-token search, lead_type polymorphism, seniority/job_function bucket reality, and broker matching vs primary).
- Implementation alignment: sandbox behavior, current API key scopes, tag/review-flag ownership, tag bulk limits, and response-mode gating now match the implemented v1 endpoints.
April 2026
API v1 launch
Initial public API release with:
- Phase 1 entities: Companies, Personnel, Broker Offices, and Brokers
- Basic/advanced field tiers with per-row credit costs
- Org-level credit pools with FIFO grant consumption
- Status, change, benchmarking, and predictive signals
- Sandbox environment (
ss_test_*) with isolated sandbox entity data - Flat-file mode for Clay and reverse-ETL integrations
- CSV export (sync up to 2,000 rows; async up to 50,000 on Enterprise)
- Tags and review flags
- OpenAPI 3.1 spec at
/v1/openapi.json - Interactive docs at
/v1/docs
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.