Tóm tắt
Các API của Brevo cho phép bạn gửi email tiếp thị, email giao dịch và tin nhắn SMS theo chương trình. Bạn xác thực bằng khóa API, gửi yêu cầu đến api.brevo.com và sử dụng webhook để theo dõi việc gửi và tương tác. Để thử nghiệm, hãy sử dụng Apidog để xác thực payload, kiểm tra trình xử lý webhook và đảm bảo tích hợp của bạn xử lý các email bị trả lại và hủy đăng ký một cách chính xác.
Giới thiệu
Brevo (trước đây là Sendinblue) xử lý hàng triệu email mỗi ngày cho hơn 500.000 doanh nghiệp. Nó xử lý các chiến dịch tiếp thị, email giao dịch, tiếp thị SMS và quy trình tự động hóa.
API email có vẻ đơn giản – gửi một tin nhắn là xong. Nhưng các hệ thống email sản xuất cần xử lý các email bị trả lại, khiếu nại spam, hủy đăng ký và thời gian gửi. Brevo quản lý sự phức tạp này để bạn không cần phải làm.
API bao gồm ba trường hợp sử dụng chính:
- Chiến dịch tiếp thị - Gửi email hàng loạt đến danh sách liên hệ
- Email giao dịch - Đặt lại mật khẩu, xác nhận đơn hàng, thông báo
- Tin nhắn SMS - Mã xác minh, cảnh báo, tin nhắn tiếp thị
Xác thực và thiết lập
Lấy khóa API
- Đăng nhập vào Brevo
- Đi tới SMTP & API → API Keys
- Tạo một khóa mới với các quyền thích hợp
- Lưu trữ khóa một cách an toàn
Khóa API nằm trong tiêu đề api-key:
curl -X GET "https://api.brevo.com/v3/account" \
-H "accept: application/json" \
-H "api-key: your-api-key-here"
URL cơ sở API
Tất cả các yêu cầu đều được gửi đến:
https://api.brevo.com/v3/
Giới hạn tỷ lệ
Brevo giới hạn số lượng yêu cầu theo gói:
- Miễn phí: 300 yêu cầu/phút
- Khởi đầu: 600 yêu cầu/phút
- Doanh nghiệp: 1200 yêu cầu/phút
Kiểm tra tiêu đề X-RateLimit-Remaining để theo dõi mức sử dụng.
Gửi email giao dịch
Email giao dịch là những tin nhắn riêng lẻ được kích hoạt bởi hành động của người dùng. Hãy nghĩ đến việc đặt lại mật khẩu, xác nhận đơn hàng, email chào mừng.
Gửi một email đơn giản
curl -X POST "https://api.brevo.com/v3/smtp/email" \
-H "accept: application/json" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"sender": {
"name": "Your App",
"email": "noreply@yourapp.com"
},
"to": [
{
"email": "user@example.com",
"name": "John Doe"
}
],
"subject": "Welcome to Our Platform",
"htmlContent": "<html><body><h1>Welcome!</h1><p>Thanks for signing up.</p></body></html>",
"textContent": "Welcome! Thanks for signing up."
}'
Phản hồi:
{
"messageId": "<20260324123456.123456@relay.brevo.com>"
}
Sử dụng mẫu
Tạo mẫu trong trình chỉnh sửa trực quan của Brevo, sau đó gửi theo ID:
curl -X POST "https://api.brevo.com/v3/smtp/email" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"templateId": 15,
"to": [
{
"email": "user@example.com",
"name": "John Doe"
}
],
"params": {
"name": "John",
"order_number": "ORD-12345",
"tracking_url": "https://tracking.example.com/ORD-12345"
}
}'
Các biến mẫu sử dụng dấu ngoặc kép:
<p>Chào {{params.name}},</p>
<p>Đơn hàng của bạn {{params.order_number}} đã được vận chuyển.</p>
<p><a href="{{params.tracking_url}}">Theo dõi gói hàng của bạn</a></p>
Gửi kèm tệp đính kèm
const response = await fetch('https://api.brevo.com/v3/smtp/email', {
method: 'POST',
headers: {
'api-key': process.env.BREVO_API_KEY,
'content-type': 'application/json'
},
body: JSON.stringify({
sender: { name: 'Your App', email: 'noreply@yourapp.com' },
to: [{ email: 'user@example.com' }],
subject: 'Your Invoice',
htmlContent: '<p>Vui lòng tìm hóa đơn của bạn đính kèm.</p>',
attachment: [
{
name: 'invoice.pdf',
content: base64EncodedPdfContent
}
]
})
})
Chiến dịch tiếp thị
Email tiếp thị được gửi đến danh sách liên hệ. Brevo xử lý các liên kết hủy đăng ký, lên lịch và phân tích.
Tạo một chiến dịch
curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"name": "March Newsletter",
"subject": "What'\''s New in March",
"sender": {
"name": "Your Brand",
"email": "newsletter@yourbrand.com"
},
"type": "classic",
"htmlContent": "<html><body>Nội dung bản tin tại đây...</body></html>",
"recipients": {
"listIds": [12, 15]
},
"scheduledAt": "2026-03-25T09:00:00+00:00"
}'
Gửi ngay lập tức
curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
-H "api-key: your-api-key"
Lấy số liệu thống kê chiến dịch
curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
-H "api-key: your-api-key"
Phản hồi bao gồm:
{
"statistics": {
"delivered": 4850,
"opened": 1455,
"clicked": 291,
"unsubscribed": 12,
"bounces": 150
}
}
Quản lý liên hệ
Liên hệ là những người bạn gửi email đến. Tổ chức họ vào các danh sách và thêm các thuộc tính tùy chỉnh.
Tạo một liên hệ
curl -X POST "https://api.brevo.com/v3/contacts" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"email": "new.user@example.com",
"attributes": {
"FIRSTNAME": "Jane",
"LASTNAME": "Smith",
"PLAN": "premium"
},
"listIds": [12, 15],
"updateEnabled": true
}'
Cờ updateEnabled: true cập nhật các liên hệ hiện có thay vì thất bại.
Lấy chi tiết liên hệ
curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
-H "api-key: your-api-key"
Thêm vào danh sách
curl -X POST "https://api.brevo.com/v3/contacts/lists/12/contacts/add" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"emails": ["user1@example.com", "user2@example.com"]
}'
Xóa khỏi danh sách
curl -X DELETE "https://api.brevo.com/v3/contacts/lists/12/contacts/remove" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"emails": ["user@example.com"]
}'
Hủy đăng ký một liên hệ
curl -X PUT "https://api.brevo.com/v3/contacts/user@example.com" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"emailBlacklisted": true
}'
Tiếp thị SMS
Brevo gửi tin nhắn SMS trên toàn cầu thông qua API SMS của họ.
Gửi một tin nhắn SMS
curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"sender": "YourApp",
"recipient": "+15551234567",
"content": "Mã xác minh của bạn là: 123456",
"type": "transactional"
}'
Gửi tin nhắn SMS tiếp thị
curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"sender": "YourBrand",
"recipient": "+15551234567",
"content": "Giảm giá chớp nhoáng! Giảm 50% chỉ hôm nay. Trả lời STOP để hủy đăng ký.",
"type": "marketing"
}'
Lấy số liệu thống kê SMS
curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
-H "api-key: your-api-key"
Webhooks để theo dõi
Webhooks thông báo cho ứng dụng của bạn về các sự kiện email: đã gửi, đã mở, đã nhấp, bị trả lại, đã hủy đăng ký.
Cấu hình webhooks
Trong bảng điều khiển Brevo: Cài đặt → Webhooks → Thêm webhook
Các sự kiện cần theo dõi:
delivered- Email đã đến hộp thư đếnopened- Người nhận đã mở emailclicked- Người nhận đã nhấp vào một liên kếtbounced- Email bị trả lại (cứng hoặc mềm)spam- Đánh dấu là spamunsubscribed- Người nhận đã hủy đăng ký
Xử lý payload webhook
app.post('/webhooks/brevo', (req, res) => {
const event = req.body
switch (event.event) {
case 'delivered':
console.log(`Email ${event.messageId} đã được gửi đến ${event.email}`)
break
case 'opened':
console.log(`Email đã được mở bởi ${event.email} vào lúc ${event.date}`)
break
case 'bounced':
console.log(`Bị trả lại: ${event.email} - ${event.reason}`)
// Đánh dấu liên hệ là không hợp lệ
markContactBounced(event.email)
break
case 'spam':
console.log(`Khiếu nại spam từ ${event.email}`)
// Xóa khỏi tất cả các danh sách
removeFromAllLists(event.email)
break
case 'unsubscribed':
console.log(`Đã hủy đăng ký: ${event.email}`)
break
}
res.status(200).send('OK')
})
Kiểm thử với Apidog
Các API email có các chế độ lỗi phức tạp. Bạn cần kiểm thử các mẫu, các email bị trả lại và webhook. Apidog giúp ích.

1. Mô phỏng việc gửi email
Trong quá trình phát triển, đừng gửi email thật. Hãy mô phỏng phản hồi:
pm.test('API Email chấp nhận payload hợp lệ', () => {
const response = pm.response.json()
pm.expect(response).to.have.property('messageId')
pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. Kiểm thử xử lý webhook
Tạo các payload webhook mô phỏng trong Apidog:
{
"event": "bounced",
"email": "invalid@example.com",
"messageId": "<12345@relay.brevo.com>",
"reason": "hard_bounce",
"date": "2026-03-24T12:00:00Z",
"subject": "Chào mừng đến với nền tảng của chúng tôi"
}
Gửi đến điểm cuối webhook của bạn và xác minh rằng mã của bạn xử lý được nó.
3. Xác thực mẫu
Lưu payload mẫu và kiểm thử xem các biến có được thay thế đúng cách không:
pm.test('Các biến mẫu hợp lệ', () => {
const payload = pm.request.body.toJSON()
pm.expect(payload.params).to.have.property('name')
pm.expect(payload.params).to.have.property('order_number')
})
4. Tách biệt môi trường
# Môi trường phát triển
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com
# Môi trường sản xuất
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com
Kiểm thử API email Brevo với Apidog - miễn phí
Các lỗi và cách khắc phục thường gặp
400 Bad Request - Thiếu trường bắt buộc
Nguyên nhân: Payload thiếu các trường bắt buộc.
Cách khắc phục: Kiểm tra thông báo lỗi để biết chi tiết:
{
"code": "invalid_parameter",
"message": "sender.email là bắt buộc"
}
401 Unauthorized
Nguyên nhân: Khóa API không hợp lệ hoặc bị thiếu.
Cách khắc phục: Xác minh tiêu đề api-key được đặt đúng cách. Kiểm tra xem khóa có bị thu hồi không.
402 Payment Required
Nguyên nhân: Tài khoản đã vượt quá giới hạn hoặc thiếu tín dụng.
Cách khắc phục:
- Đối với email: Kiểm tra giới hạn email của gói của bạn
- Đối với SMS: Mua tín dụng SMS
429 Too Many Requests
Nguyên nhân: Vượt quá giới hạn tỷ lệ.
Cách khắc phục: Triển khai chiến lược backoff lũy thừa:
async function sendWithRetry(email, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await sendEmail(email)
if (response.status === 429) {
await sleep(Math.pow(2, i) * 1000)
} else {
return response
}
}
throw new Error('Đã vượt quá giới hạn tỷ lệ')
}
404 Contact not found
Nguyên nhân: Đang cố gắng cập nhật một liên hệ không tồn tại.
Cách khắc phục: Sử dụng updateEnabled: true khi tạo liên hệ:
{
"email": "new@example.com",
"updateEnabled": true
}
Thao tác này sẽ tạo hoặc cập nhật liên hệ.
Các lựa chọn thay thế và so sánh
| Tính năng | Brevo | SendGrid | Mailchimp | Postmark |
|---|---|---|---|---|
| Giá | 300 email/ngày miễn phí | 100 email/ngày miễn phí | 500 email/tháng miễn phí | 100 email/tháng miễn phí |
| Email tiếp thị | Có | Có | Có | Không |
| Email giao dịch | Có | Có | Hạn chế | Có (chuyên biệt) |
| SMS | Có | Không | Không | Không |
| Tự động hóa | Có | Có | Có | Hạn chế |
| Trình chỉnh sửa mẫu | Trực quan + mã | Mã | Trực quan | Mã |
Brevo nổi bật với sự hỗ trợ kết hợp email và SMS với giá cả cạnh tranh.
Các trường hợp sử dụng thực tế
Quy trình đặt hàng thương mại điện tử. Một cửa hàng trực tuyến sử dụng Brevo cho: xác nhận đơn hàng (giao dịch), thông báo vận chuyển (giao dịch), phục hồi giỏ hàng bị bỏ quên (tự động hóa tiếp thị) và các chương trình khuyến mãi hàng tuần (chiến dịch tiếp thị). Tất cả từ một tích hợp duy nhất.
Onboarding SaaS. Một công cụ quản lý dự án gửi email chào mừng, đặt lại mật khẩu và lời mời nhóm qua API giao dịch. Các email tiếp thị thông báo các tính năng mới cho người dùng đã đăng ký.
Xác minh SMS. Một ứng dụng fintech sử dụng API SMS của Brevo cho mã xác thực hai yếu tố. Điểm cuối SMS giao dịch gửi mã trong vài giây và các webhook theo dõi lỗi gửi để xử lý lại.
Kết luận
Đây là những gì bạn đã học được:
- API của Brevo xử lý email tiếp thị, giao dịch và SMS
- Xác thực bằng tiêu đề
api-key - Sử dụng các mẫu cho các email nhất quán, dễ bảo trì
- Quản lý liên hệ và danh sách cho các chiến dịch mục tiêu
- Webhooks theo dõi việc gửi, mở, nhấp và trả lại
- Kiểm thử với Apidog trước khi gửi cho người dùng thực
Các bước tiếp theo của bạn:
- Tạo tài khoản Brevo và lấy khóa API
- Gửi email giao dịch đầu tiên của bạn
- Tạo một mẫu trong trình chỉnh sửa trực quan
- Thiết lập các trình xử lý webhook cho các email bị trả lại và hủy đăng ký
- Kiểm thử với Apidog trong quá trình phát triển
Kiểm thử API email Brevo với Apidog - miễn phí
Câu hỏi thường gặp
Brevo và Sendinblue khác nhau như thế nào?Cùng một sản phẩm, tên mới. Sendinblue đổi thương hiệu thành Brevo vào năm 2023. Các API vẫn sử dụng api.brevo.com nhưng bạn sẽ thấy các tham chiếu Sendinblue trong tài liệu cũ hơn.
Tôi có thể gửi bao nhiêu email miễn phí?300 email mỗi ngày trong gói miễn phí. Đó là 9.000 email mỗi tháng. Để gửi nhiều hơn, hãy nâng cấp lên gói trả phí bắt đầu từ 25$/tháng cho 20.000 email.
Tôi có thể sử dụng Brevo cho email lạnh (cold emails) không?Về mặt kỹ thuật là có, nhưng rủi ro. Email lạnh có tỷ lệ bị trả lại và spam cao. Brevo theo dõi danh tiếng người gửi. Tỷ lệ khiếu nại cao có thể khiến tài khoản bị tạm ngưng. Hãy làm nóng tên miền của bạn trước và tuân thủ các thực hành tốt nhất về email.
Làm thế nào để xử lý các email bị trả lại?Lắng nghe các webhook bounced. Các email bị trả lại cứng (hard bounces - email không hợp lệ) nên loại bỏ vĩnh viễn các liên hệ. Các email bị trả lại mềm (soft bounces - hộp thư đầy, sự cố tạm thời) có thể được thử lại. Theo dõi tỷ lệ bị trả lại - nếu vượt quá 5%, danh tiếng người gửi của bạn sẽ giảm.
Sự khác biệt giữa email tiếp thị và email giao dịch là gì?Email giao dịch được kích hoạt bởi hành động của người dùng (mua hàng, đăng ký) và gửi đến một người nhận. Email tiếp thị là các chiến dịch được gửi đến nhiều người nhận cùng lúc. Brevo tách biệt chúng vì lý do khả năng gửi và tuân thủ.
Làm thế nào để thêm liên kết hủy đăng ký?Brevo tự động thêm các liên kết hủy đăng ký vào email tiếp thị. Đối với email giao dịch, hãy thêm liên kết của riêng bạn:
<a href="{{ unsubscribe_url }}">Hủy đăng ký</a>
Tôi có thể gửi email từ tên miền của riêng mình không?Có. Thiết lập các bản ghi SPF, DKIM và DMARC. Brevo cung cấp các giá trị trong Cài đặt → Người gửi & IP. Nếu không có xác thực phù hợp, email có thể vào thư rác.
Làm thế nào để lên lịch gửi email theo một múi giờ cụ thể?Sử dụng tham số scheduledAt với dấu thời gian ISO 8601:
{
"scheduledAt": "2026-03-25T09:00:00-05:00"
}
Điều gì xảy ra nếu tôi đạt giới hạn tỷ lệ?Bạn sẽ nhận được lỗi 429. Phản hồi bao gồm tiêu đề X-RateLimit-Reset với số giây cho đến khi đặt lại. Triển khai chiến lược backoff lũy thừa hoặc xếp hàng email để gửi sau.
