> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.brevo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.brevo.com/_mcp/server.

# 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 endpoints** — `GET /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: `listAdditions` → `listAddition`, `hardBounces` → `hardBounce`.
* **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 minimums** — `limit` minimum on `GET /processes` and `maxRetries` minimum on feed endpoints raised from `0` to `1`.

## Added

* **`GET /account`** — `400` error response now documented.
* **Master account endpoints** — `400` 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 events** — `contactUpdated` and `contactDeleted` added as supported event types for marketing webhooks.

## Improved

* **Process endpoints** — `info` 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 deletion** — `DELETE /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.