E-mail Verzenden

Send individual transactional emails using the /v3/smtp/email endpoint.

Endpoint

POST /v3/smtp/email

Verzoeklichaam

Basic Email

{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"subject": "Welcome to our service!",
"htmlContent": "<html><body><h1>Welcome!</h1><p>Thank you for signing up.</p></body></html>"
}

Advanced Email

{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"cc": [
{
"email": "[email protected]",
"name": "CC User"
}
],
"bcc": [
{
"email": "[email protected]"
}
],
"subject": "Order Confirmation #{{order_id}}",
"htmlContent": "<html><body><h1>Order Confirmed</h1><p>Your order {{order_id}} has been confirmed.</p></body></html>",
"textContent": "Your order {{order_id}} has been confirmed.",
"params": {
"order_id": "12345"
},
"tags": ["transactional", "order-confirmation"],
"headers": {
"X-Custom-Header": "custom-value"
}
}

Codevoorbeelden

JavaScript/Node.js

const brevo = require('@brevo/api');
const apiInstance = new brevo.TransactionalEmailsApi();
apiInstance.setApiKey(brevo.TransactionalEmailsApiApiKeys.apiKey, process.env.BREVO_API_KEY);
const sendEmail = async () => {
const sendSmtpEmail = new brevo.SendSmtpEmail();
sendSmtpEmail.subject = "Welcome to our service!";
sendSmtpEmail.htmlContent = "<html><body><h1>Welcome!</h1></body></html>";
sendSmtpEmail.sender = { name: "Your App", email: "[email protected]" };
sendSmtpEmail.to = [{ email: "[email protected]", name: "John Doe" }];
try {
const result = await apiInstance.sendTransacEmail(sendSmtpEmail);
console.log('Email sent:', result);
return result;
} catch (error) {
console.error('Error sending email:', error);
throw error;
}
};

Python

import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'YOUR_API_KEY'
api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(configuration))
send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(
to=[{"email": "[email protected]", "name": "John Doe"}],
sender={"name": "Your App", "email": "[email protected]"},
subject="Welcome to our service!",
html_content="<html><body><h1>Welcome!</h1></body></html>"
)
try:
api_response = api_instance.send_transac_email(send_smtp_email)
print(api_response)
except ApiException as e:
print("Exception when calling TransactionalEmailsApi->send_transac_email: %s\n" % e)

cURL

Terminal window
curl -X POST "https://api.brevo.com/v3/smtp/email" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d '{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"subject": "Welcome to our service!",
"htmlContent": "<html><body><h1>Welcome!</h1></body></html>"
}'

Antwoord

Success Antwoord (201 Created)

{
"messageId": "<[email protected]>"
}

Error Antwoords

Invalid API Key (401)

{
"code": "unauthorized",
"message": "Invalid API key provided"
}

Invalid Email Format (400)

{
"code": "invalid_parameter",
"message": "Invalid email format in 'to' field"
}

Rate Limit Exceeded (429)

{
"code": "too_many_requests",
"message": "Rate limit exceeded"
}

Parameters

Vereiste Parameters

ParameterTypeDescription
senderobjectSender information
toarrayArray of recipient objects
subjectstringEmail subject line

Optionele Parameters

ParameterTypeDescription
htmlContentstringHTML content of the email
textContentstringText content of the email
ccarrayCC recipients
bccarrayBCC recipients
replyToobjectReply-to address
attachmentsarrayFile attachments
paramsobjectTemplate parameters
tagsarrayEmail tags for tracking
headersobjectCustom headers

Template Variables

Use template variables in your subject and content:

{
"subject": "Welcome {{firstName}}!",
"htmlContent": "<h1>Hello {{firstName}} {{lastName}}</h1>",
"params": {
"firstName": "John",
"lastName": "Doe"
}
}

Attachments

Include file attachments:

{
"attachments": [
{
"content": "base64_encoded_content",
"name": "invoice.pdf"
},
{
"url": "https://example.com/document.pdf",
"name": "document.pdf"
}
]
}

Beste Praktijken

  1. Always include both HTML and text content for better deliverability
  2. Use template variables instead of concatenating content
  3. Include proper sender information to avoid spam filters
  4. Add tags for tracking and analytics
  5. Validate email addresses before sending
  6. Handle errors gracefully with retry logic

Tarieflimieten

  • Free accounts: 300 emails/day
  • Paid accounts: Based on your plan
  • Burst limit: 100 emails/minute

Tracking

Emails sent via this endpoint are automatically tracked for:

  • Delivery status
  • Open rates
  • Click tracking
  • Bounce handling

View detailed analytics in your Brevo dashboard under StatisticsTransactional.