March 25, 2026

SDK updates: Node.js v5.0.3, PHP v4.0.11, Python v4.0.9

New endpoints, new fields, and API improvements across all three SDKs.

Node.js — @getbrevo/brevo 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. Currently only supports custom events.
  • 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).

PHP — getbrevo/brevo-php v4.0.11

Added

  • $client->event->getEvents() — retrieve a paginated list of custom events with filters for contact, event name, object type, and date range. Currently only supports custom events.
  • $client->event->createBatchEvents() — track multiple contact interactions in a single request.
  • PatchCrmAttributesIdRequest — update a CRM attribute’s display label and option labels.
  • CreateUpdateProductRequest and batch product upsert now accept optional brand and description fields.
  • Balance: getActiveBalancesApi(), getContactBalances(), and getSubscriptionBalances() now accept includeInternal.
  • Balance: getTransactionHistory() now supports filtering by status and transactionType.

Improved

  • meta field on balance definition requests is now a typed class instead of a generic array.
  • metaInfo size limit for products clarified: maximum 20,000 characters total.
  • users field on GetAccountResponsePlanVerticalsItem is now nullable.

Fixed

  • createContact() no longer throws BrevoException: Failed to deserialize response: Syntax error on empty success responses.

Python — brevo-python v4.0.9

Added

  • client.event.get_events() — retrieve a paginated list of custom events with filters for contact, event name, object type, and date range. Currently only supports custom events.
  • client.event.create_batch_events() — track multiple contact interactions in a single request.
  • CreateUpdateProductRequest and batch product upsert now accept optional brand and description fields.
  • GetProductDetails response now includes brand and description.
  • Balance: get_active_balances_api(), get_contact_balances(), and get_subscription_balances() now accept include_internal.
  • Balance: get_transaction_history() now supports filtering by status and transaction_type.

Improved

  • meta field on balance definition requests is now a typed model with an is_internal flag.
  • metaInfo size limit for products clarified: maximum 20,000 characters total.
  • users field on plan verticals is now nullable.