Welcome to Panorama Apps Mailer API Service

Your reliable email API service

Email API Documentation

Send transactional emails via a simple REST API. Authenticate with an API key and send HTML emails to one or more recipients.

Endpoint

URL: POST https://mailer.panoramaapps.com/api/email

Method: POST

Content-Type: application/json

Authentication

Send your API key in the Authorization header. Contact admin@panoramaapps.com to get your API key.

Authorization: YOUR_API_KEY

Request Body

All fields are required. The email body must be sent as Base64-encoded HTML in encodedHtml.

Field Type Description
toEmailsarray of stringsRecipient email addresses
fromstringSender address (e.g. "Name <user@domain.com>")
subjectstringEmail subject (max 998 characters)
encodedHtmlstringBase64-encoded HTML body
{
    "toEmails": ["recipient@example.com"],
    "from": "ABC Company <no-reply@abc.com>",
    "subject": "Your order confirmation",
    "encodedHtml": "PGh0bWw+PGJvZHk+PGgxPkhlbGxvPC9oMT48L2JvZHk+PC9odG1sPg=="
}

How to use: encoding HTML as Base64

Encode your HTML string as Base64 before sending. Examples:

JavaScript (Node or browser):

const html = '<h1>Hello</h1><p>Welcome.</p>';
const encodedHtml = Buffer.from(html, 'utf-8').toString('base64');  // Node
// or: const encodedHtml = btoa(unescape(encodeURIComponent(html)));  // Browser

Shell (e.g. in curl):

echo -n '<h1>Hello</h1>' | base64

Example: cURL

curl -X POST https://mailer.panoramaapps.com/api/email \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_API_KEY" \
  -d '{
    "toEmails": ["customer@example.com"],
    "from": "My App <no-reply@myapp.com>",
    "subject": "Welcome",
    "encodedHtml": "PGh0bWw+PGJvZHk+PGgxPldlbGNvbWUhPC9oMT48L2JvZHk+PC9odG1sPg=="
  }'

Success Response (200 OK)

{
    "success": true,
    "response": {
        "messageId": "<unique-id@host>",
        "accepted": ["recipient@example.com"],
        "rejected": []
    }
}

Error Responses

400 Bad Request — Validation error (e.g. invalid email, missing field, invalid Base64):

{
    "statusCode": 400,
    "statusMessage": "Validation Error...",
    "data": [ { "field": "encodedHtml", "message": "..." } ]
}

401 Unauthorized — Missing or invalid API key:

{
    "statusCode": 401,
    "statusMessage": "Unauthorized",
    "message": "Invalid API Key"
}

500 Internal Server Error — Server or delivery error.

Features

Contact Us

Need help? Reach out at support@panoramaapps.com