Brevo CLI v2.0.0 — upgrade notice

The Brevo CLI (@getbrevo/cli) has a new major version, 2.0.0, which introduces breaking changes. If you are on v1.1.1 or earlier, migrate to 2.0.0 — some commands may not work as expected on older versions.

Upgrade:

$npm install -g @getbrevo/cli@latest
$# or
$yarn global add @getbrevo/cli@latest
$# or
$brew upgrade getbrevo/tap/brevo
improvedbreaking

Deals API — filter by owner, stage, and pipeline

GET /crm/deals now documents three additional query filters, so you can narrow results server-side instead of fetching every deal and filtering client-side:

  • filters[attributes.deal_owner] — filter by deal owner (pass the owner’s account email)
  • filters[attributes.deal_stage] — filter by stage (pass the stage ID)
  • filters[attributes.pipeline] — filter by pipeline (pass the pipeline ID)
improvedbreaking

Consent Groups API and Wallet pass install URLs

New endpoints and fields have been added to the API for managing consent groups and generating wallet pass installation URLs.

added

OAuth apps now support scopes

OAuth apps can now declare scopes — the specific permissions your app requests from a Brevo user. Scopes are shown to the user on the consent screen and embedded in the issued access token, so your integration only gets the access it actually needs.

added

Major SDK releases: Node.js v6.0.0, PHP v5.0.0, Python v5.0.0

We’ve released the next major version of our three official SDKs. These are opt-in major releases with breaking changes — your existing v4.x/v5.x integrations are not affected unless you upgrade.

addedbreaking

Deprecation Notice: POST /contacts/batch

Effective: 30 October 2026

The Update Multiple Contacts endpoint (POST /contacts/batch) will be deprecated on 30 October 2026. This endpoint is being replaced by the newer and more scalable POST /v3/contacts/import API.

deprecated

Contacts category attributes: valueStr field, and Ecommerce product search and alternative price

Breaking changes

  • Get contact attributes — The value (integer) field in category-type attribute enumerations now returns 0 for non-numeric values (e.g. language codes "en", "fr"). Previously these values may have been returned as distinct integers. Clients using value as a unique identifier for category enum items must migrate to the new valueStr field to correctly distinguish these entries.
addedbreaking

Coupons webhooks documentation

  • Marketing Webhooks — Added a new Coupons webhooks section documenting the unique_coupon_sent event. This event is triggered when a unique coupon code is sent to a contact from a coupon collection, enabling integrators to track coupon delivery, reconcile inventory, and sync coupon status into external systems.
added

Batch events body wrapper, contact merge ID response, and loyalty transaction filter

Breaking changes

  • Batch track events (POST /events/batch) — The request body schema has changed. The array of events must now be wrapped in an object under an events key. Previously accepted: [{...}, {...}]. Now required: {"events": [{...}, {...}]}. Additionally, event_name and identifiers are now explicitly marked as required fields on each event object.
addedbreaking

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.

improvedfixedbreaking

SDK bug fixes: Node.js v5.0.5, PHP v4.0.14, Python v4.0.11

Fixed

  • Process endpointsduplicate_email_id is now typed as a string (URL to a CSV file) instead of an integer. The legacy in_process status value is now handled correctly across all SDKs.
  • Event endpointscontact_properties and event_properties now accept boolean values in createEvent and createBatchEvents.
  • Contact endpointsattributes now accepts plain integers in createContact and updateContact. PHP users no longer need to cast integers to float.
fixed

SDK updates: Node.js v5.0.3, PHP v4.0.11, Python v4.0.9

New endpoints, new fields, and API improvements across all three SDKs.

addedimproved

Ecommerce, Events, and Loyalty API updates

Ecommerce — New product fields

Two new fields are now supported on the POST /products and POST /products/batch endpoints, as well as the GET /products/{id} response:

  • brand — Brand name of the product. String, max 128 characters. Example: "Adidas".
  • description — Description of the product. String, max 3000 characters. Example: "Shoes for sports".
addedimprovedbreaking

SDK updates: Node.js v5.0.1, PHP v4.0.10, Python v4.0.7

Bug fixes, type corrections, and a deprecation across all three SDKs.

improvedfixeddeprecated

Loyalty API guides

Added a new Loyalty section to the Guides tab with six pages covering the full Loyalty API integration workflow.

added

Batch event creation

Added POST /events/batch to the Events API. This endpoint allows sending multiple events in a single request, each with its own contact identifiers, event properties, and optional object associations.

The response supports partial success — if some events fail validation, the API returns a 207 status with a breakdown of successful and failed events, including per-event error messages.

added

Brevo MCP server — security and configuration update

The Brevo MCP server has been updated with improved security, simplified maintenance, and rate limiting.

What changed:

  • Authentication method: MCP tokens are no longer passed in the URL. They are now transmitted securely via the HTTP Authorization: Bearer <token> header. All previous URL patterns containing /{token} are no longer valid.
  • Auto-generated tools: The 193 MCP tools are now automatically generated from the Brevo OpenAPI specification, eliminating discrepancies between the API and MCP server.
  • Rate limiting: Request limits have been added to protect services from abuse.
  • New tool support: Integration guides now cover Windsurf, VS Code (GitHub Copilot), and Claude Code CLI in addition to Claude Desktop, Cursor, and Cline.
improved

Loyalty API: new endpoint and rate limits

New endpoint: DELETE /loyalty/config/programs/{pid}/contact/{cid}

Removes a contact from a loyalty program subscription. See the Loyalty API reference for details.

Rate limits: Loyalty endpoints now have documented rate limits across all account tiers.

EndpointsStarterBusinessEnterprise
GET /v3/loyalty/config
All endpoints under /v3/loyalty/{…}
600 RPH1,200 RPH3,600 RPH
addedimproved

Python SDK v4 beta release

We’ve released a beta version of the Python SDK (v4.0) with significant improvements including native async support via AsyncBrevo, Pydantic-based typed models, automatic retries with exponential backoff, and a custom httpx client support.

You can learn more on the dedicated guide here: https://developers.brevo.com/docs/api-clients/python

added

Conversations webhooks documentation update

Updated the Conversations webhooks documentation with new fields and corrections.

Message object — new fields:

  • rawUnsafeHtml — Raw unsanitized HTML of the message
  • subject — Email subject line (present for email-source conversations)
  • isSentViaJsApitrue for messages sent via the JS API
  • sourceMessageId — Original message ID from the source platform
  • from, to, replyTo, cc, bcc — Email conversation fields
  • isForwardtrue if the message is a forwarded message
improved