Node.js SDK Changelog

Release history for the @getbrevo/brevo Node.js SDK.

May 14, 2026 — v6.0.0

Breaking changes

  • ⚠️ client.companies.getCompanies({ filters }) — the filters parameter is renamed to the bracketed literal "filters[attributes.name]". The old name still compiles but the filter is silently dropped server-side and you get an unfiltered list.
  • client.event.createBatchEvents — events are now wrapped in { events: [...] } instead of being passed as a raw array.
  • client.balance.getActiveBalancesApi — response type replaced (BalanceLimitGetLoyaltyBalanceProgramsPidActiveBalanceResponse); request parameters renamed from snake_case to camelCase (contact_idcontactId, balance_definition_idbalanceDefinitionId, sort_fieldsortField).
  • client.balance.getContactBalances — new required balanceDefinitionId parameter.
  • client.tasks.getCrmTasktypes — return type changed from a single object to GetCrmTasktypesResponseItem[].
  • Model fields removed: GetWebhook.channel, GetProcessResponseInfo.export, GetEventsList.events[].source, GetExtendedCampaignOverview.utmIDActive (replaced by utmID: number).
  • Renamed: ConversationsMessage.File.filenamename, .urllink; SendTransacSms.tag is now string | string[] (was { field?: ... }).
  • Now-required fields on type literals: GetContactDetails.whatsappBlacklisted, Note.text, Task.date.

Added

  • BrevoClient accepts a new auth option for custom AuthProvider injection (existing apiKey continues to work unchanged).
  • New optional fields and filters across contacts.createContact, contacts.updateContact, emailCampaigns.getEmailCampaigns, ecommerce.getProducts, and several other endpoints.

See the Upgrading from v5.x guide for migration details and a one-line rollback pin.

April 10, 2026 — v5.0.5

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.
  • Event endpointscontact_properties and event_properties now accept boolean values in createEvent and createBatchEvents.
  • Contact endpointsattributes now accepts plain integers in createContact and updateContact.

March 25, 2026 — v5.0.3

Added

  • client.event.getEvents() — retrieve a paginated list of custom events, filterable by contact_id, event_name, object_type, startDate, and endDate.
  • client.event.createBatchEvents() — send multiple events in a single request. Returns a BatchAcceptedResponse with a confirmation message and queued event count.
  • client.companies.deleteAnAttribute() — delete a CRM attribute by ID.
  • PatchCrmAttributesIdRequest — update a CRM attribute’s display label and selectable option labels, scoped to companies or deals.
  • GetProductDetails response now includes brand and description.
  • CreateUpdateProductRequest and batch product upsert now accept optional brand and description fields.
  • Balance: getActiveBalancesApi(), getContactBalances(), and getSubscriptionBalances() now accept an optional includeInternal parameter.
  • Balance: getTransactionHistory() now supports filtering by status and transactionType.

Improved

  • meta field on balance definition requests is now a typed object ({ isInternal?: boolean }) instead of a generic Record<string, unknown>.
  • metaInfo size limit for products clarified: maximum 20,000 characters total.
  • users field on plan verticals is now nullable (Item.Users | null).

March 12, 2026 — v5.0.1

Fixed

  • GetCampaignStats: appleMppOpens and opensRate are now typed as number | null. The API returns null when no data is available for the campaign period.
  • Order.products: the full set of product fields is now exposed — price, productId, variantId, quantity, and quantityFloat. Previously only quantity was available.
  • GetAccountResponsePlanVerticalsItem.users: now typed as optional/nullable, matching API behavior on certain plan types.
  • createContact(): no longer throws a JSON parse error on 204 No Content responses (returned when a contact already exists).

Deprecated

  • transactionalSms.sendTransacSms() — use transactionalSms.sendTransacSmsAsync() instead. The synchronous variant adds latency by waiting for carrier acknowledgment.

February 11, 2026 — v4.0.1 beta release

Released a beta version of the Node.js SDK (v4.0.1) with a promise-based API, enhanced TypeScript types, standardized error handling, and improved retry logic.

$npm install @getbrevo/brevo@^4.0.1