Hillwinds API
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 require If-Match; missing and stale preconditions return 428 and 412 respectively 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 preserve updated_at.
  • Identity list fields now use companyName and versionName. Version names include a · vN suffix, 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.avoid is enforced during generation.
  • Single writing-play creation now returns data as an object. Explicit bulk play creation continues to return an array with meta.bulk: true.

Personal Play temperature controls

  • Added GET, POST, and PATCH /v1/writing/temperature so API users can read, set, or clear their own Personal Play temperature override.
  • Reads require writing:read; updates require writing:write. The endpoint costs 0 credits and cannot target another user.

July 2026

V1 lookalike search

  • New endpoint: POST /v1/lookalikes returns 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 require read:broker-offices, and personnel searches require read: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_ids on /v1/companies filters by one or more broker office ids (comma-separated) on the same broker_office_id foreign key as broker_office=<id>, so counts match. Use it for the office → its clients join.
  • primary_broker_office on /v1/companies is 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/tags returns the tags you've assigned to a contact.
  • GET /v1/personnel/:id?mode=full now includes a tags field, so a tag written via POST /v1/tags is visible through every read path (the tags= filter, the tags corpus, and the record itself).

Broker office name alias

  • Broker office responses now return broker_office_name as an alias of office_name (same value), so consumers keyed on either name resolve.

Filter validation

  • An explicitly empty column filter (cf[column]=) now returns 400 VALIDATION_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 their gte:/lte: ranges correctly.

June 2026

Structured lead source attribution

  • lead_source on companies, personnel, broker offices, and brokers now returns { source, retrieved_at } instead of a single formatted string. retrieved_at is 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.com to api.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 — documents POST /v1/reports for filing API bug reports from automation.
  • Tags: POST /v1/tags/bulk body shape documented; GET /v1/tags/entities documented; body field aliases (entity_typeresource) called out.
  • Review flags: /v1/review-flags and /v1/data-flags alias relationship documented; body field aliases (fieldfield_key, issuereason) 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.txt added 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.