Node.js SDK Changelog
Release history for the @getbrevo/brevo Node.js SDK.
Release history for the @getbrevo/brevo Node.js SDK.
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 (BalanceLimit → GetLoyaltyBalanceProgramsPidActiveBalanceResponse); request parameters renamed from snake_case to camelCase (contact_id → contactId, balance_definition_id → balanceDefinitionId, sort_field → sortField).client.balance.getContactBalances — new required balanceDefinitionId parameter.client.tasks.getCrmTasktypes — return type changed from a single object to GetCrmTasktypesResponseItem[].GetWebhook.channel, GetProcessResponseInfo.export, GetEventsList.events[].source, GetExtendedCampaignOverview.utmIDActive (replaced by utmID: number).ConversationsMessage.File.filename → name, .url → link; SendTransacSms.tag is now string | string[] (was { field?: ... }).GetContactDetails.whatsappBlacklisted, Note.text, Task.date.BrevoClient accepts a new auth option for custom AuthProvider injection (existing apiKey continues to work unchanged).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.
duplicate_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.contact_properties and event_properties now accept boolean values in createEvent and createBatchEvents.attributes now accepts plain integers in createContact and updateContact.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.getActiveBalancesApi(), getContactBalances(), and getSubscriptionBalances() now accept an optional includeInternal parameter.getTransactionHistory() now supports filtering by status and transactionType.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).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).transactionalSms.sendTransacSms() — use transactionalSms.sendTransacSmsAsync() instead. The synchronous variant adds latency by waiting for carrier acknowledgment.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.