Skip to content

Send email

Send emails programmatically via our API.

POST /v1/send-email

The request body should be a JSON object with the following parameters:

ParameterTypeRequiredDescription
fromstringEmail address of the sender.
tostringEmail address of the recipient.
subjectstringSubject line of the email.
htmlstring-

HTML content of the email. Required if text is not provided.

textstring-

Plain text content of the email. Required if html is not provided.

{
"from": "[email protected]",
"subject": "Your Subject Here",
"html": "<h1>Hello World</h1><p>This is the HTML content.</p>",
"text": "Hello World\nThis is the plain text content."
}

Indicates the email has been successfully queued for sending.

{
"success": true,
"message": "Email queued for sending"
}

Indicates invalid parameters in the request body. The message field provides details about the specific validation errors.

{
"success": false,
"message": "`to` is invalid. `subject` can't be blank"
}

Indicates an invalid or missing API key.

{
"success": false,
"message": "Invalid or missing API key"
}

Indicates an issue with the subscription or usage limits. The error field provides more details.

{
"success": false,
"message": "Subscription expired",
"error": "Your subscription has expired. Please renew your subscription to continue sending emails. Go to https://app.usepoodle.com/upgrade to renew your subscription."
}
{
"success": false,
"message": "Trial limit reached",
"error": "Your free trial emails have been used up. Please upgrade to a paid plan to continue sending emails. Go to https://app.usepoodle.com/upgrade to upgrade your plan."
}
{
"success": false,
"message": "Monthly limit reached",
"error": "Monthly email limit reached. Please upgrade your plan to send more emails. Go to https://app.usepoodle.com/upgrade to upgrade your plan."
}

Indicates the account is suspended, often due to high bounce or complaint rates. The error field provides more details.

{
"success": false,
"message": "Account suspended",
"error": "Your account is suspended due to a high bounce rate (15%). Please contact support." // Example message
}

Indicates an internal error occurred. This should be rare, but the error field might provide more context.

{
"success": false,
"message": "Failed to queue email",
"error": "Internal error details" // Optional
}

Indicates the rate limit has been exceeded. Check the retry-after HTTP header for guidance on when to retry.

{
"success": false,
"message": "Rate limit exceeded",
"error": "Too many requests. Try again after 1 second." // Example message
}