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 })— thefiltersparameter 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 (BalanceLimit→GetLoyaltyBalanceProgramsPidActiveBalanceResponse); request parameters renamed from snake_case to camelCase (contact_id→contactId,balance_definition_id→balanceDefinitionId,sort_field→sortField).client.balance.getContactBalances— new requiredbalanceDefinitionIdparameter.client.tasks.getCrmTasktypes— return type changed from a single object toGetCrmTasktypesResponseItem[].- Model fields removed:
GetWebhook.channel,GetProcessResponseInfo.export,GetEventsList.events[].source,GetExtendedCampaignOverview.utmIDActive(replaced byutmID: number). - Renamed:
ConversationsMessage.File.filename→name,.url→link;SendTransacSms.tagis nowstring | string[](was{ field?: ... }). - Now-required fields on type literals:
GetContactDetails.whatsappBlacklisted,Note.text,Task.date.
Added
BrevoClientaccepts a newauthoption for customAuthProviderinjection (existingapiKeycontinues 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 endpoints —
duplicate_email_idis now typed as a string (URL to a CSV file) instead of an integer. The legacyin_processstatus value is now handled correctly. - Event endpoints —
contact_propertiesandevent_propertiesnow accept boolean values increateEventandcreateBatchEvents. - Contact endpoints —
attributesnow accepts plain integers increateContactandupdateContact.
March 25, 2026 — v5.0.3
Added
client.event.getEvents()— retrieve a paginated list of custom events, filterable bycontact_id,event_name,object_type,startDate, andendDate.client.event.createBatchEvents()— send multiple events in a single request. Returns aBatchAcceptedResponsewith 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 tocompaniesordeals.GetProductDetailsresponse now includesbrandanddescription.CreateUpdateProductRequestand batch product upsert now accept optionalbrandanddescriptionfields.- Balance:
getActiveBalancesApi(),getContactBalances(), andgetSubscriptionBalances()now accept an optionalincludeInternalparameter. - Balance:
getTransactionHistory()now supports filtering bystatusandtransactionType.
Improved
metafield on balance definition requests is now a typed object ({ isInternal?: boolean }) instead of a genericRecord<string, unknown>.metaInfosize limit for products clarified: maximum 20,000 characters total.usersfield on plan verticals is now nullable (Item.Users | null).
March 12, 2026 — v5.0.1
Fixed
GetCampaignStats:appleMppOpensandopensRateare now typed asnumber | null. The API returnsnullwhen no data is available for the campaign period.Order.products: the full set of product fields is now exposed —price,productId,variantId,quantity, andquantityFloat. Previously onlyquantitywas available.GetAccountResponsePlanVerticalsItem.users: now typed as optional/nullable, matching API behavior on certain plan types.createContact(): no longer throws a JSON parse error on204 No Contentresponses (returned when a contact already exists).
Deprecated
transactionalSms.sendTransacSms()— usetransactionalSms.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.