Brevo's marketing and CRM platform. Manage contacts, lists and segments, build and send email, SMS and WhatsApp campaigns, read campaign performance, and work CRM deals, companies, tasks and pipelines. Also covers senders, domains, templates and sub-account administration.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
Retrieves details of your Brevo account. **Use this to:** - Get account information (email, name, company, address) - Check plan details (type, credits, expiration) - Get relay information (for transactional emails) - Check Marketing Automation status - Access organization and user identifiers **Key information returned:** - Complete account details (organization ID, user ID, company information) - Address and contact information - Plan configurations and credit allocations across different verticals - Marketing Automation settings and tracker key (when enabled) - SMTP relay configuration for transactional emails - Enterprise features availability status **Important considerations:** - Provides comprehensive account overview for billing and configuration management - Essential for understanding current plan limitations and feature availability - Marketing Automation key is only returned when Marketing Automation is enabled on the account - Plan verticals show detailed breakdown across Marketing, Chat, and CRM categories (only returned when plan verticals are available) - Relay configuration crucial for transactional email setup and deliverability - Enterprise status determines access to advanced features and sub-account management
This endpoint allows you to list all Admin users of your Admin account. You can filter users by type (active or pending) and paginate results using offset and limit.
Retrieves the list of all active dedicated IPs available on the corporate admin account. Each IP entry includes the IP address, associated domain, and whether it is configured for transactional email sending.
Retrieves comprehensive details of the corporate master account, including company information, billing details, current plan configuration with feature quotas, and timezone settings. This endpoint is only accessible by the master account owner.
Generates a Single Sign-On (SSO) token that allows authentication to the corporate admin account without requiring a separate login. The generated token is valid for 15 days and can be used via the URL https://account-app.brevo.com/account/login/corporate/sso/[token]. The email must belong to a valid admin user of the account.
Retrieves a paginated list of all sub-accounts under the corporate master account. Each sub-account entry includes company name, creation date, active status, and group memberships. Use `offset` and `limit` parameters for pagination.
Creates a new sub-account under the corporate master account. The sub-account will be provisioned with the specified company name and email address. Optionally, you can assign the sub-account to one or more groups and set language and timezone preferences.
Associates a dedicated IP address with one or more sub-account organizations. This allows the specified sub-accounts to use the dedicated IP for sending emails. Both the IP address and a list of sub-account IDs are required.
Removes the association of a dedicated IP address from one or more sub-account organizations. After dissociation, the specified sub-accounts will no longer be able to use this dedicated IP for sending emails. Both the IP address and a list of sub-account IDs are required.
Generates a new API v3 key for a specific sub-account organization. Both the sub-account ID and a name for the API key are required. The generated key is returned in the response and should be stored securely, as it cannot be retrieved again after creation.
Generates a Single Sign-On (SSO) token that allows the master account to authenticate directly into a sub-account without requiring separate login credentials. The generated token is valid for 15 days and can be used via the URL https://account-app.brevo.com/account/login/sub-account/sso/[token]. Optionally, specify a `target` or `url` to redirect the user to a specific page after login.
Permanently deletes a sub-account from the corporate master account. Once deleted, all data associated with the sub-account organization is removed and cannot be recovered, so ensure the sub-account is no longer needed before proceeding.
Retrieves detailed information about a specific sub-account including company name, contact email, group memberships, and comprehensive plan details with credit quotas and feature allocations. The plan information shows both the allocated quantity and remaining availability for each credit type and feature.
Enables or disables specific applications for a sub-account organization. Each application can be toggled independently using boolean values. Available applications include email campaigns, SMS campaigns, landing pages, automation, conversations, CRM, transactional emails/SMS, WhatsApp, web push, meetings, inbox, and Facebook ads.
Updates the plan configuration for a specific sub-account, including credit allocations (email, SMS, WhatsApp, push) and feature quotas (users, landing pages, inbox, sales users). On Corporate solution v2 (ENTv2), you can set unlimited credits by passing -1 as the value.
Updates the plan configuration for multiple sub-accounts at once with the same credit allocations and feature quotas. This is useful for applying consistent plan settings across a batch of sub-accounts. On Corporate solution v2 (ENTv2), you can set unlimited credits by passing -1.
Invites a new member to manage the Admin (master) account by sending an invitation email. The invitation specifies which features and permission levels the invited user will have. If `all_features_access` is set to `true`, the user receives full permissions on all features and the `privileges` array is ignored. If set to `false`, you must provide the `privileges` array detailing which features and permission levels to grant. Available features and their permissions: - `my_plan`: "all" - `api`: "none" - `user_management`: "all" - `app_management` (not available in ENTv2): "all" - `sub_organization_groups`: "create", "edit_delete" - `create_sub_organizations`: "all" - `manage_sub_organizations`: "all" - `analytics`: "download_data", "create_alerts", "my_looks", "explore_create" - `security`: "all" Optionally, you can assign the invited user to one or more groups by providing `groupIds`.
Allows you to resend or cancel a pending invitation for an admin user. Use the `resend` action to send a new invitation email to the recipient, or the `cancel` action to revoke the pending invitation entirely. The action is specified as a path parameter and must be either `resend` or `cancel`.
Revokes access for an invited admin user on the corporate master account. Once revoked, the user will no longer be able to access the admin account or manage any sub-accounts. This action is permanent and the user would need to be re-invited to regain access.
Retrieves the granular feature-level permissions assigned to a specific admin user, identified by their email address. The response includes the user's current status (active or pending), the groups they belong to, and a detailed breakdown of feature access permissions. This endpoint can be used to audit user access or verify permissions before making changes.
Updates the feature-level permissions for an existing admin user of your master account, identified by their email address. If `all_features_access` is set to `true`, the user receives full permissions on all features and the `privileges` array is ignored. If set to `false`, you must specify the `privileges` array with the desired feature permissions. Only the permissions provided are updated.
Retrieves user activity logs from your organization for security monitoring and audit compliance. Use this to: - Monitor user login activities and access patterns - Track account modifications and configuration changes - Generate security audit reports and compliance documentation - Investigate suspicious activities and unauthorized access - Monitor team member actions and account usage Key information returned: - Complete user activity details and timestamps - User identification (email, IP address, browser) - Action types and activity descriptions - Security-relevant events and access logs - Historical activity data for audit trails Note: Requires Enterprise plan for access to organization activity logs.
Retrieve all contact attributes defined in your Brevo account, grouped by category (normal, transactional, category, calculated, global). Each attribute includes its name, type, and category, along with enumeration values for category-type attributes and options for multiple-choice-type attributes.
Permanently delete an existing contact attribute by its category and name. The attribute must exist in the specified category (normal, transactional, category, calculated, or global), otherwise a 404 error is returned.
Create a new contact attribute under the specified category and name. The required body properties depend on the category: use "type" for normal, transactional, or category attributes; use "value" for calculated or global attributes; use "enumeration" for category attributes; and use "multiCategoryOptions" for normal multiple-choice attributes. None of the category or multicategory option values can exceed 200 characters.
Update an existing contact attribute identified by its category and name. For category-type attributes, you can update the enumeration values; for calculated or global attributes, update the computed value formula; and for normal multiple-choice attributes, update the multicategory options. None of the category or multicategory option values can exceed 200 characters.
Delete a specific option from an existing multiple-choice contact attribute. The attribute type must be "multiple-choice", and both the attribute name and the option to delete must already exist in your account.
Create a new custom attribute for companies or deals. The attribute label must be unique within the object type, cannot exceed 50 characters, and cannot use reserved names. For `single-select` or `multi-choice` attribute types, you must also provide the `optionsLabels` array.
Delete an existing custom attribute by its identifier. This permanently removes the attribute definition and cleans up all references to it across companies or deals. System-default and non-editable attributes cannot be deleted.
Update an existing custom attribute's label or options. You can rename the attribute label or modify the available options for `single-select` and `multi-choice` attribute types. System-default attributes cannot be modified except for specific editable fields.
Retrieve the list of all attributes defined for companies, including both system-default and custom attributes. Each attribute includes its label, internal name, type, and available options for select-type attributes. Some system attributes such as activity tracking fields are excluded from the response.
Retrieve the list of all attributes defined for deals, including both system-default and custom attributes. Each attribute includes its label, internal name, type, required status, and available options for select-type attributes. Some system attributes such as activity tracking fields are excluded from the response.
Retrieve the results of an A/B test email campaign, including the winning version, open and click rates, and per-version statistics. The campaign must have A/B testing enabled; if the campaign is still in draft and has not been scheduled, an empty response is returned. If the campaign is scheduled but not yet sent, the winningVersion will be "notAvailable".
Retrieve aggregated transactional email statistics (requests, delivered, opens, clicks, bounces, spam reports, blocked, invalid, unsubscribed) for a specified time period. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (positive integer, max 90, not compatible with date range), or by `tag`. If no date filter is provided, the report defaults to the past 90 days. The maximum time span (whether via date range or `days`) cannot exceed 90 days. Neither date can be in the future.
Retrieve a paginated list of individual transactional email event records (unaggregated), including event type, recipient email, sender, message ID, subject, timestamp, tag, template ID, and contextual fields like IP address, link, and bounce reason where applicable. If no date filter is provided, the report defaults to the past 30 days. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (positive integer, max 90, not compatible with date range), or by `email`, `event` type, `tags`, `messageId`, or `templateId`. The maximum time span cannot exceed 90 days. Results default to 2500 per page (max 5000) and are sorted in descending order unless overridden.
Retrieve a day-by-day breakdown of transactional email statistics (requests, delivered, opens, unique opens, clicks, unique clicks, hard bounces, soft bounces, spam reports, blocked, invalid, unsubscribed) for a specified time period. If no date filter is provided, the report defaults to the past 10 days. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (positive integer, max 30, not compatible with date range), or by `tag`. The maximum time span cannot exceed 30 days. Results default to 10 per page (max 30) and are sorted in descending order unless overridden with the `sort` parameter.
Retrieve a paginated list of all ecommerce categories stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by category IDs, name, modification date, creation date, or deletion status. The response includes a `count` field with the total number of matching categories, and pagination defaults to 50 categories per page (maximum 100).
Create a new ecommerce category or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is set to `false` (the default), the endpoint performs an insert and returns `201`; if the category ID already exists, a `400` error is returned. When `updateEnabled` is `true`, the endpoint performs an upsert, returning `201` for a new category or `204` when an existing category is updated. The `name` field is mandatory for creation but optional for updates.
Create or update multiple ecommerce categories in a single request. The `categories` array accepts up to 100 category objects, each requiring a unique `id`. When `updateEnabled` is `false` (the default), all categories are inserted as new; if any ID already exists, a `400` error is returned. When `updateEnabled` is `true`, existing categories are updated and new ones are created via upsert. Duplicate IDs within the same request payload are rejected. The response returns the count of created and updated categories.
Retrieve the full details of a single ecommerce category by its unique ID. The response includes the category name, URL, creation and modification timestamps, and deletion status. Returns a `404` error if no category matches the provided ID.
Retrieve a paginated list of companies with optional filtering, sorting, and search capabilities. Results are sorted by creation date in descending order by default with a default page of 1 and limit of 50. Companies can be filtered by attributes, linked contacts, linked deals, or modification/creation timestamps.
Create a new CRM company with the specified name, attributes, and optional associations to contacts and deals. The company name is required, and you can optionally provide a country code when a phone number attribute is included.
Import companies in bulk from a CSV file with configurable mapping options. The CSV file must have the first row as column headers matching attribute internal names. You can control whether to link or unlink related entities, update existing records based on company ID, and clear attributes when the import value is blank using the mapping options.
Link or unlink contacts and deals with a specific company in a single request. You can simultaneously link new contacts/deals and unlink existing ones by providing the respective ID arrays in the request body. At least one of the four arrays must contain values. Contacts to be unlinked must already be associated with the company, otherwise the request is rejected.
Permanently delete a company by its identifier. The requesting user must be the company owner or have manage permission on companies; otherwise, a 403 Forbidden error is returned.
Retrieve the full details of a single company by its identifier, including its attributes, linked contacts, and linked deals. Returns a 404 error if the company does not exist, or a 403 error if the user lacks permission to view the company.
Update an existing company's attributes, name, linked contacts, or linked deals. Note that passing `linkedContactsIds` or `linkedDealsIds` replaces the entire list of associations, so omitted IDs will be removed. The company name cannot be set to an empty string.
Update multiple contacts in a single API call by passing an array of contact objects, with a maximum of 100 contacts per request. Each contact in the array must be identified by exactly one of: email, id, or sms. Using multiple identifiers for the same contact, or passing duplicate contacts, will result in a 400 error. You can update attributes, blacklist status, list memberships, ext_id, and transactional email forbidden senders. The maximum length for any single attribute value is 50,000 characters. If listIds and unlinkListIds contain overlapping IDs for the same contact, the request is rejected.
Create a contact using the Double Opt-In (DOI) flow. A confirmation email is sent to the provided email address using the specified DOI template. The contact is only fully created after the recipient clicks the confirmation link. Required fields are email, includeListIds, templateId, and redirectionUrl. The templateId must reference an active DOI template. Include and exclude list IDs must not overlap. The email address cannot exceed 254 characters. If a SMS attribute is provided, it must be a valid phone number with country code. Returns 201 on new contact creation or 204 if the contact already existed and was updated.
Export contacts from your Brevo account based on custom filters. You must provide a customContactFilter with at least one action type (actionForContacts, actionForEmailCampaigns, or actionForSmsCampaigns). When using actionForContacts, either a listId or segmentId must be included. The export file is generated asynchronously in CSV format; the endpoint returns a background process ID whose completion triggers the optional notifyUrl webhook.
Import contacts into your Brevo account from a CSV file body, a JSON body, or a remote file URL. Exactly one of fileBody, jsonBody, or fileUrl must be provided. The maximum allowed size for fileBody and jsonBody is 10 MB (8 MB recommended); for larger imports, use the fileUrl option. Contacts will be added to the lists specified by listIds, or to a newly created list if newList is provided. Any contact attribute not defined in your account will be silently ignored. The endpoint returns a background process ID; use the process endpoint to track completion.
Retrieve all contacts belonging to a specific list, identified by its list ID. Results are paginated with a default of 50 contacts per page (maximum 500) and sorted in descending order of creation. You can optionally filter contacts by their modification date using the modifiedSince parameter.
Retrieve all contacts from your Brevo account with support for pagination, filtering, and sorting. Results default to 50 contacts per page (maximum 1000) sorted in descending order of creation, and can be filtered by modification date, creation date, contact IDs (up to 20), list IDs, segment ID, or contact attributes using the equals operator. Note that either listIds or segmentId can be passed but not both simultaneously.
<Note>Follow this format when passing a "SMS" phone number as an attribute. Accepted Number Formats 91xxxxxxxxxx +91xxxxxxxxxx 0091xxxxxxxxxx</Note> Creates new contacts on Brevo. Contacts can be created by passing either - <br><br> 1. email address of the contact (email_id), <br> 2. phone number of the contact (to be passed as "SMS" field in "attributes" along with proper country code), For example- {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} <br> 3. ext_id <br>
Permanently delete a contact identified by their email address, numeric ID, or other identifier. Without the identifierType query parameter, the API only accepts email addresses (email_id) or numeric contact IDs (contact_id) as the path parameter. To delete by other identifier types (ext_id, phone_id, whatsapp_id, landline_number_id), you must also pass the identifierType query parameter. Returns 405 if attempting to delete a registered email contact.
<Note>Follow this format when passing a "SMS" phone number as an attribute. Accepted Number Formats 91xxxxxxxxxx +91xxxxxxxxxx 0091xxxxxxxxxx</Note> There are 2 ways to get a contact <br><br> Option 1- https://api.brevo.com/v3/contacts/{identifier} <br><br> Option 2- https://api.brevo.com/v3/contacts/{identifier}?identifierType={} <br> <br> Option 1 only works if identifierType is email_id (for EMAIL), phone_id (for SMS) or contact_id (for ID of the contact),where you can directly pass the value of EMAIL, SMS and ID of the contact. <br><br> Option 2 works for all identifierType, use email_id for EMAIL attribute, phone_id for SMS attribute, contact_id for ID of the contact, ext_id for EXT_ID attribute, whatsapp_id for WHATSAPP attribute, landline_number_id for LANDLINE_NUMBER attribute <br><br>Along with the contact details, this endpoint will show the statistics of contact for the recent 90 days by default. To fetch the earlier statistics, please use Get contact campaign stats ``https://developers.brevo.com/reference/contacts-7#getcontactstats`` endpoint with the appropriate date ranges.
Update an existing contact identified by their email address, numeric ID, or other identifier. Without the identifierType query parameter, only email addresses and numeric contact IDs are accepted as the path parameter. To update by other identifier types (ext_id, phone_id, whatsapp_id, landline_number_id), you must also pass the identifierType query parameter. All body fields are optional for this PATCH-like update. Phone numbers in the SMS attribute must include a country code (e.g. +33612345678 or 0033612345678). To update the email address, pass the new email as the EMAIL attribute value.
Retrieve email campaign statistics for a specific contact identified by email address or numeric ID. Statistics include messages sent, opens, clicks, hard/soft bounces, deliveries, unsubscriptions, complaints, and transactional attributes. By default, data covers the last 90 days; use startDate and endDate parameters (YYYY-MM-DD) to specify a custom range with a maximum span of 90 days.
Sets the agent's status to online for 2-3 minutes. We recommend pinging this endpoint every minute for as long as the agent has to be considered online. You must provide either `agentId` alone, or all three of `agentEmail` + `agentName` + `receivedFrom` to identify the agent. If no agent with the specified email address exists in your Brevo organization, a dummy agent will be created automatically. Optionally, you can pass `agentGroups` to update the agent's group memberships at the same time as the ping.
Send a message as an agent to an existing visitor's conversation. You must provide either `agentId` alone, or all three of `agentEmail` + `agentName` + `receivedFrom` to identify the agent. If no agent with the specified email address exists in your Brevo organization, a dummy agent will be created automatically. The message text has a maximum length of 4096 characters. For conversations originating from email, the reply is sent as an email; for SMS conversations, it is sent as an SMS.
Delete a message sent by an agent. Only non-pushed, non-triggered agent messages from the chat widget can be deleted. Messages originating from external channels (email, SMS, etc.) cannot be deleted and will return a `400` error.
Retrieve a single message by its ID. Both agent and visitor messages can be retrieved, but service messages (such as join/leave notifications) are excluded.
Update the text of a message sent by an agent. Only non-pushed, non-triggered agent messages from the chat widget can be edited. Messages originating from external channels (email, SMS, etc.) cannot be updated and will return a `400` error. The message text has a maximum length of 4096 characters. The `text` and `html` fields of the message will be updated.
Send an automated (pushed) message to one or more visitors on behalf of an agent. Example use cases include order status updates, announcing new features, or proactive outreach. You can target a single visitor with `visitorId` or up to 250 visitors at once with `visitorIds`. When using `visitorIds` (bulk mode), the API returns `201` with an empty response body and messages are delivered asynchronously. Automated messages can only be sent to visitors who contacted from the chat widget; visitors from external channels (email, SMS, etc.) are not supported. If neither `agentId` nor `groupId` is specified, a random agent from your organization is selected. The message text has a maximum length of 4096 characters.
Delete an automated (pushed) message by its ID. Only messages that were originally sent via the pushed messages endpoint can be deleted using this endpoint. Returns `204` with an empty body on success.
Retrieve a single automated (pushed) message by its ID. Only messages that were originally sent via the pushed messages endpoint can be retrieved using this endpoint; regular agent messages are not returned.
Update the text of an automated (pushed) message. Only messages that were originally sent via the pushed messages endpoint can be updated using this endpoint. The message text has a maximum length of 4096 characters. The `text` and `html` fields of the message will be updated.
Retrieve a paginated list of all coupon collections in your Brevo account. Results can be sorted by creation date, remaining coupons count, or expiration date, in ascending or descending order. Pagination defaults to 50 collections per page (maximum 100).
Create a new coupon collection with a name and a default coupon value. You can optionally set an expiration date in RFC3339 format and configure alert thresholds to receive email notifications when remaining coupons or remaining days before expiration fall below a specified number. The collection ID is auto-generated as a UUID and returned in the response.
Retrieve the details of a single coupon collection by its UUID. The response includes the collection name, default coupon value, total and remaining coupon counts, and creation timestamp. Returns a `404` error if no collection matches the provided ID.
Update an existing coupon collection by its UUID. You can modify the default coupon value, set or remove the expiration date (pass `null` to remove), and configure or disable alert thresholds for remaining coupons or remaining days. Only the fields included in the request body are updated; omitted fields remain unchanged.
Add coupons to an existing coupon collection. The `coupons` array must contain between 1 and 10,000 unique coupon code strings, all associated with the specified `collectionId`. Coupon creation is processed asynchronously and a `204` status is returned immediately upon acceptance. Returns a `404` error if the specified coupon collection does not exist.
Retrieve a paginated list of deals with optional filtering, sorting, and search capabilities. Results can be filtered by attributes such as deal name or owner, linked companies, linked contacts, or modification/creation timestamps. Default sort order is descending by creation date.
Create a new deal in the CRM with the specified name, attributes, and optional associations to contacts and companies. You can assign the deal to a specific pipeline and stage by providing `pipeline` and `deal_stage` attribute IDs, which can be retrieved from the pipeline details endpoint.
Import deals in bulk from a CSV file with configurable mapping options. The CSV file must have the first row as column headers matching attribute internal names. You can control whether to link or unlink related entities, update existing records based on deal ID, and clear attributes when the import value is blank using the mapping options.
Link or unlink contacts and companies with a specific deal in a single request. You can simultaneously link new contacts/companies and unlink existing ones by providing the respective ID arrays in the request body. At least one of the four arrays must contain values. The deal must exist and the authenticated user must have permission to modify it.
Permanently delete a deal by its identifier. The requesting user must be the deal owner or have manage permission on deals; otherwise, a 403 Forbidden error is returned.
Retrieve the full details of a single deal by its identifier, including its attributes, pipeline stage, linked contacts, and linked companies. Returns a 404 error if the deal does not exist.
Update an existing deal's name or attributes. To move a deal to a different pipeline or stage, provide both the `pipeline` and `deal_stage` attribute IDs. To link or unlink contacts and companies, use the dedicated `/crm/deals/link-unlink/{id}` endpoint — those fields are not honored here.
Retrieves all domains associated with the account. Use this to: - List all domains - Verify domain existence - Check domain authentication and verification status - Monitor domain configuration and provider information - Review domain creation history and ownership Key information returned: - Domain details (ID, name, authentication status) - Verification and authentication states - Associated IP addresses and DNS providers - Creator information and creation timestamps - Pagination information for large domain lists
Creates a new domain in Brevo. Use this to: - Add new domains for sending emails - Set up domain authentication for better deliverability - Configure DNS records for email authentication - Establish domain-based sender identities Key information returned: - Created domain ID and configuration - Required DNS records for authentication - Domain provider detection results - Setup instructions and next steps
Deletes a domain from Brevo. Use this to: - Remove existing domains - Clean up unused domain configurations - Remove test domains Key information returned: - Success confirmation message
Retrieves configuration of a specific domain, to know if the domain is valid or not. Use this to: - Check domain configuration - Validate a domain configuration - Monitor DNS record status - Troubleshoot authentication issues Key information returned: - Domain verification and authentication status - DNS records configuration and validation status - Detailed authentication requirements
Authenticates a specific domain. Use this to: - Authenticate a domain - Verify DNS record configuration - Complete domain setup for sending - Enable domain for email authentication Key information returned: - Authentication success confirmation - Domain readiness status for email sending
Activate the Brevo eCommerce application for your account. This is a prerequisite for using other ecommerce endpoints such as products, categories, and orders. Activation is asynchronous and typically takes up to 5 minutes to complete. Returns a `200` status immediately to confirm that the activation process has started. Returns a `404` error if the account is not found.
Retrieve aggregated ecommerce attribution metrics for one or more Brevo email campaigns, SMS campaigns, or automation workflows. You can optionally filter by a date range using `periodFrom` and `periodTo` in RFC3339 format. The response includes per-source metrics (orders count, revenue, and average basket) as well as aggregated totals across all requested sources.
Retrieve detailed attribution metrics for a single Brevo campaign or automation workflow, identified by its conversion source type and ID. The response includes orders count, revenue, average basket value, and the number of new customers attributed to that specific campaign or workflow.
Retrieve the list of products whose sales have been attributed to a specific Brevo campaign or automation workflow. Each product entry includes its ID, name, SKU, image URL, product URL, price, revenue, and orders count. The conversion source type must be one of `email_campaign`, `sms_campaign`, `automation_workflow_email`, or `automation_workflow_sms`.
Retrieve the ISO 4217 display currency code currently configured for your Brevo ecommerce account. This currency is used to display monetary values across the ecommerce dashboard and reports. Returns a `403` error if ecommerce is not activated on the account.
Set or update the ISO 4217 display currency code for your Brevo ecommerce account. This currency determines how monetary values are displayed in the ecommerce dashboard and reports. The provided currency code must be a valid ISO 4217 code; invalid codes result in a `422` error. Returns a `403` error if ecommerce is not activated on the account.
Retrieve a paginated list of all ecommerce orders stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by modification date or creation date. Pagination defaults to 50 orders per page (maximum 100). The response includes a `count` field with the total number of matching orders and the full order details including billing, products, coupons, and status.
Create a new ecommerce order or update the status of an existing order. The order is identified by its unique `id` and requires a status, amount, creation and update timestamps, and a list of products with prices. You can optionally include billing details, coupon codes, contact identifiers, store ID, and metadata. Returns `204` on success.
Create or update multiple ecommerce orders in a single asynchronous batch request. The `orders` array contains order objects (same schema as the single order endpoint). The optional `historical` flag (default `true`) determines whether orders trigger automation workflows: set to `false` for live orders that should trigger workflows, or `true` for historical data imports. You can optionally provide a `notifyUrl` webhook URL to receive a callback when the batch processing completes. The response returns a `batchId` to track the request and the total `count` of orders submitted.
Retrieve a paginated list of email campaigns. You can filter by campaign type (classic or trigger), status (e.g. sent, draft, queued), and a creation date range. Use the statistics parameter to choose which performance data to include in the response (globalStats, linksStats, statsByDomain, etc.). Date filters (startDate/endDate) only apply when status is omitted or set to "sent". Note: the response payload requires you to specify which type of statistics to retrieve — see https://developers.brevo.com/changelog/get-all-marketing-campaigns.
Create a new email campaign. The campaign requires at minimum a name and sender details, and is created in draft status by default. You must provide email content via one of three mutually exclusive options: htmlContent (inline HTML), htmlUrl (remote URL), or templateId (existing template); additionally, A/B testing can be enabled by setting abTesting to true with subjectA and subjectB, but this is incompatible with sendAtBestTime.
Upload an image to your account's image gallery by providing an absolute URL to the image. The maximum allowed image size is 2MB and supported formats are jpeg, jpg, png, bmp, and gif; local file uploads are not supported.
Delete an email campaign by its campaign ID. Only campaigns that have not been scheduled can be deleted; attempting to delete a campaign that has already been scheduled will return a 403 permission denied error. Related data in templates, newsletter builder, and schedule collections is also cleaned up.
Retrieve detailed information about a specific email campaign by its ID, including recipients, statistics, and HTML content. Use the statistics query parameter to select which statistics to include (globalStats, linksStats, statsByDomain, statsByDevice, or statsByBrowser); statsByDevice and statsByBrowser are only available on this single-campaign endpoint. You can exclude HTML content from the response by setting excludeHtmlContent to true.
Update an existing email campaign's properties such as name, subject, content, sender, recipients, schedule, and A/B testing configuration. The campaign must exist and the request body must contain at least one valid field to update. Only draft or scheduled campaigns can be modified; if sendAtBestTime is enabled, IP warmup will be automatically disabled.
Export the recipients of a sent email campaign as an asynchronous process, filtered by recipient type (e.g. openers, clickers, hardBounces). The recipientsType field is required and determines which subset of recipients to export. An optional notifyURL webhook will be called once the export is complete, and the response returns a processId to track the export status.
Send an existing email campaign immediately by scheduling it for the current time. The campaign must have valid recipients and content configured before sending. The system verifies your account's send limit and credit balance before dispatching; if credits are insufficient, a 402 error is returned.
Send a PDF report of an email campaign to the specified email addresses. The report includes campaign statistics such as deliveries, opens, clicks, bounces, and unsubscriptions. The email recipients list supports a maximum of 99 addresses, and a custom body text is required. The report language defaults to French (fr) if not specified; supported languages are fr, es, pt, it, de, and en.
Send a test version of an email campaign to specified email addresses or your entire test list. If the emailTo array is left empty, the test mail will be sent to all addresses in your test list. You can send a maximum of 50 test emails per day.
Get a unique URL to share and import an email template from one Brevo account to another. Only classic email campaigns and templates are supported; attempting to get a shared URL for other campaign types will return a 405 error. The campaign must also have content defined, otherwise a 405 error is returned.
Update the status of an email campaign, such as suspending, archiving, or replicating it. Available status values are: suspended, archive, darchive, sent, queued, replicate, replicateTemplate, and draft. The replicateTemplate status is only available for template type campaigns, and trigger campaigns cannot be duplicated via replicate. The valid status transitions depend on the current campaign state; for example, a sent campaign can only be changed to archive, queued, or replicate.
Retrieve a paginated list of events filtered by contact ID, event name, object type, and/or date range. When no date range is provided, the API returns events from the last 6 months by default. Results are ordered by event date descending. Use the `count` field in the response for pagination. The date range between `startDate` and `endDate` must not exceed 6 months, and `endDate` must be strictly greater than `startDate`.
Create a single event to record a contact's interaction. The event is processed asynchronously and can be used for segmentation, automation triggers, and analytics. Each event must include at least one contact identifier. The `event_date`, if provided, must be in RFC 3339 format and cannot be in the future or before 1970-01-01. If `event_date` is omitted, the current server time is used. When an `object` is provided, both `type` and at least one object identifier (`ext_id` or `id`) are required.
Retrieves all external feeds from your Brevo account with filtering and pagination. **Use this to:** - Get an overview of all external data feeds - Find feeds by name using search functionality - Filter feeds by creation date range - Browse feeds by authentication type - Monitor feed library organization and usage **Key information returned:** - Feed details (UUID, name, URL, authentication type) - Feed configuration and settings - Creation and modification timestamps - Feed status and error information - Authentication and header configurations **Important considerations:** - External feeds enable dynamic content in email campaigns - Feeds must be accessible from Brevo servers - Authentication credentials are securely stored - Feed performance affects campaign delivery - Use pagination for accounts with many feeds - Date range filtering limited to 30 days maximum - Search functionality works on feed name matching - Internal feeds are system-managed and cannot be modified
Creates a new external feed for dynamic content in email campaigns. **Use this to:** - Set up external data sources for dynamic content - Configure authentication for protected feeds - Enable real-time content updates in campaigns - Establish connections to product catalogs, blogs, or APIs **Key information returned:** - Created feed UUID for reference in campaigns - Success confirmation **Important considerations:** - Both `name` and `url` are required - Feed name must be unique per account (duplicates are rejected) - Feed name has a maximum length of 255 characters - Feed URL has a maximum length of 2,048 characters and must be a valid URL - When `authType` is `basic`, both `username` and `password` are required - When `authType` is `token`, the `token` field is required - If `authType` is not specified, it defaults to no authentication - Maximum retry attempts: 5 (defaults to 5 if not specified) - Cache defaults to `true` if not specified - Custom headers are limited to 50 entries, each with name and value of maximum 255 characters
Deletes an external feed from your Brevo account. **Use this to:** - Remove external feeds that are no longer needed - Clean up unused data sources - Remove test or outdated feeds - Maintain organized feed library **Key information returned:** - Success confirmation message **Important considerations:** - This action is PERMANENT and cannot be undone - Feed configuration and history will be lost - Check if feed is used in active campaigns before deletion - Remove feed references from email templates - Consider deactivating instead of deleting if unsure
Retrieves details of a specific external feed by its UUID. **Use this to:** - Get complete configuration of an external feed - Check feed authentication settings - Review feed personalization options - Verify feed URL and parameters - Monitor feed modification history **Key information returned:** - Complete feed configuration and settings - Authentication credentials and headers - Personalization and fallback settings - Creation and modification timestamps - Cache and retry configurations **Important considerations:** - UUID must exist in your account - Provides complete feed information for troubleshooting - Essential before making modifications - Shows current feed health status - Useful for debugging feed issues
Updates configuration of an existing external feed. **Use this to:** - Update feed URLs when data sources change - Modify authentication credentials - Change cache and retry settings - Update custom headers - Rename feeds for better organization **Key information returned:** - Success confirmation message **Important considerations:** - Only provided fields will be updated (partial update) - Feed UUID must exist in your account (returns 404 if not found) - Feed name must remain unique per account (duplicates are rejected) - When changing `authType` to `basic`, both `username` and `password` must be provided - When changing `authType` to `token`, the `token` field must be provided - Headers are merged with existing ones; headers with the same name are replaced - Custom headers are limited to 50 entries, each with name and value of maximum 255 characters
Retrieve a paginated list of CRM files with optional filtering by entity type, entity IDs, and date range. Results are sorted by creation date in descending order by default, with a default limit of 50 files per page.
Upload a file and associate it with a contact, company, or deal. The file must be sent as multipart form data with a maximum size of 10 MB. You can optionally link the file to a specific entity by providing the corresponding entity ID.
Permanently delete a CRM file by its identifier. This removes the file from storage and unlinks it from any associated contacts, companies, or deals.
Get a temporary download URL for a CRM file by its identifier. The returned URL is valid for 5 minutes only and provides direct access to the file content.
Retrieve the metadata and details of a specific CRM file by its identifier. This returns information such as the file name, size, author, creation date, and associated contacts, companies, or deals. The file content itself is not included in this response; use the download endpoint to retrieve the actual file.
Retrieve all contact folders from your Brevo account with support for pagination and sorting. Results default to 10 folders per page (maximum 50) sorted in descending order of creation. Note: the totalSubscribers and totalBlacklisted response attributes are being deprecated and will return 0 as their default value.
Create a new folder to organize your contact lists. Folders serve as containers for grouping related lists together. The folder name is required and must be provided in the request body.
Permanently delete a folder identified by its ID. Deleting a folder will also delete all the contact lists contained within it. This action cannot be undone.
Retrieve the details of a specific folder by its ID, including its name, subscriber counts, and blacklisted contacts count. Note: the totalSubscribers and totalBlacklisted response attributes are being deprecated and will return 0 as their default value.
Update the name of an existing folder identified by its ID. The new folder name must be provided in the request body. Returns a 404 error if the folder ID does not exist.
Retrieve all contact lists contained in a specific folder, identified by its folder ID. Results are paginated with a default of 10 lists per page (maximum 50) sorted in descending order of creation. Note: the totalSubscribers and totalBlacklisted response attributes are being deprecated and will return 0 as their default value.
Creates a new group to organize sub-accounts under the corporate master account. Groups allow you to manage and apply settings to multiple sub-accounts at once. A group name is required, and you can optionally assign sub-account IDs to the group at creation time.
Removes one or more sub-organizations from a specific group. The sub-organizations themselves are not deleted; they are simply unlinked from the group. All sub-account IDs in the request must be positive integers. If only some sub-accounts could be unlinked, the API may return a partial success (HTTP 206).
Deletes a group of sub-organizations. When a group is deleted, the sub-organizations are no longer part of this group, but the sub-organizations themselves are not deleted. The users associated with the group are also disassociated once the group is removed. The caller must have edit/delete permissions on sub-organization groups.
Retrieves detailed information about a specific group of sub-organizations, including the group metadata, list of sub-organizations belonging to the group, and the users associated with it. The caller must have edit/delete permissions on sub-organization groups to access this endpoint.
Updates the details of an existing group of sub-accounts, including the group name and the list of sub-accounts assigned to it. When sub-account IDs are provided, the group membership is replaced with the new list. Omitting a field leaves it unchanged.
Retrieves all groups created on the corporate admin account. Each group entry includes the group name and its unique identifier. Groups are used to organize sub-accounts for easier management and permission assignment.
Retrieve a paginated list of inbound email events. When no date range is provided, the API returns events from the last 30 days by default. Both `startDate` and `endDate` must be provided together; the maximum date range that can be selected is 30 days. Neither date can be in the future, and `startDate` must be before `endDate`. The `sender` parameter, if provided, must be a valid email address. Results are sorted by record creation date in the order specified by the `sort` parameter (default: descending).
Retrieve the detailed event history for a specific received email identified by its UUID. The response includes sender and recipient information, the email subject, a list of attachments, and a chronological log of processing events (received, processed, webhook delivery attempts). Fields such as `attachments`, `messageId`, and `subject` are only populated after the email has been fully processed. The `deliveredAt` field is null if the webhook delivery has not yet succeeded.
Download an inbound email attachment using its download token. The download token is obtained from the attachments list in the response of the `GET /inbound/events/{uuid}` endpoint. The response streams the raw attachment binary with appropriate Content-Type, Content-Disposition, and Content-Length headers. Returns 404 if the token does not match any attachment, or 400 if the token is invalid.
Retrieves all dedicated IPs associated with your Brevo account. Use this to: - List all your dedicated IPs - Check the status of your dedicated IPs (active/inactive) - Find IP addresses and associated domains for configuration purposes - Monitor your IP reputation and deliverability - Verify available IPs for sender configuration Key information returned: - IP ID and address - Associated domain - Active status - IP configuration details
Retrieves the dedicated IPs associated with a specific sender. Use this to: - Check IP configuration for a sender - Verify dedicated IP associations - Get IP details for troubleshooting - Monitor sender IP configuration Key information returned: - List of associated dedicated IPs - IP addresses and domain configurations - IP status and settings
Retrieve all contact lists from your Brevo account with support for pagination and sorting. Results default to 10 lists per page (maximum 50) sorted in descending order of creation. Note: the totalSubscribers and totalBlacklisted response attributes are being deprecated and will return 0 as their default value.
Create a new contact list inside a specified folder. Both the list name and the parent folder ID are required. The newly created list will be empty and ready to receive contacts via the add contacts endpoint.
Permanently delete a contact list identified by its ID. The contacts in the list are not deleted; they are only removed from this list. Returns a 404 error if the list ID does not exist.
Retrieve the details of a specific contact list by its ID, including its name, folder ID, creation date, subscriber counts, and campaign statistics. You can optionally filter campaign statistics by providing startDate and endDate parameters (both must be used together in YYYY-MM-DDTHH:mm:ss.SSSZ format). Without date filters, campaign statistics default to the last 6 months. The maximum date range allowed between startDate and endDate is 2 years. Neither date can be in the future.
Update an existing contact list identified by its ID. You can update the list name, move it to a different folder by providing a new folderId, or both. Only one of the two parameters (name, folderId) needs to be provided per request.
Add existing contacts to a specific list by providing their email addresses, numeric IDs, or EXT_ID attributes. Only one type of identifier can be used per request, with a maximum of 150 contacts per call. The response includes separate arrays for successfully added and failed contacts. For bulk additions exceeding 150 contacts, use the /contacts/import endpoint instead.
Remove contacts from a specific list by providing their email addresses, numeric IDs, EXT_ID attributes, or by setting "all" to true to remove all contacts from the list. Only one type of identifier can be used per request, with a maximum of 150 contacts per call. When "all" is set to true, a background process is created and a processId is returned along with the total count of contacts being removed.
Retrieves a paginated list of active (non-expired, non-consumed) balance entries for a specific contact and balance definition within a loyalty program. Both `contactId` and `balanceDefinitionId` query parameters are required. Results can be sorted by creation date and paginated using `limit` and `offset`.
Retrieves a paginated list of balance definitions configured for a loyalty program. Balance definitions specify the currency or point unit, expiration rules, rounding strategies, and amount constraints. Use the `version` parameter to fetch either the currently active or the draft configuration. Results default to 200 items per page, sorted by `updated_at` descending.
Creates a new balance definition within a loyalty program. A balance definition specifies the unit of measurement (points or currency), expiration rules, rounding strategies, and amount constraints. Only one expiration method can be used: either a fixed calendar date (`balanceExpirationDate` in dd/mm format) or a duration-based expiry (`balanceAvailabilityDurationValue` + `balanceAvailabilityDurationUnit`), but not both.
Permanently deletes a balance definition from a loyalty program. Once deleted, the balance definition cannot be recovered. Any balances tied to this definition will no longer be usable.
Retrieves a single balance definition by its ID within a loyalty program. Use the `version` query parameter to fetch either the currently active or the draft configuration. Returns the full definition including expiration rules, rounding strategies, and amount constraints.
Replaces an existing balance definition with the provided data. This is a full replacement (PUT), not a partial update; all fields in the payload are applied. The `name` and `unit` fields are required. Only one expiration method can be used: either a fixed calendar date or a duration-based expiry, but not both.
Creates a new limit on a balance definition to restrict transaction frequency or amount within a time window. Limits can constrain either the total transaction count or the total amount for credit or debit transactions. The `durationValue` and `value` fields must be greater than zero.
Permanently deletes a balance limit from a balance definition. Once deleted, the limit constraint is no longer enforced on transactions.
Retrieves a single balance limit by its ID for a given balance definition. Use the `version` query parameter to fetch either the currently active or the draft limit configuration.
Replaces an existing balance limit with the provided data. This is a full replacement (PUT); all fields in the payload are applied. The `durationValue` and `value` fields must be greater than zero.
Retrieves a paginated list of contact balances for a specific balance definition across all subscriptions in a loyalty program. The `balanceDefinitionId` query parameter is required. Results can be sorted by `updatedAt` or `value` and paginated using `limit` and `offset`.
Creates a new balance order linked to a specific balance definition and contact. An order represents a pending balance adjustment that will be processed at the specified due date. The `amount` must be non-zero and the `dueAt` timestamp must be in RFC 3339 format.
Retrieves the aggregate balances for a contact's subscription within a loyalty program. Returns the total balance value per balance definition. Use the `includeInternal` parameter to also include balances tied to internal definitions.
Creates a new balance entry for a contact's subscription, linked to a specific balance definition. The contact must have an active subscription in the loyalty program. The `balanceDefinitionId` field is required in the request body.
Retrieves a paginated transaction history for a specific contact and balance definition within a loyalty program. Both `contactId` and `balanceDefinitionId` query parameters are required. Results can be filtered by transaction `status` and `transactionType`, and sorted by creation date.
Creates a new balance transaction (credit or debit) within a loyalty program. A positive amount creates a credit transaction and a negative amount creates a debit transaction by default, unless `transactionType` is explicitly provided. Either `contactId` or `LoyaltySubscriptionId` must be specified to identify the subscription. Transactions are created in a pending state unless `autoComplete` is set to true, in which case the transaction is completed immediately. An optional `ttl` (minimum 10 seconds) can be set to auto-expire uncompleted transactions.
Cancels a pending transaction, reverting any tentative balance changes. Only transactions in a pending state can be cancelled. Once cancelled, the transaction cannot be completed or modified further.
Completes a pending transaction, finalizing the balance change. Only transactions in a pending state can be completed. Once completed, the transaction amount is permanently applied to the contact's balance.
Retrieves a paginated list of loyalty programs for the organization. Results can be sorted by name, creation date, or last update date. Use `limit` and `offset` to paginate through the results. The maximum page size is 500 items.
Creates a new loyalty program for the organization. The `name` field is required and must be unique (max 128 characters). An optional `description` (max 256 characters) and arbitrary `meta` data can also be provided.
Permanently deletes a loyalty program and all its associated data. This action cannot be undone. All subscriptions, balances, tiers, and rewards linked to the program will be removed.
Retrieves the full details of a single loyalty program by its ID, including its current state, metadata, subscription pool configuration, and timestamps.
Partially updates a loyalty program. Only the fields provided in the request body are modified; omitted fields remain unchanged. Supports updating the name (max 128 characters), description (max 256 characters), metadata, and birthday attribute.
Replaces a loyalty program with the provided data. This is a full replacement (PUT); all fields in the payload are applied. The `name` field is required (max 128 characters). The program name must be unique within the organization.
Retrieves comprehensive subscription data for a contact, including balances, tier assignments, attributed rewards, and subscription members. At least one of `contactId` or `loyaltySubscriptionId` must be provided to identify the subscription. Use the `params` query parameter to select which data categories to include in the response.
Removes a contact's subscription from a loyalty program. This deletes the subscription and disassociates the contact from the program. The operation cannot be undone.
Publishes the current draft version of a loyalty program, making all pending changes (balance definitions, tiers, tier groups, rewards) live. After publication, the draft and active versions become identical until new changes are made.
Removes one or more members from a subscription. Provide a comma-separated list of member contact IDs via the `memberContactIds` query parameter. At least one ID is required.
Adds one or more members to an existing subscription. Either `contactId` or `loyaltySubscriptionId` must be provided to identify the target subscription. The `memberContactIds` array must contain at least one member ID (each >= 1). The subscription owner cannot be added as a member.
Creates a new subscription for a contact in a loyalty program. The `contactId` field is required and must be greater than zero. An optional `loyaltySubscriptionId` (max 64 characters) can be provided as a custom identifier. The `creationDate`, if provided, must be in the past (ISO 8601 format).
Retrieves the number of available codes in a specific code pool. Code pools are used by rewards to generate unique voucher codes for attribution.
Retrieves a paginated list of rewards (offers) configured for a loyalty program. Results can be filtered by state and version (draft or active). The default page size is 25 with a maximum of 100 items per page.
Creates a new reward (offer) in a loyalty program. The `name` field is required (max 128 characters). Optional fields include a public-facing name, description (max 500 characters), and image URL for consumer-facing display.
Creates a voucher and attributes it to a specific membership. Either `contactId` or `loyaltySubscriptionId` must be provided to identify the target subscription. The `rewardId` is required. An optional `value` can be set (between 0.01 and 99,999,999.99) and a `code` (max 128 characters) can be provided or auto-generated.
Creates a redemption request for a voucher. The voucher can be identified either by `code` or by `attributedRewardId`. A `contactId` or `loyaltySubscriptionId` must be provided to identify the subscriber. The redemption is created in a pending state unless `autoComplete` is true. An optional `ttl` (minimum 1 second) can be set to auto-expire uncompleted redemptions.
Completes a pending voucher redemption request. Only redemptions in a pending state can be completed. Once completed, the voucher is marked as consumed and any associated balance deductions are finalized.
Revokes one or more attributed vouchers by their IDs. Provide a comma-separated list of attributed reward IDs via the `attributedRewardIds` query parameter. Revoked vouchers can no longer be redeemed.
Validates whether a reward can be redeemed for a given contact or subscription. The voucher can be identified either by `code` or by `attributedRewardId`. Returns an `authorize` boolean indicating whether the redemption is permitted based on the reward's rules and limits.
Retrieves the full details of a reward by its ID, including configuration, rules, code generation settings, limits, products, and attribution/redemption counters. Use the `version` query parameter to fetch either the active or draft version.
Retrieves a paginated list of vouchers attributed to a specific contact within a loyalty program. The `contactId` query parameter is required (must be >= 1). Results can be filtered by `rewardId` or metadata key/value, sorted by `updatedAt` or `createdAt`, with a maximum of 500 items per page.
Manually assigns a tier to a contact's subscription in a loyalty program. The contact must have an active subscription. An optional request body can include metadata and a creation date (must be in the past). This operation takes effect immediately without requiring a program publication.
Retrieves all tier groups configured for a loyalty program. Each tier group defines an independent hierarchy of tiers with its own upgrade and downgrade strategies. Use the `version` parameter to fetch either the active or draft configuration.
Creates a new tier group in a loyalty program. A tier group defines an independent hierarchy of tiers with its own upgrade and downgrade strategies. The `name` field is required. Changes take effect with the next publication of the loyalty program.
Deletes a tier group from a loyalty program. All tiers within the group are also removed. The changes take effect with the next publication of the loyalty program.
Retrieves the full details of a tier group by its ID, including name, upgrade and downgrade strategies, tier ordering, and schedule configurations. Use the `version` parameter to fetch either the active or draft configuration.
Replaces a tier group's configuration with the provided data. This is a full replacement (PUT); all required fields must be provided. The changes take effect with the next publication of the loyalty program.
Creates a new tier within a tier group. The `name` (max 128 characters) and `accessConditions` (at least one required) fields are mandatory. Access conditions define the minimum balance value per balance definition required to enter this tier. Changes take effect with the next publication of the loyalty program.
Retrieves all tiers configured for a loyalty program across all tier groups. Use the `version` parameter to fetch either the currently active tiers or the draft configuration with pending changes.
Deletes a tier from a loyalty program. Contacts currently assigned to the deleted tier will need to be reassigned. The changes take effect with the next publication of the loyalty program.
Replaces an existing tier's configuration with the provided data. This is a full replacement (PUT); the `name`, `accessConditions`, and `tierRewards` fields are all required. Changes take effect with the next publication of the loyalty program.
Retrieve a paginated list of CRM notes with optional filtering by entity type, entity IDs, and date range. Results are sorted by creation date in descending order by default, with a default limit of 50 notes per page. When filtering by entity IDs, the `entity` parameter must also be specified. Both `offset` and `page` are supported for pagination; if both are provided, offset is used.
Create a new CRM note and associate it with at least one contact, company, or deal. The note text content is required and cannot be empty. The text supports HTML content but must not exceed 10,000 characters (excluding HTML tags and line breaks). At least one entity (contact, company, or deal) must be linked to the note.
Permanently delete a CRM note by its identifier. This removes the note and unlinks it from any associated contacts, companies, or deals. The authenticated user must have delete permission for the entities linked to the note.
Retrieve the full details of a single CRM note by its identifier. The response includes the note's text content, creation and update timestamps, author information, and any associated contacts, companies, or deals.
Update an existing CRM note's text content and its associations with contacts, companies, or deals. You can modify the note text, update the linked entities, or toggle the pinned status. At least one field must be provided for the update. The text cannot exceed 10,000 characters (excluding HTML tags and line breaks). All referenced contacts, companies, and deals must exist.
<Note title="Enterprise access only">Custom objects are only available to Enterprise plans. This feature is in beta. These are subject to change.</Note> This API allows bulk upsert of object records in a single request. Each object record may include attributes, identifiers, and associations. **Response:** The API processes the request asynchronously and returns a processId that you can use to track the background process status. **Limitations:** - Max **1000** object records per request - Max request body size: **1 MB** - Max **500** attributes per object record - Max **10** link associations and **10** unlink associations per record - Max **10** associated records per association object type - Attributes not previously defined for the object schema are silently ignored (no error, no attribute creation) - Upsert of Brevo standard object records is not supported via this endpoint **Errors:** - Both object records must exist before associating them, otherwise the API returns an error - The object type must already exist; this route does not create new object types
<Note title="Enterprise access only">Custom objects are only available to Enterprise plans. This feature is in beta. These are subject to change.</Note> This API retrieves a list of object records along with their associated records and provides the total count of records for the specified object. **Note**: Contact as object type is not supported in this endpoint.
Use this endpoint to delete multiple object records of the same object-type in one request. The request is accepted and processed asynchronously. You can track the status of the deletion process using the returned **processId**. **Limitations:** - Each request can contain up to **1000** object record identifiers - Either `ids` or `ext_ids` must be provided, but **not both** in the same request - Deletion of Brevo standard object records is not supported via this endpoint - If more records must be deleted, send multiple batch requests
Create a new payment request for a Brevo contact. The request requires a reference (displayed on the payment page), a contact ID, and a cart with currency and amount in cents. You can optionally configure a custom success redirect URL and enable email notifications with reminders. Returns the payment request ID and its public payment URL. A `403` error is returned if Brevo Payments is not activated or the account is not validated.
Delete a payment request by its UUID. Once deleted, the payment request can no longer be accessed or paid. Returns a `404` error if no payment request matches the provided ID, and a `403` error if Brevo Payments is not activated or the account is not validated.
Retrieve the details of a specific payment request by its ID. The response includes the reference, status (created, sent, reminderSent, or paid), cart details, notification configuration, contact ID, and the number of reminders sent. Returns a `404` error if no payment request matches the provided ID.
This endpoint is deprecated. Use `/crm/pipeline/details/{pipelineID}` or `/crm/pipeline/details/all` instead to retrieve pipeline stages for a specific pipeline or all pipelines respectively.
Retrieve the list of all deal pipelines configured for your account, including each pipeline's stages. Each stage includes its name, ID, and win probability. If no pipelines have been configured yet, they are automatically initialized before being returned.
Retrieve the details of a specific deal pipeline by its identifier, including its stages and their win probabilities. Use this endpoint to obtain the pipeline and stage IDs needed when creating or updating deals. If the pipeline ID is not found, a 400 error is returned.
Retrieves a list of background processes from your Brevo account with filtering and pagination. **Use this to:** - Monitor background process activity and status - Track long-running operations and tasks - Find process IDs for detailed status checking - Review process history and performance - Identify failed or stuck processes for troubleshooting **Key information returned:** - Process details (ID, name, status) - Export download URLs for completed export processes - Import details with CSV report URLs for completed import processes - Total count of processes for pagination **Important considerations:** - Background processes handle long-running operations like imports and exports - Process status indicates current state (queued, processing, completed) - Export processes provide download URLs when completed - Import processes provide CSV report URLs with details about problematic records - Use pagination for accounts with many historical processes - Sort options available for creation order (ascending or descending) - Default limit is 10 results per page, maximum is 50
Retrieves detailed information about a specific background process. **Use this to:** - Get detailed status of a specific process - Monitor process progress and completion - Download results from completed export processes - Check error details for failed processes - Track process execution times **Key information returned:** - Complete process details (ID, name, status) - Download URLs for completed export processes - Import details with CSV report URLs for completed import processes **Important considerations:** - Process ID must exist in your account and not be deleted - Completed export processes include download URLs - Completed import processes include CSV report URLs with details about problematic records - Different process types return different result structures
Retrieve a paginated list of all ecommerce products stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by product IDs, name (minimum 3 characters), price range, category IDs, modification date, creation date, or deletion status. Pagination defaults to 50 products per page (maximum 1000), and the response includes a `count` field with the total number of matching products.
Create a new ecommerce product or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is `false` (the default), the endpoint inserts a new product and returns `201`; if the product ID already exists, a `400` error is returned. When `updateEnabled` is `true`, the endpoint performs an upsert, returning `201` for a new product or `204` for an update. The `name` field is mandatory for creation but optional for updates. Product images are downloaded, validated (max 5 MB, formats: jpeg, jpg, png, bmp, gif, webp), and re-hosted on S3. The `metaInfo` object supports up to 20 keys with a cumulative size limit of approximately 1000 KB.
Create or update multiple ecommerce products in a single request. The `products` array accepts up to 100 product objects for creation (or up to 1000 when `updateEnabled` is `true` and the account has an increased limit). Each product requires a unique `id` and `name` (name is mandatory for creation only). When `updateEnabled` is `false`, all products are inserted as new; if any ID already exists, a `400` error is returned. When `updateEnabled` is `true`, existing products are updated and new ones are created via upsert. Duplicate IDs within the same request payload are rejected. The response returns the count of created and updated products.
Retrieve the full details of a single ecommerce product by its unique ID. The response includes the product name, price, SKU, URL, image URLs (original and thumbnails), categories, stock level, meta information, creation and modification timestamps, and deletion status. Returns a `404` error if no product matches the provided ID.
Register a contact to receive an alert for a specific product event, such as `back_in_stock`. At least one contact identifier (`ext_id`, `email`, or `sms`) must be provided; when multiple are given, priority is `ext_id` > `email` > `sms`. Returns a `404` error if the product ID does not exist, and a `403` error if product alerts are not enabled for the account.
Retrieve all contact segments defined in your Brevo account with support for pagination and sorting. Results default to 10 segments per page (maximum 50) sorted in descending order of creation. Each segment includes its ID, name, category name, and last update timestamp.
Retrieves a list of all email senders from your Brevo account with optional filtering. **Use this to:** - Get all available senders for email campaign setup - Find sender details including ID, name, and email address - Filter senders by IP address for dedicated IP users - Filter senders by domain for domain-specific configurations - Monitor sender configuration and status **Key information returned:** - Sender details (ID, name, email address) - Sender status and verification information - Associated IP addresses and domains (for dedicated IP accounts) - Sender configuration settings **Important considerations:** - Standard accounts show empty IP arrays, dedicated IP accounts show IP assignments - Filtering by IP only available for accounts with dedicated IPs - Domain filtering helps organize senders by business units or brands - Sender status indicates if sender is active and ready for campaign use - Email verification required before sender can be used in campaigns - If the `ip` filter is provided, it must be a valid IP address - If the `domain` filter is provided, it must be a valid domain name - Returns an empty senders array when no senders match the criteria
Creates a new email sender in your Brevo account. Both `name` and `email` are required fields. **Use this to:** - Add new senders for email campaigns - Configure sender identity (name and email) - Associate dedicated IPs with the sender (for dedicated IP accounts) - Set up domain-based sender configurations **Key information returned:** - Created sender ID - DKIM and SPF configuration status (indicates if your DNS records need attention) **Important considerations:** - A verification email is sent to the specified sender email address - The sender must be verified before it can be used in campaigns - For dedicated IP accounts, the `ips` array is mandatory and must contain valid IP-domain pairs - IP weights must sum to 100 when specified; if weights are not provided, they are distributed equally - DKIM and SPF configuration affects email deliverability - Maximum of 10,000 senders allowed per account - For reseller child accounts, the sender email domain must be in the validated domain list
Deletes an email sender from your Brevo account. The sender ID must be a valid positive integer. Use this to: - Remove senders that are no longer needed - Clean up sender configurations - Remove duplicate or test senders Important considerations: - The last active sender on your account cannot be deleted (returns 405 error) - Sender ID must exist in your account - For dedicated IP accounts, associated IP configurations are also cleaned up
Updates an existing email sender's configuration. At least one field (name, email, or ips) must be provided. Use this to: - Modify sender display name or email address - Update dedicated IP associations - Change sender configuration settings Important considerations: - At least one of `name`, `email`, or `ips` must be provided - Changing the sender email triggers a new verification email - For dedicated IP accounts, the `ips` array replaces the existing IP configuration - IP weights must sum to 100 when specified - If the email is changed, the sender will need to be re-verified before it can be used
Validates a sender using the OTP (One-Time Password) received via email. Use this to: - Complete sender verification process - Activate a newly created sender - Verify ownership of the sender email address - Enable the sender for use in email campaigns Key information returned: - Success confirmation of sender verification - Sender activation status
Retrieve a paginated list of all your SMS campaigns with their statistics and recipient information. Results can be filtered by status and date range, with a default limit of 500 and maximum of 1000 per page. The sort order defaults to descending by creation date; date filters are only available when status is not passed or is set to sent.
Create a new SMS campaign with the required name, sender, and content fields. The sender name is limited to 11 alphanumeric characters or 15 numeric characters, and the content should stay within 160 characters per SMS segment. If a scheduledAt date is provided, listIds in recipients become mandatory; accounts under validation are limited to 4 total campaigns and campaigns with more than 10 recipients will be saved as draft.
Delete an SMS campaign by its campaign ID. Only campaigns that have not been scheduled or sent can be deleted; attempting to delete a campaign that is queued, in process, or has been sent with recipients will return a 403 permission denied error.
Retrieve detailed information about a specific SMS campaign by its ID, including campaign content, sender, recipients with list names, statistics (delivered, sent, bounces, unsubscriptions, answered), and tags. Unlike the list endpoint, recipients are returned as objects with id and name fields rather than plain IDs.
Update an existing SMS campaign's properties such as name, sender, content, recipients, scheduled date, organisation prefix, and unsubscribe instructions. The request body must contain at least one valid field to update. The campaign must exist and must be of type SMS; if a scheduledAt is provided, valid recipients must be present either in the request or already configured on the campaign.
Export the recipients of a sent SMS campaign as an asynchronous process, filtered by recipient type (e.g. delivered, answered, hardBounces). The recipientsType field is required and determines which subset of recipients to export. An optional notifyURL webhook will be called once the export is complete, and the response returns a processId to track the export status.
Send an existing SMS campaign immediately by scheduling it for the current time. The system verifies your account's SMS credit balance before dispatching; if credits are insufficient or the remaining credit is less than the number of recipients, a 402 error is returned. The campaign must have valid recipients and content already configured.
Send a PDF report of an SMS campaign to the specified email addresses. The report includes campaign statistics such as deliveries, bounces, answered, and unsubscriptions. The email recipients list supports a maximum of 99 addresses, and a custom body text is required. The report language defaults to French (fr) if not specified; supported languages are fr, es, pt, it, de, and en.
Send a test SMS to a specified phone number to preview the campaign before sending it to all recipients. The phone number must belong to one of your existing contacts in your Brevo account and must not be blacklisted. The number should include the country code (e.g. 33689965433).
Update the status of an SMS campaign, such as suspending, archiving, or replicating it. Available status values are: suspended, archive, darchive, sent, queued, replicate, replicateTemplate, and draft. The replicateTemplate status is only available for template type campaigns. The valid status transitions depend on the current campaign state; for example, a running SMS campaign can only be changed to archive, sent, replicate, or suspended.
Retrieve a paginated list of CRM tasks with optional filtering by task type, status, date range, assignee, and linked entities (contacts, deals, companies). Results are sorted by creation date in descending order by default, with a default limit of 50 tasks per page.
Create a new CRM task with the specified name, type, due date, and optional associations to contacts, companies, or deals. A task requires a name, task type ID, and due date at minimum. You can also set a duration, notes, a reminder, and assign the task to a specific user.
Permanently delete a CRM task by its identifier. This removes the task and cancels any associated reminders. The requesting user must be the task assignee or have manage permission on tasks.
Retrieve the full details of a single CRM task by its identifier. The response includes the task's name, type, status, due date, duration, notes, assignee, reminder settings, and linked contacts, companies, or deals.
Update an existing CRM task's properties such as name, type, due date, status, duration, notes, assignee, reminder, or linked entities. Only the fields provided in the request body will be updated; omitted fields remain unchanged.
Retrieve the list of all available task types for your account. The default task types are Email, Call, Todo, Meeting, Lunch, Deadline, and LinkedIn. If no task types exist yet, the default set is automatically created and returned. Use the task type ID from this response when creating or updating tasks.
Generate a fully rendered preview of a transactional email template by resolving dynamic variables. Provide either an `email` address (to populate variables from the contact's attributes) or a `params` object with key-value pairs for manual substitution; at least one of these is required alongside the mandatory `templateId`. The response includes the rendered HTML, subject line, sender details, preview text, and any feed names used in the template.
Retrieve a paginated list of all transactional email templates (including automation templates) with their details such as name, subject, sender, status, HTML content, and timestamps. Results default to 50 per page (max 1000) and are sorted in descending creation order unless overridden. You can filter by active/inactive status using `templateStatus` and by editor type using `editorType` (currently only `richTextEditor` is supported).
Create a new transactional email template with the specified sender, subject, and content. The `sender`, `subject`, and `templateName` fields are required. Template content can be provided via `htmlContent` (minimum 10 characters) or `htmlUrl`; at least one must be supplied. Templates are created as inactive by default unless `isActive` is explicitly set to `true`.
Permanently delete a transactional email template by its numeric ID. Only inactive templates can be deleted; attempting to delete an active template returns a 405 error. To deactivate a template before deletion, use `PUT /smtp/templates/{templateId}` with `isActive` set to `false`. Deletion also removes associated newsletter template data and triggers asynchronous cleanup of shared assets.
Retrieve the full details of a specific transactional email template by its numeric ID or custom template identifier string. The response includes the template name, subject, sender information, HTML content, active status, creation and modification timestamps, reply-to address, tag, and a `doiTemplate` flag indicating whether the template is a double opt-in template (detected by the presence of optin-related tags or variables in the content).
Update an existing transactional email template by its numeric ID or custom template identifier string. All fields in the request body are optional; only the provided fields will be updated. You can update the template name, subject, sender, reply-to address, HTML content (via `htmlContent` or `htmlUrl`), active status, tag, attachment URL, and the personalized `toField`. Only one of sender email or sender ID should be provided per request.
Send a test email of the specified transactional template to one or more recipients. Provide an array of email addresses in the `emailTo` field; if left empty, the test mail is sent to your default test list. You can send a maximum of 50 test emails per day, and all provided email addresses must be valid. Recipients must exist in your contacts, not be blocked, and belong to at least one list. If some recipients fail validation, the API returns a 400 response detailing which addresses were not found, are blocked, or lack a contact list.
Retrieve a paginated list of transactional contacts that have been blocked or unsubscribed, along with the reason for blocking (e.g. hard bounce, admin blocked, spam complaint, or unsubscription via email/API/Marketing Automation). Both `startDate` and `endDate` must be provided together when filtering by date range, and neither date can be in the future. Results default to 50 per page (max 100) and are sorted in descending order of record creation unless overridden with the `sort` parameter.
Unblock or resubscribe a transactional contact by removing their email address from the blocklist. The email address must be URL-encoded in the path parameter and must be a valid email format. If the contact is not found in the blocklist, a 404 error is returned. On success, returns HTTP 204 with no content.
Retrieve the complete list of domains that have been blocked for transactional email sending. Blocked domains prevent any transactional email from being sent to recipients at those domains. The response contains a flat array of domain name strings. If no domains have been blocked, an empty array is returned.
Block a new domain to prevent transactional emails from being sent to any recipient at that domain. The `domain` field is required and must be a valid domain name (e.g. `example.com`). Domain names starting with `www.` are not accepted. If the domain is already present in the blocked list, a 400 error is returned with the message "Domain is already present in the list of blocked domains".
Remove a domain from the blocked domains list, allowing transactional emails to be sent to recipients at that domain again. The domain name must be a valid domain format (e.g. `example.com`). If the domain is not found in the blocked list, a 404 error is returned with the message "Domain does not exist in the list of blocked domains".
Delete hard bounce records from the blocklist, to be used carefully (e.g. in case of temporary ISP failures). You can filter by `contactEmail` (a specific email address), by date range (`startDate` and `endDate` in YYYY-MM-DD format), or both. If no filters are provided, all hard bounce records are deleted. When matching records are found and deleted, the API returns 204; when no matching records are found, it returns 200. The `endDate` must not be earlier than `startDate`.
Send a transactional email to one or more recipients, either using inline HTML content or a pre-built template via `templateId`. You can schedule emails for future delivery using `scheduledAt` (UTC, up to 5-minute delay), send multiple personalized versions with `messageVersions` (max 2000 total recipients, 99 per version), and attach files via URL or base64-encoded content. A `sender` and `subject` are required when no `templateId` is provided; when a `templateId` is used, the template's sender and subject are applied unless overridden.
Delete scheduled transactional emails, either a batch by its UUIDv4 `batchId` or a single email by its `messageId` (enclosed in angle brackets with an @ sign). Only emails with a `queued` status can be deleted; processed or in-progress emails cannot be cancelled. If no queued records are found for the given identifier, a 404 error is returned.
Fetch the status of scheduled transactional emails, either a batch by its UUIDv4 `batchId` or a single email by its `messageId` (enclosed in angle brackets with an @ sign). Data is available for up to 30 days from creation. When using `batchId`, the response is a paginated list of scheduled entries with a total count; when using `messageId`, a single entry is returned and the `limit`, `offset`, `sort`, and `status` query parameters are ignored. The `startDate` cannot be older than 30 days, and the date range between `startDate` and `endDate` cannot exceed 30 days. Each entry includes `scheduledAt`, `createdAt`, and `status` (one of `queued`, `inProgress`, `processed`, or `error`).
Retrieve a paginated list of sent transactional emails. At least one filter is required: `email`, `templateId`, or `messageId`. Without date filters, the API returns data from the last 30 days. When providing a date range, both `startDate` and `endDate` are required together (YYYY-MM-DD format), and the maximum difference between them cannot exceed 30 days. Neither date can be in the future or before 2010-01-01. Results default to 500 per page (max 1000) and are sorted in descending order unless overridden with the `sort` parameter.
Retrieve the full content and event history of a specific sent transactional email by its unique ID (uuid). The response includes the recipient email, subject, sent date, HTML body content, attachment count, event timeline (sent, delivered, opened, clicked, etc.), and the template ID if the email was template-based. If the email content is no longer available in storage, the body field returns "Mail content not available". <Note title="How to get uuid">You can get the uuid using either of the following methods: Send a GET request to https://api.brevo.com/v3/smtp/emails and pass the message_id in the url. Use your api-key to authenticate the request and you will get your uuid as a response. The uuid can also be fetched from the transactional logs page in your Brevo account, from the address URL.</Note>
Delete SMTP transactional log entries identified by a message ID (enclosed in angle brackets with an @ sign, e.g. `<abc123@domain.com>`) or a valid email address. Optionally narrow the deletion to a specific date range using `from_date` and `to_date` query parameters (YYYY-MM-DD format). The operation also removes any associated stored email preview content. On success, returns HTTP 204 with no content.
Send a transactional SMS message asynchronously to a single mobile number. This endpoint has the same request body as `POST /transactionalSMS/sms` but returns only the `messageId` without waiting for credit and delivery details. Use this for faster response times when you do not need the SMS count, credits used, or remaining credits in the response. The `sender`, `recipient`, and either `content` or `templateId` fields are required. <Note>If the user includes stop code in the Transactional SMS, then it will be switched to Marketing SMS automatically and it will be interpreted as a Marketing SMS. To send Transactional SMS as Transactional, it is important not to use stop code. Note: For adding a stop code, client has to add reply STOP to [STOP_CODE] and the [STOP_CODE] will be replaced with the number.</Note> <Note title="For end users in France">Transactional SMS can be sent at any time without time restrictions. However, if a message is categorized as Marketing, it must adhere to specific time restrictions. Messages sent outside of these restricted hours will experience delays and will be processed during allowable times. Specifically, Marketing SMS cannot be processed between 10pm and 8am, on Sundays, and on French public holidays.</Note>
Send a transactional SMS message to a single mobile number. The `sender`, `recipient`, and either `content` or `templateId` fields are required. The sender name is limited to 11 alphanumeric characters or 15 numeric characters, and the recipient must be a valid international phone number (6 to 15 digits, optionally prefixed with `+`). Tags can be a string or an array of up to 10 non-empty strings. The SMS type defaults to `transactional` but can be set to `marketing`. If `organisationPrefix` is provided, it is prepended to the message content. Returns the message ID, SMS segment count, credits used, and remaining credits on success.
Retrieve an aggregated report of your transactional SMS activity over a specified time period, including counts for requests, delivered, hard bounces, soft bounces, blocked, unsubscribed, replied, accepted, rejected, and skipped messages. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format) or by a number of past `days` (not compatible with date range). You can further narrow results by `tag`. If no date filter is provided, the report covers all available data and returns the auto-detected date range. Dates must not be in the future, and `startDate` must not be after `endDate`.
Retrieve a paginated list of individual SMS event records (unaggregated), including event type, phone number, message ID, timestamp, tag, and reason or reply content where applicable. Results default to 50 per page (max 100) and are sorted in descending order unless overridden. Filter by date range (`startDate`/`endDate`), past `days` (not compatible with date range), specific `event` type (e.g. delivered, bounces, replies), `phoneNumber`, or comma-separated `tags`. Bounce and unsubscription events include the failure reason, and reply events include the reply content. Dates must not be in the future, and `startDate` must not be after `endDate`.
Retrieve a day-by-day breakdown of your transactional SMS activity, with each entry containing the date and counts for requests, delivered, hard bounces, soft bounces, blocked, unsubscribed, replied, accepted, rejected, and skipped messages. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (not compatible with date range), or by `tag`. Results are sorted in descending order by default unless overridden with the `sort` parameter. Dates must not be in the future, and `startDate` must not be after `endDate`.
Retrieve a paginated list of all your SMS templates with their content, compliance settings, and media attachments. Results are paginated with a default limit of 50 and maximum of 100 per page. The sort order defaults to descending by creation date.
Retrieves the list of all users associated with your organization, including both active and pending invited users. Each user entry includes their email address, owner status, current invitation status, and feature access levels for marketing, CRM, and conversations.
Revokes all permissions for an invited user in the organization, effectively removing their access to the platform. If the user's plan change generated credit notes, they are returned in the response for billing reconciliation.
Invites a new user to the organization by sending an invitation email with specified feature permissions. Each feature represents a specific functionality (e.g., Email campaigns, Deals, Contacts) and each permission defines the level of access the user will have. If `all_features_access` is set to `true`, the user receives full permissions on all features and the `privileges` array is ignored. If set to `false`, you must provide the `privileges` array specifying which features and permission levels to grant. Available features and their permissions: - `email_campaigns`: "create_edit_delete", "send_schedule_suspend" - `sms_campaigns`: "create_edit_delete", "send_schedule_suspend" - `contacts`: "view", "create_edit_delete", "import", "export", "list_and_attributes", "forms" - `templates`: "create_edit_delete", "activate_deactivate" - `workflows`: "create_edit_delete", "activate_deactivate_pause", "settings" - `landing_pages`: "all" - `transactional_emails`: "settings", "logs" - `smtp_api`: "smtp", "api_keys", "authorized_ips" - `user_management`: "all" - `sales_platform`: "create_edit_deals", "delete_deals", "manage_others_deals_tasks", "reports", "settings" - `phone`: "all" - `conversations`: "access", "assign", "configure" - `senders_domains_dedicated_ips`: "senders_management", "domains_management", "dedicated_ips_management" - `push_notifications`: "view", "create_edit_delete", "send", "settings" - `companies`: "manage_owned_companies", "manage_other_companies", "settings" The availability of features and permissions depends on your current plan.
Resends or cancels a pending invitation for a user in the organization, depending on the action path parameter. Use `resend` to send a new invitation email to the user, or `cancel` to revoke the pending invitation entirely and remove the user's pending access.
Updates the feature-level permissions for an existing user in the organization. The privileges array follows the same structure as the send invitation endpoint. You only need to provide the permissions that need to be updated. If `all_features_access` is set to `true`, the user receives full permissions on all features and the `privileges` array is ignored. If set to `false`, specify only the features and permissions to update. Available features and their permissions: - `email_campaigns`: "create_edit_delete", "send_schedule_suspend" - `sms_campaigns`: "create_edit_delete", "send_schedule_suspend" - `contacts`: "view", "create_edit_delete", "import", "export", "list_and_attributes", "forms" - `templates`: "create_edit_delete", "activate_deactivate" - `workflows`: "create_edit_delete", "activate_deactivate_pause", "settings" - `landing_pages`: "all" - `transactional_emails`: "settings", "logs" - `smtp_api`: "smtp", "api_keys", "authorized_ips" - `user_management`: "all" - `sales_platform`: "create_edit_deals", "delete_deals", "manage_others_deals_tasks", "reports", "settings" - `phone`: "all" - `conversations`: "access", "assign", "configure" - `senders_domains_dedicated_ips`: "senders_management", "domains_management", "dedicated_ips_management" - `push_notifications`: "view", "create_edit_delete", "send", "settings" - `companies`: "manage_owned_companies", "manage_other_companies", "settings" The availability of features and permissions depends on your current plan.
Retrieves the granular feature-level permissions assigned to a specific user in the organization, identified by their email address. The response includes the user's current status (active or pending) and a detailed list of privileges specifying which features and permission levels are granted.
Retrieves all webhooks from your Brevo account with filtering and sorting options. If no `type` filter is specified, transactional webhooks are returned by default. Use this to: - Monitor webhook configurations and event handling - List webhooks by type (transactional, marketing, inbound) - Review webhook endpoints and authentication - Track webhook creation and modification history - Audit webhook event subscriptions Key information returned: - Complete webhook details and configuration - Event types and subscriptions - Authentication and security settings - Webhook URLs and custom headers - Creation and modification timestamps Important considerations: - Returns 404 when no webhooks match the specified filter criteria - Results are sorted by creation date in descending order by default - The `sort` parameter accepts `asc` or `desc` values
Creates a new webhook to receive real-time notifications for specified events. You can create up to 40 active webhooks per account (excluding inbound type webhooks). Use this to: - Set up event notifications for transactional or marketing emails - Configure webhook endpoints for campaign tracking - Enable real-time monitoring of email delivery status - Subscribe to contact list changes and updates - Implement custom event handling and automation Key information returned: - Created webhook ID Important considerations: - The `url` field is required and must be a valid URL - The `events` array is required for transactional and marketing types, but optional for inbound type (defaults to `inboundEmailProcessed`) - The `domain` field is required when type is `inbound` and must be a verified active domain - A duplicate URL for the same webhook type is not allowed - Maximum of 40 active webhooks per account (inbound webhooks are exempt from this limit) - The `auth.type` currently only supports `bearer` - Custom headers require both `key` and `value` as non-empty strings
<Note>This is an enterprise feature. To have it activated please send us a request and we will activate it for your account.</Note> Exports webhook event history to CSV format for analysis and reporting. Use this to: - Generate comprehensive webhook event reports - Analyze webhook delivery patterns and success rates - Export event data for external analysis tools - Create historical reports for compliance and auditing - Track webhook performance and reliability metrics Key information returned: - Process ID for tracking export completion - CSV file will be delivered to specified webhook URL
Permanently deletes a webhook and stops all event notifications. Use this to: - Remove unused or obsolete webhook configurations - Clean up webhook endpoints and subscriptions - Stop event notifications to specific URLs - Maintain organized webhook management Key information returned: - Success confirmation of webhook deletion
Retrieves detailed information about a specific webhook configuration. Use this to: - Get complete webhook configuration and settings - Check webhook event subscriptions and triggers - Review authentication and security settings - Verify webhook URL and custom headers - Access webhook creation and modification history Key information returned: - Complete webhook details and configuration - Event types and channel subscriptions - Authentication credentials and methods - Custom headers and request settings - Webhook status and activity information
Updates an existing webhook configuration and event subscriptions. The webhook type (marketing, transactional, or inbound) cannot be changed after creation -- only the URL, events, description, authentication, headers, batching, and domain (for inbound) can be updated. Use this to: - Modify webhook event subscriptions and triggers - Update webhook URL and endpoint configuration - Change authentication settings and credentials - Adjust custom headers and request parameters - Enable or disable batched webhook delivery Important considerations: - The webhook ID must be a valid positive integer and must exist in your account - The webhook type is determined at creation and cannot be changed via update - Events must be valid for the webhook's type (marketing, transactional, or inbound) - A duplicate URL for the same webhook type is not allowed - Setting `auth` to `null` or empty object removes authentication - Setting `headers` to `null` or empty array removes custom headers - The `auth.type` currently only supports `bearer`
Retrieve a paginated list of all your WhatsApp campaigns with their statistics and metadata. Results can be filtered by creation date range using startDate and endDate, with a default limit of 50 and maximum of 100 per page. The sort order defaults to descending by modification date.
Create a new WhatsApp campaign and schedule it for sending. The campaign requires a name, an approved WhatsApp template ID, a scheduled sending time, and recipients (either list IDs or segment IDs). The template must be in an approved state before it can be used. <Note>You can use this API for WhatsApp only if you have setup your WhatsApp account on Brevo platform. To setup your WhatsApp account, follow the steps in the guide below. [Activating Whatsapp](https://developers.brevo.com/docs/whatsapp-campaigns-1) in your account</Note> <Note>This API requires the List and Segment ids as recipients in Body params. You can use the below Contact endpoints to get the required information. [Get all the Lists](https://developers.brevo.com/reference/getlists-1) [Get all the Segments](https://developers.brevo.com/reference/getsegments)</Note>
Retrieve the configuration and status of your WhatsApp Business API account, including verification status, phone number name status, phone number quality rating, sending limit tier, and overall account approval status. You must have a configured WhatsApp account on the Brevo platform to use this endpoint.
Retrieve a paginated list of all your WhatsApp templates with their status, category, language, and metadata. Results can be filtered by creation date range and optionally by source (Automation or Conversations), with a default limit of 50 and maximum of 100 per page. The sort order defaults to descending by modification date.
Submit a WhatsApp template for approval by Meta. The template must exist and be in a state that allows submission (e.g. draft or rejected). Once approved, the template can be used in WhatsApp campaigns. You must have a configured WhatsApp account on the Brevo platform to use this endpoint.
Delete a WhatsApp campaign by its campaign ID. The campaign must exist; if the campaign ID is not found, a 404 error is returned. This action is permanent and cannot be undone.
Retrieve detailed information about a specific WhatsApp campaign by its ID, including campaign status, recipients, sender number, template details, and delivery statistics. The response includes the full template structure with body variables, header variables, and button configuration. You must have a configured WhatsApp account on the Brevo platform to use this endpoint.
Update an existing WhatsApp campaign's name, status, recipients, or scheduled sending time. The campaign must exist and be in a modifiable state (draft or scheduled). Use the rescheduleFor field to change the sending time. You must have a configured WhatsApp account on the Brevo platform to use this endpoint.
Create a new WhatsApp message template with the specified name, language, category, and body text. Templates can optionally include a text header (max 45 characters) or a media header (image, video, or PDF via URL). The body text supports a maximum of 1024 characters. The template must be submitted for approval before it can be used in campaigns.
Send a WhatsApp message to one or more contacts. You must have your WhatsApp account set up on the Brevo platform before using this endpoint. The first message sent via the API must use a `templateId` (created on the Brevo WhatsApp interface); subsequent messages can use free-form `text` instead. Provide the `senderNumber` (your WhatsApp business number with country code) and an array of `contactNumbers` (recipient phone numbers with country codes). When using a template, you can pass a `params` object to customize template variables. If both `templateId` and `text` are provided, the template takes precedence. <Note>You can use this API for WhatsApp only if you have setup your WhatsApp account on Brevo platform. To setup your WhatsApp account, follow the steps in the guide below. [Activating Whatsapp](https://developers.brevo.com/docs/whatsapp-campaigns-1) in your account</Note>
Retrieve a paginated list of individual WhatsApp event records (unaggregated), including event type, contact number, sender number, message ID, timestamp, and contextual fields like body text, media URL, and error reason where applicable. If no date filter is provided, the report defaults to the past 30 days. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (positive integer, not compatible with date range), by `contactNumber`, or by `event` type (sent, delivered, read, error, unsubscribe, reply, soft-bounce). The maximum date range cannot exceed 90 days. Results default to 2500 per page (max 10000) and are sorted in descending order unless overridden.
Brevo MCP runs through a gateway that holds the credentials, scopes the access and records every call.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"mewcp": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://gateway.mewcp.com/personal/mcp",
"--header",
"Authorization: Bearer API_KEY"
]
}
}
}Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Managed auth, hosted MCP servers, and every Gmail tool your agent needs.
Free to start.