March 12, 2026

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.

Node.js — @getbrevo/brevo 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.

PHP — getbrevo/brevo-php v4.0.10

Added

  • Batch events endpoint: $client->event->createBatchEvents() to track multiple contact interactions in a single request.
  • getEmailCampaign() accepts a new optional excludeHtmlContent flag to omit the HTML body from the response.

Fixed

  • UpdateContactRequest and CreateContactRequest: boolean values in union-typed attribute maps now serialize correctly. Previously threw JsonException: Cannot serialize value of type boolean.
  • Order::products: OrderProductsItem now exposes all product fields — price, productId, variantId, quantity, quantityFloat.
  • GetCampaignStats: appleMppOpens and opensRate are now correctly typed as nullable (?int, ?float).

Deprecated

  • sendTransacSms() — use sendAsyncTransactionalSms() instead.

Python — brevo-python v4.0.7

Fixed

  • GetCampaignStats: apple_mpp_opens and opens_rate are now correctly typed as nullable.
  • Order.products: all product fields are now accessible — price, product_id, variant_id, quantity, quantity_float.
  • create_contact(): correctly handles 204 No Content responses without raising a deserialization error.

Deprecated

  • transactional_sms.send_transac_sms() — use transactional_sms.send_transac_sms_async() instead.