Changelog

API and SDK version history.

v0.6.0 — February 2026

Breaking changes to improve API consistency and pagination.

Response envelope

  • All responses now include an object field indicating the resource type
  • Collections use "data" key instead of named keys (jobs, bulk_jobs, lists, items)
  • success and error fields removed from enrichment and sequence responses

Cursor-based pagination

  • offset parameter replaced with starting_after (ID-based cursor)
  • total removed from list responses (use has_more to check for more results)

Webhook event types

  • New event_types field on webhook registration for selective subscriptions
  • Webhook payloads now use structured event envelope format with id, type, created_at, data
  • 7 event types: research.completed, research.failed, bulk.completed, bulk.failed, list.analyzed, list.failed, watchlist.change_detected

SDK changes

  • Version bumped to 0.6.0
  • All list_* methods: offset parameter replaced with starting_after
  • Iterators now use cursor-based advancement
  • register_webhook() accepts event_types parameter
  • New WebhookEvent resource class

Migration guide

# Before (v0.5.0)
page = client.list_research(limit=10, offset=0)
for job in page["jobs"]:
    print(job["job_id"])

# After (v0.6.0)
page = client.list_research(limit=10)
for job in page["data"]:
    print(job["job_id"])

# Or use the iterator (handles pagination automatically)
for job in client.iter_research(limit=10):
    print(job["job_id"])

v0.5.0 — January 2026

  • Rate limit headers (X-RateLimit-*)
  • Request ID in error responses
  • SDK error subclasses (AuthenticationError, RateLimitError, etc.)
  • Webhook signature verification helper
  • Bulk job polling helper

v0.4.0 — January 2026

  • Watchlist endpoints for recurring research
  • Team management endpoints
  • Enrichment contact endpoint