Wir prüfen täglich den Changelog und die OpenAPI-Spezifikation von Brevo, weil wir produktive Integrationen auf der Brevo API betreiben. Diese Seite listet die 92 Änderungen, die wir seit Beginn der Überwachung am 30. März 2026 erfasst haben, die neuesten zuerst.
Die Einträge geben die englischsprachigen Changelogs der Anbieter wieder und stehen deshalb auf Englisch.
Die letzte erfolgreiche Prüfung war am 6. Oktober 2026. Wir kümmern uns darum; bis dahin fehlen hier eventuell die neuesten Änderungen.
3 Breaking Changes und 0 Deprecations in der Brevo API in den letzten 90 Tagen. Zuletzt: „Loyalty transaction status renamed“ (3. September 2026).
Die Einordnung erfolgt automatisch. Prüfen Sie die Notiz des Anbieters, bevor Sie Aufwand einplanen.
Transaction status enum values changed from 'pending'/'complete' to 'draft'/'completed', requiring code updates for status checks.
Betrifft das eine Ihrer Integrationen? Wir übernehmen die Umstellung zum FestpreisGet subscription info endpoint response now includes loyalty program name, membership object, new reward fields (publicDescription, unit, value), and additional field names alongside IDs.
GET /loyalty/config/programs/{pid}/account-info response now includes loyalty program name, membership object, and enhanced reward fields with better naming guidance.
New endpoint GET /v3/objects/{object_type}/associated-records returns records associated with a single source record with filtering and pagination support.
brevo app create now writes base project first, then separately asks whether to scaffold the Test OAuth App; non-interactive runs stay base-only.
New 'brevo app upload' command replaces 'brevo app update' with diff preview; old command-line flags removed and app-config.json schema changed (redirectUrls→redirectUris, distribution→distribution_type).
Betrifft das eine Ihrer Integrationen? Wir übernehmen die Umstellung zum FestpreisNew 'brevo app scaffold' command allows setting up project folder for existing apps on new machines or after losing project files.
New 'brevo app scaffold --app-id' command sets up project directories for existing apps and supports interactive app selection.
Documentation updated to include alternativePrice field (float) for secondary pricing in product import endpoints.
Documentation added for passing external identifiers (EXT_ID) alongside email_id in identify() method.
Clarified documentation for per-recipient contactPixelTrackingConsent field behavior regarding open tracking consent and anonymization.
New optional fields utmCampaign, utmContent, and utmTerm allow customization of UTM tracking parameters in email campaigns.
New contactPixelTrackingConsent field added to transactional email endpoint to control whether recipient opens are tracked identifiably or anonymized.
Major CLI version 2.0.0 released with breaking changes; users on v1.1.1 or earlier must upgrade as some commands may not work as expected.
GET /crm/deals now supports three additional query filters: deal_owner, deal_stage, and pipeline for server-side filtering.
GET /crm/deals now documents three additional query filters: filters[attributes.deal_owner], filters[attributes.deal_stage], and filters[attributes.pipeline].
New endpoints and fields added for managing consent groups and generating wallet pass installation URLs.
OAuth apps can now declare scopes to specify permissions requested from Brevo users, shown on consent screen and embedded in access tokens.
Node.js v6.0.0, PHP v5.0.0, Python v5.0.0: Opt-in major SDK releases with breaking changes; existing v4.x/v5.x integrations unaffected unless upgraded.
POST /contacts/batch: POST /contacts/batch endpoint deprecated effective 2026-10-30, replaced by newer POST /v3/contacts/import API.
valueStr field, and Ecommerce product search and alternative price: GET /contacts/attributes now returns 0 for non-numeric category values; migrate to new valueStr field for unique identifier distinction.
valueStr field: GET /contacts/attributes now returns 0 for non-numeric category values; clients must migrate to new valueStr field for correct enum distinction.
Added documentation for new unique_coupon_sent marketing webhook event triggered when unique coupon codes are sent to contacts.
POST /events/batch request body schema changed; events array must now be wrapped under an 'events' key with event_name and identifiers marked as required.
Breaking change to POST /events/batch request body (now requires events wrapper), new getId field on contact creation, and new loyaltySubscriptionId filter parameter.
POST /events/batch request body schema changed from array format to wrapped object format with 'events' key; event_name and identifiers now explicitly required.
Added new `getId` field to POST /contacts endpoint that returns the surviving contact ID after merge when `getId: true` and `forceMerge: true` are set.
New `loyaltySubscriptionId` query parameter added to loyalty transaction history endpoint for filtering by specific subscription.
Breaking change: dateTimePreferences object (timezone, timeFormat, dateFormat) removed from GET /account response; startDate, endDate, users removed from required fields in plan objects.
accuracy, completeness, and breaking corrections: Major OpenAPI specification rework correcting inaccuracies between spec and actual API behavior; generated SDK types will change.
Changed domain name validation from custom regex pattern to `format: hostname` in domain creation endpoint.
POST /webhooks/export `messageId` field corrected from integer to string type.
Removed fields `alias`, `isInternal`, `personalization`, `defaultAttr`, and `defaultContact` from GET /feeds and GET /feeds/{uuid} responses as they are not returned by the API.
limit minimum on GET /processes and maxRetries minimum on feed endpoints raised from 0 to 1.
Breaking change: `GET /processes/{processId}` 404 error code corrected from `invalid_parameter` to `document_not_found`.
Breaking change: import `info` fields (invalid_emails, duplicate_contact_id, etc.) on process endpoints now return `string` (URL to CSV report) instead of `integer`.
Associations in PUT /crm/objects endpoint now support `action` field (`link` or `unlink`) enabling association removal in upsert requests.
Node.js, PHP, Python: Multiple SDK releases with fixes for process endpoint field types, event properties boolean handling, and contact attribute integer handling.
Node.js v5.0.5, PHP v4.0.14, Python v4.0.11: Bug fixes for process endpoints duplicate_email_id typing, event endpoints boolean value handling, and contact endpoints integer attribute handling.
balance filters: Balance endpoints now support includeInternal parameter and transaction history supports status and transactionType filters.
createContact fix: Fixed BrevoException on empty success responses from createContact().
Node.js v5.0.3, PHP v4.0.11, Python v4.0.9: Multiple SDK releases adding new endpoints (getEvents, createBatchEvents, deleteAnAttribute), new product fields (brand, description), balance API enhancements (includeInternal parameter, transaction filtering), and type improvements across all three SDKs.
Node.js v5.0.3, PHP v4.0.11, Python v4.0.9: New endpoints, fields, and API improvements across Node.js, PHP, and Python SDKs.
The `status` field in `207` partial success response renamed from `partialSuccess` to `partiallyQueued` in `POST /events/batch`.
Batch events 207 response status field renamed from `partialSuccess` to `partiallyQueued`.
POST /events/batch successful response changed from `204 No Content` to `202 Accepted` with JSON body containing message and event count.
New product brand and description fields with metaInfo limit changed to 20,000 characters; new GET /events endpoint; breaking changes to POST /events/batch response code (204→202) and status field rename (partialSuccess→partiallyQueued); Loyalty internal balance definitions and transaction filters added.
Added two new product fields (brand and description) to POST /products, POST /products/batch, and GET /products/{id} endpoints.
new GET endpoint: Added GET /events endpoint to retrieve events filtered by contact, name, object type, or date range with pagination.
Batch events breaking changes (response code and status field rename): POST /events/batch response code changed from 204 to 202 Accepted with JSON body; status field 'partialSuccess' renamed to 'partiallyQueued' in 207 responses - requires client code updates.
Added new `GET /events` endpoint to retrieve events filtered by contact, name, object type, or date range with pagination support.
internal balance definitions and transaction filters: Balance definitions and tier groups now support meta.isInternal flag; transaction history endpoint adds status and transactionType filters; offset parameter now represents page number instead of record skip count.
Transaction list filters: Transaction history endpoint now supports status and transactionType filters; offset parameter changed to represent page number instead of record skip count.
transaction history filtering by status and type: Transaction history endpoint now supports filtering by 'status' (draft, completed, rejected, cancelled, expired) and 'transactionType' (credit or debit); 'offset' now represents page number instead of record skip.
internal balance definitions and tier groups: Balance definitions and tier groups now support meta object with isInternal flag; includeInternal query parameter added to balance and member endpoints.
Added `status` and `transactionType` filters to loyalty transaction history; `offset` parameter now represents page number instead of record skip.
New `brand` and `description` fields added to product endpoints; metaInfo character limit changed from 1000 KB to 20,000 characters.
brand and description: Added `brand` (128 chars) and `description` (3000 chars) fields to products endpoints; updated `metaInfo` limit from 1000 KB to 20,000 characters.
Product `metaInfo` field size limit changed from 1000 KB to 20,000 characters total across all keys and values.
synchronous transactional SMS methods: Deprecated sendTransacSms() methods across Node.js, PHP, and Python SDKs in favor of async variants (sendTransacSmsAsync/sendAsyncTransactionalSms).
transactional SMS synchronous methods: Synchronous SMS methods (sendTransacSms/send_transac_sms) deprecated in favor of async variants across Node.js, PHP, and Python SDKs.
transactionalSms deprecation: sendTransacSms() deprecated in favor of sendTransacSmsAsync() to reduce latency.
Full set of product fields now exposed in Order responses: `price`, `productId`, `variantId`, `quantity`, `quantityFloat`.
Deprecated sendTransacSms() method: sendTransacSms() deprecated in favor of sendAsyncTransactionalSms().
transactionalSms deprecation: send_transac_sms() deprecated in favor of send_transac_sms_async().
createContact() across Node.js, PHP, Python SDKs now correctly handles 204 No Content responses without JSON parse errors.
Fixed appleMppOpens and opensRate to nullable types; exposed full product fields (price, productId, variantId, quantity, quantityFloat) on orders across all SDKs.
Node.js v5.0.1, PHP v4.0.10, Python v4.0.7: Type corrections for nullable fields, Order product fields exposure, deprecation of synchronous sendTransacSms() in favor of async variant, and contact creation error handling fixes.
Node.js v5.0.1, PHP v4.0.10, Python v4.0.7: Bug fixes, type corrections, and deprecations across all three official SDKs.
Deprecated sendTransacSms() and transactional_sms.send_transac_sms() methods; use async variants instead.
Deprecated synchronous `sendTransacSms()` methods across all SDKs; recommend using async variants instead.
Added new Loyalty section to Guides with six pages covering full Loyalty API integration workflow.
Added comprehensive six-page Loyalty section covering program setup, member enrollment, transactions, and best practices.
Added POST /events/batch endpoint allowing multiple events in a single request with partial success support via 207 status response.
Added POST /events/batch endpoint allowing multiple events per request with partial success support (207 status) and per-event error messages.
Breaking change: MCP tokens now transmitted via Authorization header instead of URL; authentication method changed and 193 tools auto-generated from OpenAPI spec.
Breaking change: MCP tokens moved from URL paths to HTTP `Authorization: Bearer <token>` header; all URL-based token patterns are no longer valid.
MCP tokens now transmitted via Authorization Bearer header instead of URL path; previous URL patterns no longer valid.
MCP tools now auto-generated from OpenAPI spec eliminating discrepancies; rate limiting added for abuse protection; support expanded for Windsurf, VS Code Copilot, and Claude Code CLI.
new endpoint and rate limits: New DELETE /loyalty/config/programs/{pid}/contact/{cid} endpoint removes contact from loyalty program; documented rate limits added for all account tiers.
new endpoint and rate limits: New DELETE endpoint to remove contacts from loyalty programs; rate limits now documented across account tiers.
Loyalty endpoints now have documented rate limits: 600 RPH (Starter), 1,200 RPH (Business), 3,600 RPH (Enterprise).
New PHP SDK v4 with unified Brevo client, strongly typed objects, PSR-18 HTTP client support, automatic retries, and structured error handling.
Beta release of Python SDK v4.0 with native async support, Pydantic-based typed models, automatic retries with exponential backoff, and custom httpx client support.
New fields and corrections: Added rawUnsafeHtml, subject, isSentViaJsApi, sourceMessageId, email fields, isForward to Message; added mimeType, isInline, inlineId to Attachment; added isBanned to Visitor; renamed imageInfo.previewUrl to previewLink.
imageInfo.previewUrl renamed: Field imageInfo.previewUrl renamed to imageInfo.previewLink in conversation transcript payload.
Added new fields to Message, Attachment, and Visitor objects; renamed imageInfo.previewUrl to imageInfo.previewLink.
Updated Conversations webhooks documentation with new message fields including rawUnsafeHtml, subject, isSentViaJsApi, sourceMessageId, email headers, and isForward.
Renamed imageInfo.previewUrl to imageInfo.previewLink and updated preview URL quality parameter from 'lighter' to 'better'.
Released Node.js SDK v4.0.1 beta with promise-based API, enhanced TypeScript types, standardized error handling, and improved retry logic.
Added dedicated rate limits for POST /v3/orders/status and POST /v3/products endpoints that differ from default limits.
Added documentation for connecting Brevo API to Cursor IDE via MCP server for direct API documentation access.
Unterschiede zwischen aufeinanderfolgenden Versionen der veröffentlichten OpenAPI-Spezifikation von Brevo, ermittelt mit oasdiff. Aufgeführt sind nur Änderungen, die bestehende Clients brechen oder brechen können.
POST /loyalty/balance/programs/{pid}/transactions added the new 'completed' enum value to the 'status' response property for the response status '200' POST /loyalty/balance/programs/{pid}/transactions added the new 'draft' enum value to the 'status' response property for the response status '200' POST /loyalty/balance/programs/{pid}/transactions/{tid}/cancel added the new 'completed' enum value to the 'status' response property for the response status '200' POST /loyalty/balance/programs/{pid}/transactions/{tid}/cancel added the new 'draft' enum value to the 'status' response property for the response status '200' POST /loyalty/balance/programs/{pid}/transactions/{tid}/complete added the new 'completed' enum value to the 'status' response property for the response status '200' POST /loyalty/balance/programs/{pid}/transactions/{tid}/complete added the new 'draft' enum value to the 'status' response property for the response status '200' POST /events/batch added the new required request property 'events' POST /events/batch the request's body type/format changed from 'array'/'' to 'object'/'' POST /objects/{object_type}/batch/upsert added the new required request property 'records/items/oneOf[subschema #1]/associations/items/object_type' POST /objects/{object_type}/batch/upsert added the new required request property 'records/items/oneOf[subschema #1]/associations/items/records' POST /objects/{object_type}/batch/upsert the 'records/items/oneOf[subschema #1]/associations/items/' request property type/format changed from ''/'' to 'object'/'' GET /categories the 'categories/items/allOf[#/components/schemas/getCategoryDetails]/isDeleted' response's property type/format changed from 'boolean'/'string' to 'boolean'/'' for status '200' POST /categories the 'id' request property type/format changed from 'string'/'email' to 'string'/'' POST /categories the 'id' response's property type/format changed from 'integer'/'int64' to 'string'/'' for status '201' POST /categories/batch the 'categories/items/id' request property type/format changed from 'string'/'email' to 'string'/'' GET /categories/{id} the 'isDeleted' response's property type/format changed from 'boolean'/'string' to 'boolean'/'' for status '200' GET /contacts for the 'query' request parameter 'limit', the min was increased from '0.00' to '1.00' GET /contacts/lists/{listId}/contacts for the 'query' request parameter 'limit', the min was increased from '0.00' to '1.00' GET /contacts/segments the 'segments/items/categoryName' response's property type/format changed from 'string'/'string' to 'string'/'' for status '200' POST /conversations/agentOnlinePing the 'agentEmail' request property type/format changed from ''/'' to 'string'/'email' POST /conversations/agentOnlinePing the 'agentId' request property type/format changed from ''/'' to 'string'/'' POST /conversations/agentOnlinePing the 'agentName' request property type/format changed from ''/'' to 'string'/'' POST /conversations/agentOnlinePing the 'receivedFrom' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'agentEmail' request property type/format changed from ''/'' to 'string'/'email' POST /conversations/messages the 'agentId' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'agentName' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'receivedFrom' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'text' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'visitorId' request property type/format changed from ''/'' to 'string'/'' POST /conversations/messages the 'attachments/items/isInline' response's property type/format changed from 'string'/'' to 'boolean'/'' for status '200' GET /conversations/messages/{id} the 'attachments/items/isInline' response's property type/format changed from 'string'/'' to 'boolean'/'' for status '200' PUT /conversations/messages/{id} the 'attachments/items/isInline' response's property type/format changed from 'string'/'' to 'boolean'/'' for status '200' POST /conversations/pushedMessages the 'agentId' request property type/format changed from ''/'' to 'string'/'' POST /conversations/pushedMessages the 'groupId' request property type/format changed from ''/'' to 'string'/'' POST /conversations/pushedMessages the 'text' request property type/format changed from ''/'' to 'string'/'' POST /conversations/pushedMessages the 'visitorId' request property type/format changed from ''/'' to 'string'/'' Wir beobachten Brevo, weil wir Integrationen darauf betreiben. Hängt eine Ihrer Integrationen an Brevo, übernehmen wir sie: sauber gebaut, dauerhaft betrieben und angepasst, wenn Brevo etwas ändert, bevor Ihre Daten betroffen sind. Festpreisangebot innerhalb von 48 Stunden.