April 17, 2026

API specification overhaul: accuracy, completeness, and breaking corrections

This release reflects a major rework of the OpenAPI specification to bring it in line with actual API behavior. Some changes correct inaccuracies between the spec and the responses, some generated SDK types will change. See the breaking changes section before upgrading.

Breaking changes

These are corrections to the spec that reflect reality but will require updates to code relying on the previously incorrect types.

  • Process endpoints (GET /processes, GET /processes/{processId}) — Import info fields (invalid_emails, duplicate_contact_id, duplicate_ext_id, duplicate_email_id, duplicate_phone_id, duplicate_whatsapp_id, duplicate_landline_number_id) are now typed as string (URL to a CSV report) instead of integer. This corrects the type for all fields, not just duplicate_email_id which was previously patched.
  • Process endpoints — The following fields have been removed from the response schema as they are not returned by the API: error, created_at, completed_at, and info.export (with total_records and file_size).
  • Process endpointsGET /processes/{processId} 404 error code corrected from invalid_parameter to document_not_found.
  • Account endpoint (GET /account)dateTimePreferences object removed from the response schema (including timezone, timeFormat, dateFormat). startDate, endDate, and users removed from the required fields list in plan objects.
  • Webhooks — Event names corrected: listAdditionslistAddition, hardBounceshardBounce.
  • Feeds (GET /feeds, GET /feeds/{uuid})alias, isInternal, personalization, defaultAttr, and defaultContact fields removed from the response schema as they are not returned by the API.
  • Export webhook history (POST /webhooks/export)messageId field corrected from integer to string.
  • Domain creation (POST /senders/domains) — Domain name validation changed from a custom regex pattern to format: hostname.
  • Pagination minimumslimit minimum on GET /processes and maxRetries minimum on feed endpoints raised from 0 to 1.

Added

  • GET /account400 error response now documented.
  • Master account endpoints400 error responses now documented on GET /corporate/groups/{id}, GET /corporate/groups, GET /corporate/admin-users, GET /corporate/ips.
  • Webhook associations (PUT /crm/objects/{object_type}/records) — Associations now support an action field (link or unlink), enabling removal of associations in the same upsert request. Added three illustrative request body examples.
  • Marketing webhook eventscontactUpdated and contactDeleted added as supported event types for marketing webhooks.

Improved

  • Process endpointsinfo and export_url fields now clearly scoped: info is only returned for completed IMPORTUSER processes; export_url is only returned for SEARCH_EXPORT_USERS, SEARCH_EXPORT_USERS_API, CAMPAIGN_USER_DETAILS, and EXPORT_WEBHOOK process types.
  • Feeds — Auth fields (username, password, token) now documented as conditionally returned based on authType. cache default corrected to true.
  • Custom objects upsert — Significantly expanded description with upsert semantics, id vs ext_id behavior, attribute key vs label guidance, and async processing details.
  • Organization / User endpoints — Added descriptions to GET /organization/invited/users, PUT /organization/user/invitation/revoke/{email}, PUT /organization/user/invitation/{action}/{email}, GET /organization/user/{email}/permissions.
  • Sub-account deletionDELETE /corporate/subAccount/{id} now includes a description warning that deletion is permanent and unrecoverable.
  • Missing summaries — Added summary fields to several Senders, Domains, Webhooks, and Organization endpoints that previously had none.