Skip to content

Release: contacts runs, deprecation warnings, no-credentials 401 - #56

Merged
yudelevi merged 11 commits into
mainfrom
development
Nov 11, 2026
Merged

yudelevi merged 11 commits into
mainfrom
development

Conversation

@yudelevi

Copy link
Copy Markdown
Contributor

Ships the SDK and CLI changes for the API release that adds contacts runs and the Pay as you go free plan. Merge after that API release is live. Version bump and changelog heading still to set before merge.

  • client.contacts_run and contacts run CLI commands; old contact search deprecated with warnings from server Deprecation headers
  • ExtractResult drops language
  • Changelog note for the structured no-credentials 401
  • Client matches the development API spec

yudelevi and others added 11 commits October 30, 2026 10:21
The platform replaces one-shot contact search with a stepwise run:
find contacts, fill gaps with web search, review, then find emails
under a spending cap. SDK users need the same flow, including a wait
that can drive the steps but never spends on emails without a cap.

The old search, count and generate endpoints now carry a 2026-12-31
sunset, so their SDK methods warn and their CLI commands say so after
their output, keeping error stderr a single JSON object. Discover is
not part of that sunset and stays as is.

The run routes are hidden from the public OpenAPI schema, so their
request models are kept by hand and their routes skip the contract
check. suggested_email rides PENDING_PROPERTIES until dev serves it.
The API gained both fields on POST /contacts/run. They are optional and
left off the wire unless set, so the SDK still works against an API that
has not deployed them.
The API no longer refuses find_emails without a cap: the step bills per
result and stops when the account balance runs out, and a cap, when
given, still bounds the spend. wait(follow=True) keeps stopping before
find_emails when neither the run nor the call has a cap, so an
unattended follow never spends without one.
Hardcoded warnings needed an SDK release for every deprecation and
fired on each call, even without a request. The server now sends
Deprecation on retired routes, so the transport warns once per
endpoint and new deprecations reach existing SDK versions.
The API dropped steps and tightened validation, so the stepwise client would be rejected with 422 before it ever shipped.
contacts.count stays supported, so it no longer warns. Deprecation
warnings now come from the server's headers on every call and are
visible by default, so callers cannot miss a sunset.
The contract check against the platform's development spec failed on
the contacts run models, which still carried flat rows and internal
step fields the API stopped sending and lacked the progress, totals,
filters, email state and stop reason it now returns, and on discover
and count, which did not know valid_mx. Regenerating the request models
from that spec also picks up the larger server default for max_records
and clears suggested_email from PENDING_PROPERTIES now that the spec
carries it. ExtractResult.language stays for #55.
The API removes the field from /extract, so the contract check would
flag it once that release is live. Merge after the platform release.
The API release adding Pay as you go returns a structured 401 when a
request has no credentials. Port the changelog note and test from #48,
which still described the old $5-a-month allowance.
@yudelevi
yudelevi marked this pull request as ready for review November 11, 2026 00:23
@greptile-apps

greptile-apps Bot commented Nov 11, 2026

Copy link
Copy Markdown

Automatic reviews are disabled for this repository. Configure in Code Review Settings.

@yudelevi
yudelevi merged commit a0c9f6c into main Nov 11, 2026
15 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant