API Reference¶
The InteSys Transactional Email API (powered by FrontEngine) is an HTTP JSON-based API with RPC-style endpoints. Each action has its own endpoint. All requests use HTTPS with POST method and JSON-encoded parameters.
Base URL: https://app1.frontengine.net
Authentication¶
All API requests require the X-Server-API-Key header with your server API key.
Obtain your API key from the InteSys client portal or contact support.
Keep Your API Key Secret
Never expose your API key in client-side code, public repositories, or logs. Rotate keys immediately if compromised.
Authentication Errors¶
| Error | Description |
|---|---|
InvalidServerAPIKey | The provided token is invalid. Response includes the rejected token value. |
ServerSuspended | The mail server associated with your credentials has been suspended. |
Response Format¶
All API responses follow this structure:
| Field | Type | Description |
|---|---|---|
status | string | success, parameter-error, or error |
time | float | Server-side processing time in seconds |
flags | object | Additional metadata (pagination, etc.) |
data | object | Response payload or error details |
HTTP Status Codes¶
| Code | Meaning |
|---|---|
200 | Request processed (check status field for result) |
301 / 308 | Redirect (usually http to https) |
500 | Unexpected server error |
503 | Service unavailable (maintenance) |
Send API¶
Send Message¶
Send a transactional email with full control over headers, body, and attachments.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
to | array | Yes | Recipient email addresses (max 50) |
cc | array | No | Carbon copy addresses (max 50) |
bcc | array | No | Blind carbon copy addresses (max 50) |
from | string | Yes | Sender email address (must be verified domain) |
sender | string | No | Sender header (if different from from) |
subject | string | Yes | Email subject line |
tag | string | No | Classification tag for filtering in analytics |
reply_to | string | No | Reply-to address |
plain_body | string | No* | Plain text email content |
html_body | string | No* | HTML-formatted email content |
attachments | array | No | File attachments (see below) |
headers | object | No | Custom email headers |
bounce | boolean | No | Whether this message is a bounce response |
*At least one of html_body or plain_body must be provided.
Attachment Object:
| Field | Type | Description |
|---|---|---|
name | string | Filename (e.g., invoice.pdf) |
content_type | string | MIME type (e.g., application/pdf) |
data | string | Base64-encoded file content |
Error Codes:
| Error | Description |
|---|---|
ValidationError | General parameter validation failure |
NoRecipients | No recipient addresses provided |
NoContent | Neither html_body nor plain_body provided |
TooManyToAddresses | More than 50 to addresses |
TooManyCCAddresses | More than 50 cc addresses |
TooManyBCCAddresses | More than 50 bcc addresses |
FromAddressMissing | No from address specified |
UnauthenticatedFromAddress | Sending domain not verified for this server |
AttachmentMissingName | Attachment provided without filename |
AttachmentMissingData | Attachment provided without data |
Example: curl¶
curl -X POST https://app1.frontengine.net/api/v1/send/message \
-H "X-Server-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"from": "[email protected]",
"to": ["[email protected]"],
"subject": "Order Confirmation #12345",
"html_body": "<h1>Thank you for your order!</h1><p>Order #12345 has been confirmed.</p>",
"plain_body": "Thank you for your order! Order #12345 has been confirmed.",
"tag": "order-confirmation",
"reply_to": "[email protected]"
}'
Example: Python¶
import requests
response = requests.post(
"https://app1.frontengine.net/api/v1/send/message",
headers={
"X-Server-API-Key": "your-api-key",
"Content-Type": "application/json",
},
json={
"from": "[email protected]",
"to": ["[email protected]"],
"subject": "Welcome!",
"html_body": "<h1>Welcome to our platform!</h1>",
},
)
print(response.json())
Example: Node.js¶
const response = await fetch(
"https://app1.frontengine.net/api/v1/send/message",
{
method: "POST",
headers: {
"X-Server-API-Key": "your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "[email protected]",
to: ["[email protected]"],
subject: "Welcome!",
html_body: "<h1>Welcome to our platform!</h1>",
}),
}
);
const data = await response.json();
console.log(data);
Send Raw (RFC2822)¶
Send a pre-formatted RFC2822 message. Useful for applications that construct their own MIME messages.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
mail_from | string | Yes | Envelope sender address |
rcpt_to | array | Yes | Recipient addresses for delivery |
data | string | Yes | Base64-encoded RFC2822 message |
bounce | boolean | No | Whether this is a bounce response |
Error Codes:
| Error | Description |
|---|---|
UnauthenticatedFromAddress | Sender domain not verified for this server |
Messages API¶
Get Message Details¶
Retrieve complete details about a sent message.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The message ID |
_expansions | array/boolean | No | Request additional data fields. Pass true for all expansions or an array of expansion names. |
Error Codes:
| Error | Description |
|---|---|
MessageNotFound | No message found with the provided ID |
Get Delivery Attempts¶
Retrieve all delivery attempts for a specific message.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The message ID |
Error Codes:
| Error | Description |
|---|---|
MessageNotFound | No message found with the provided ID |
Next Steps¶
- Authentication — Configure SPF, DKIM, and DMARC for your sending domain
- Webhooks — Receive real-time delivery event notifications