Releases: getbrevo/brevo-node
v5.0.4
Bug fixes
getProcess / getProcesses — duplicateEmailId field type corrected
- Changed from
numbertostring | nullto match the actual API response (a URL to a CSV file).
getProcess / getProcesses — in_process added to status union
- The API returns the legacy
in_processvalue alongside the documentedprocessing. - Both status types now include
"in_process".
createEvent / createBatchEvents — contact_properties and event_properties accept booleans
- Value type widened from
string | numbertostring | number | booleanto match the documented and actual API behaviour.
v5.0.3
v5.0.3
New features
Events
- Added
client.event.getEvents()— retrieve a paginated list of custom events, filterable bycontact_id,event_name,object_type,startDate, andendDate. Supportslimit(default 100, max 10,000) andoffsetfor pagination. Note: currently only supports custom events. - Added
client.event.createBatchEvents()— create multiple events in a single request using an array ofCreateBatchEventsRequestItem. Returns aBatchAcceptedResponsewith a confirmation message and queued event count.
Ecommerce
CreateUpdateProductRequestand batch product upsert now accept two new optional fields:brandanddescription.GetProductDetailsresponse now includesbrandanddescription.
Balance
getActiveBalancesApi(),getContactBalances(), andgetSubscriptionBalances()now accept an optionalincludeInternalparameter to include balances tied to internal definitions.getTransactionHistory()now supports filtering bystatus(draft, completed, rejected, cancelled, expired) andtransactionType(credit, debit). Parameter names normalised to camelCase (contactId,balanceDefinitionId,sortField).metafield onPostLoyaltyBalanceProgramsPidBalanceDefinitionsRequestandUpdateBalanceDefinitionRequestis now a typed object ({ isInternal?: boolean }) instead of a genericRecord<string, unknown>.
CRM
- Added
client.companies.deleteAnAttribute()— delete a CRM attribute by ID. - Added
PatchCrmAttributesIdRequestto update a CRM attribute's display label and selectable option labels, withobjectTypescoped tocompaniesordeals.
Changes
Account
usersfield on plan verticals is now nullable (Item.Users | null).
Ecommerce
metaInfosize limit for products clarified: maximum 20,000 characters total (previously documented as 1,000 KB / max 20 items).
v5.0.1
v5.0.1
Bug fixes & deprecations
Fixed: GetCampaignStats — nullable fields
appleMppOpens and opensRate are now typed as number | null instead of number.
The API can return null for these fields when no data is available for the campaign period. Previously, this caused a type error at runtime.
Fixed: Order.products — missing product fields
The products array on Order now exposes the full set of product fields: price, productId, variantId, quantity, and quantityFloat.
Previously, only quantity was available, preventing correct order import with product details.
Fixed: GetAccountResponsePlanVerticalsItem.users — nullable field
users is now typed as optional/nullable. The API returns null for this field on certain plan types.
Fixed: createContact — 204 empty body deserialization
createContact() no longer throws a JSON parse error when a contact already exists and the API responds with 204 No Content. The SDK now correctly handles the empty response body.
Deprecated: sendTransacSms
transactionalSms.sendTransacSms() is marked as @deprecated.
Use transactionalSms.sendTransacSmsAsync() instead. The synchronous variant adds latency by waiting for carrier acknowledgment. Remaining credits are not returned by the async variant by design; retrieve them via the account endpoints if needed.
v4.0.1
📦 Brevo Node.js SDK v4.0
Modernized, TypeScript-first rewrite of the Brevo Node.js client with improved ergonomics, reliability, and runtime support.
🚀 Highlights
- TypeScript-first SDK with full typings and autocomplete
- Single unified client (
BrevoClient) replaces multiple API classes - Built-in retries + timeouts
- Structured error handling
- Works across modern runtimes (Node 18+, Bun, Deno, Workers, RN)
- Legacy v3.x now maintenance-only
Added
New Client Architecture
- Introduced
BrevoClientas the single entry point - Namespaced APIs (e.g.,
brevo.transactionalEmails.*) - Cleaner, discoverable method structure
TypeScript Support
- First-class typings for requests and responses
- Better IDE autocomplete
- Stronger compile-time safety
Reliability Features
- Automatic retries with exponential backoff
- Honors
Retry-Afterheaders - Configurable global and per-request timeouts
Error Handling
- Typed error classes:
BadRequestErrorUnauthorizedErrorNotFoundError- etc.
- Easier branching and debugging vs generic errors
Advanced Configuration
- Custom
fetchsupport (e.g.,undici,node-fetch) - Custom headers
- Abort/cancel requests via
AbortController - Binary response support
Read more at https://developers.brevo.com/docs/api-clients/node-js
v3.0.1
- Update version in package.json and package-lock.json
Full Changelog: v3.0.0...v3.0.1
v3.0.0
What's Changed
- Update README.md by @mourraille in #59
- Update README.md by @mourraille in #60
- Replace the deprecated
requestpackage withaxiosby @shubhamUpadhyayInBlue in #63
New Contributors
- @mourraille made their first contribution in #59
Full Changelog: v2.5.0...v3.0.0
v2.5.0
Full Changelog: v2.4.0...v2.5.0
v2.4.0
What's Changed
- Revert "COAPI-1897 add new endpoints support" by @shubhamUpadhyayInBlue in #56
Full Changelog: v2.3.0...v2.4.0
v2.3.0
What's Changed
- COAPI-1897 add new endpoints support by @shubhamUpadhyayInBlue in #54
- Support for POST /v3/transactionalSMS/send endpoint
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
- COAPI-882 route update with new APIs and few fixes by @shubhamUpadhyayInBlue in #30
- Fix repository url in package.json by @ceisele-r in #31
- corporateSubAccountIpAssociatePostRequest
- corporateSubAccountIpDissociatePutRequest
- createPaymentResponse
- ecommerceAttributionMetricsConversionSourceConversionSourceIdGet200Response
- ecommerceAttributionMetricsGet200Response
- ecommerceAttributionMetricsGet200ResponseTotals
- ecommerceAttributionProductsConversionSourceConversionSourceIdGet200Response
- ecommerceConfigDisplayCurrencyGet200Response
- subAccountDetailsResponseGroupsInner
- subAccountDetailsResponsePlanInfoCreditsSms
- subAccountDetailsResponsePlanInfoCreditsWpSubscribers
- subAccountsResponseSubAccountsInnerGroupsInner
New Contributors
- @ceisele-r made their first contribution in #31
Full Changelog: v2.1.2...v2.2.0