Python SDK Changelog

Release history for the brevo-python SDK.

May 14, 2026 — v5.0.0

Breaking changes

  • ⚠️ companies.get_companies(filters=...) — the filters keyword is renamed to filters_attributes_name. The old keyword is silently dropped, the request still succeeds, and the server returns an unfiltered list.
  • event.create_batch_events — keyword renamed request=events=; item types renamed in lockstep (CreateBatchEventsRequestItemCreateBatchEventsRequestEventsItem and 5 sub-types).
  • balance.get_contact_balances — new required balance_definition_id parameter.
  • balance.get_active_balances_api — response type replaced with GetLoyaltyBalanceProgramsPidActiveBalanceResponse (different shape).
  • balance.begin_transaction.event_timestrdatetime. Runtime-tolerant under skip_validation, but type-checkers will fail.
  • tasks.get_all_task_types — return type changed from GetCrmTasktypesResponse to List[GetCrmTasktypesResponseItem]. Old .id / .title access on the response fails (it’s a list now).
  • webhooks.create_webhookevents argument moved from required to optional. Positional callers break; switch to keyword arguments.
  • webhooks.*.message_id — type changed from int to str on history-fetch endpoints.
  • Response fields removed: GetAccountResponse.date_time_preferences, GetWebhook.channel, GetProcessResponseInfo.export.
  • Shape collapses: SendTransacSmsTag is now Union[str, List[str]] (was a pydantic model); GetExtendedCampaignStats.links_stats is now Dict[str, int] (was a pydantic class); ConversationsMessageAttachmentsItem: file_namename, inline_idlink.
  • 21 names removed from top-level from brevo import ... — most notably CreateBatchEventsRequestItem* (6 names), GetWebhookChannel, GetAccountResponseDateTimePreferences, GetExtendedCampaignStatsLinksStats, SendTransacSmsTagField, and UpsertrecordsRequestRecordsItemAssociationsItemZero/One* (8 names).

Added

  • New optional fields and filters across contacts.create_contact, contacts.update_contact, email_campaigns.get_email_campaigns, ecommerce.get_products, and several other endpoints.
  • Both Brevo (sync) and AsyncBrevo are affected symmetrically by every change above.

See the Upgrading from v4.x guide for migration details and a one-line rollback pin.

April 10, 2026 — v4.0.11

Fixed

  • Process endpointsduplicate_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.
  • Event endpointscontact_properties and event_properties now accept boolean values in create_event and create_batch_events.
  • Contact endpointsattributes now accepts plain integers in create_contact and update_contact.

March 25, 2026 — 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.
  • 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.

March 12, 2026 — 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.

February 23, 2026 — v4.0 beta release

Released a beta version of the Python SDK (v4.0) with native async support via AsyncBrevo, Pydantic-based typed models, automatic retries with exponential backoff, and custom httpx client support.

$pip install brevo-python

Key highlights

  • Unified client via Brevo(api_key="...") — no more manual configuration objects
  • Native async support with AsyncBrevo
  • Full type annotations for all request and response models
  • Raw response access via with_raw_response
  • 33 service namespaces covering the entire Brevo API