Dispatch outbound emails through your aliases, compile Markdown into responsive email HTML, stage attachments via presigned URLs, and inspect delivery history.
Quick Reference
| Endpoint | Method | Scope | Purpose |
|---|---|---|---|
/v1/quick-send | POST | quick_send:write | Dispatch an outbound email through a verified alias |
/v1/quick-send/attachments/presign | POST | quick_send:write | Generate a presigned URL to stage an email attachment |
/v1/quick-send/attachments | DELETE | quick_send:write | Delete a staged attachment before dispatch |
/v1/quick-send/aliases | GET | quick_send:read | List eligible sending aliases with category metadata |
/v1/quick-send/sent | GET | quick_send:read | Retrieve paginated outbound dispatch logs |
/v1/quick-send/sent | DELETE | quick_send:write | Bulk delete records from your sent email history |
/v1/quick-send/signature | GET | quick_send:read | Retrieve configured outbound email signature |
/v1/quick-send/signature | PATCH | quick_send:write | Update outbound email signature and active toggle |
Deliverability Pre-Flight Safeguards
Every outbound dispatch passes through an automated pre-flight security scanner before mail delivery is attempted:
- MX Record Resolution: The API queries recipient email domains in real time. Dispatches to domains without valid MX or fallback mail exchangers are rejected with
INVALID_RECIPIENT_DOMAINbefore consuming sending quotas. - Permanent Bounce Suppression: Senders cannot dispatch to addresses that previously generated hard bounces (e.g. invalid recipient mailbox).
- Reputation Throttle: If 3 or more hard bounces occur within a 1-hour rolling window, outbound dispatching is temporarily throttled with
BOUNCE_RATE_LIMIT_EXCEEDEDto safeguard your domain's delivery reputation. - Executable File Defense: Files matching restricted extensions (
.exe,.bat,.cmd,.dll,.apk,.vbs,.js, etc.) are blocked immediately.
POST /v1/quick-send — Dispatch Outbound Email
Scope: quick_send:write · Rate Limit: 30/min · Idempotent: Yes (with Idempotency-Key)
Delivers an email message to external recipients through an alias registered to your workspace. Supports raw HTML, GitHub-Flavored Markdown with automated CSS inlining, presigned attachments, and automated alias provisioning.
Request Headers
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer afp_... developer API key. |
Idempotency-Key | string | Optional | Unique client-generated UUID to guarantee exactly-once dispatch. |
Content-Type | string | Yes | Must be application/json. |
Request Body Parameters
| Parameter | Type | Required | Constraints | Description |
|---|---|---|---|---|
to | string | string[] | Yes | Valid email(s) | Primary recipient address or array of recipient addresses. |
from | string | Optional* | Valid alias email | Sending address (e.g. support@custom-domain.com or Help Desk <support@custom-domain.com>). *Required if aliasId is omitted. |
aliasId | string | Optional* | al_ ID | Unique sending alias identifier. *Required if from is omitted. |
senderName | string | Optional | 1–100 chars | Display name appearing in the recipient's inbox. |
cc | string | string[] | Optional | Valid email(s) | Carbon copy recipient address(es). |
bcc | string | string[] | Optional | Valid email(s) | Blind carbon copy recipient address(es). |
subject | string | Optional | Max 255 chars | Email subject line. |
html | string | Optional** | Valid HTML | Rich HTML message body. |
markdown | string | Optional** | Valid Markdown | GitHub-Flavored Markdown body compiled to responsive email HTML. |
markdown_theme | string | Optional | plain, card, dark | Visual styling preset for Markdown emails. Defaults to plain. |
text | string | Optional** | Plain text | Plain text fallback message body. |
auto_create_alias | boolean | Optional | Boolean | When true, automatically registers the from alias if it does not yet exist. |
alias_ttl_days | integer | Optional | 1–365 | Automatically set an expiration countdown on the sending alias (verified custom domains only). |
replyTo | string | Optional | Valid email | Direct reply-to destination email address. |
attachments | array | Optional | Max 18 MB total | Array of attachment descriptor objects. |
parentMessageId | string | Optional | RFC Message-ID | Populates In-Reply-To and References headers for conversation threading. |
Content Resolution: You must provide at least one content body parameter: html, markdown, text, or body. If markdown is provided, AliasFleet compiles the markdown AST into styled inline HTML and creates a plain-text fallback automatically.
Example Request: Markdown Dispatch with Idempotency
curl -X POST "https://api.aliasfleet.com/v1/quick-send" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Idempotency-Key: 7b848df8-7a5f-4a0b-9dfc-e0cb2cb39031" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme Orders <billing@acme-corp.com>",
"to": "client@enterprise.com",
"subject": "Monthly Service Summary",
"markdown": "## Account Summary\n\nYour deployment completed successfully:\n\n* **Nodes**: 12 active\n* **Uptime**: 99.98%\n\n```json\n{\"status\": \"healthy\"}\n```\n\n[Review Dashboard](https://acme-corp.com/dash)",
"markdown_theme": "card"
}'
Response (200 OK)
{
"success": true,
"messageId": "<4b9c1d2e-3f4a-5b6c-7d8e-9f0a1b2c3d4e@acme-corp.com>",
"sentAt": "2026-09-04T12:30:00.000Z",
"from": "billing@acme-corp.com"
}
Errors
| Status | Code | Cause & Resolution |
|---|---|---|
400 Bad Request | SENDER_REQUIRED | Neither from nor aliasId was provided in the request payload. |
400 Bad Request | INVALID_RECIPIENT | The to address array contains no valid RFC email addresses. |
400 Bad Request | INVALID_RECIPIENT_DOMAIN | Recipient domain has no valid MX records published in DNS. |
400 Bad Request | RECIPIENT_SUPPRESSED | Recipient address previously failed with a permanent mailbox bounce. |
400 Bad Request | BLOCKED_FILE_TYPE | Attachment has a blocked extension (.exe, .bat, etc.). |
400 Bad Request | ATTACHMENTS_TOO_LARGE | Combined attachment size exceeds the 18 MB limit. |
402 Payment Required | PRO_FEATURE | Quick-Send requires an active Pro or Business subscription. |
403 Forbidden | LIMIT_REACHED | Daily outbound dispatch limit reached. Upgrade tier to expand quota. |
403 Forbidden | INSUFFICIENT_BANDWIDTH | Workspace monthly outbound bandwidth exhausted. |
404 Not Found | ALIAS_NOT_FOUND | Specified sending alias does not exist. Pass auto_create_alias: true to provision automatically. |
429 Too Many Requests | BOUNCE_RATE_LIMIT_EXCEEDED | 3+ hard bounces detected within 1 hour. Delivery paused temporarily. |
POST /v1/quick-send/attachments/presign — Presign Attachment Upload
Scope: quick_send:write · Rate Limit: 60/min · Idempotent: No
Generates an authenticated, short-lived presigned upload URL for staging email attachments prior to dispatch. Client applications upload binary payloads directly via an HTTP PUT request to avoid routing large multi-megabyte payloads through the primary API gateway.
Request Body Parameters
| Parameter | Type | Required | Constraints | Description |
|---|---|---|---|---|
filename | string | Yes | Non-executable | Name of the file (e.g. invoice-august.pdf). |
fileSize | integer | Yes | Max 18,874,368 bytes | File size in bytes (max 18 MB). |
contentType | string | Yes | Valid MIME type | MIME type of the file (e.g. application/pdf, image/png). |
Example Request
curl -X POST "https://api.aliasfleet.com/v1/quick-send/attachments/presign" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Content-Type: application/json" \
-d '{
"filename": "quarterly-report.pdf",
"fileSize": 1450000,
"contentType": "application/pdf"
}'
Response (200 OK)
{
"success": true,
"uploadUrl": "https://storage.aliasfleet.com/attachments/usr_abc123/9f8e7d6c-quarterly-report.pdf?X-Amz-Signature=...",
"key": "attachments/usr_abc123/9f8e7d6c-quarterly-report.pdf"
}
Upload the raw file directly to the returned uploadUrl using standard HTTP PUT:
curl -X PUT "https://storage.aliasfleet.com/attachments/usr_abc123/9f8e7d6c-quarterly-report.pdf?X-Amz-Signature=..." \
-H "Content-Type: application/pdf" \
--data-binary "@quarterly-report.pdf"
Once uploaded, pass the key into the attachments array when calling POST /v1/quick-send:
{
"attachments": [
{
"filename": "quarterly-report.pdf",
"key": "attachments/usr_abc123/9f8e7d6c-quarterly-report.pdf",
"size": 1450000,
"contentType": "application/pdf"
}
]
}
Errors
| Status | Code | Cause & Resolution |
|---|---|---|
400 Bad Request | BLOCKED_FILE_TYPE | Filename contains a forbidden executable extension. |
400 Bad Request | FILE_TOO_LARGE | fileSize exceeds 18 MB. |
403 Forbidden | INSUFFICIENT_BANDWIDTH | File size exceeds remaining monthly bandwidth quota. |
DELETE /v1/quick-send/attachments — Delete Staged Attachment
Scope: quick_send:write · Rate Limit: 60/min · Idempotent: Yes
Removes an uploaded attachment key from staging storage before an email dispatch takes place.
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Attachment storage key returned by the presign endpoint. |
Example Request
curl -X DELETE "https://api.aliasfleet.com/v1/quick-send/attachments" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Content-Type: application/json" \
-d '{
"key": "attachments/usr_abc123/9f8e7d6c-quarterly-report.pdf"
}'
Response (200 OK)
{
"success": true,
"message": "Attachment deleted successfully"
}
GET /v1/quick-send/aliases — List Eligible Sending Aliases
Scope: quick_send:read · Rate Limit: 60/min · Idempotent: Yes
Lists active aliases available for outbound email dispatch, pre-formatted for dropdown selectors or sender validation. Includes category styling tags and description metadata.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
search | string | Optional | Substring filter applied against local_part, domain, or description. |
limit | integer | Optional | Maximum number of aliases to return (default: 50). |
Example Request
curl -X GET "https://api.aliasfleet.com/v1/quick-send/aliases?search=support" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Accept: application/json"
Response (200 OK)
{
"aliases": [
{
"id": "al_6c5J5LMXd5E3Yq1Wx1zN",
"email": "support@acme-corp.com",
"localPart": "support",
"domain": "acme-corp.com",
"description": "Customer Support Dispatch Inbox",
"category_id": "acat_1a2b3c4d5e6f7g8h",
"category": {
"name": "Customer Care",
"color": "#6366f1",
"icon": "life-buoy"
}
}
]
}
GET /v1/quick-send/sent — List Sent Email History
Scope: quick_send:read · Rate Limit: 60/min · Idempotent: Yes
Returns a paginated log of all outbound emails dispatched from your workspace, including delivery status, recipient lists, attachment counts, and delivery timestamps.
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | Optional | 1 | Page number for pagination. |
limit | integer | Optional | 20 | Results per page (max 100). |
sortField | string | Optional | created_at | Field to sort by: created_at, recipient_email, or subject. |
sortOrder | string | Optional | desc | Sort direction: asc or desc. |
Example Request
curl -X GET "https://api.aliasfleet.com/v1/quick-send/sent?page=1&limit=2" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Accept: application/json"
Response (200 OK)
{
"emails": [
{
"id": "e9a8b7c6-d5e4-f3a2-b1c0-9876543210ab",
"alias_id": "al_6c5J5LMXd5E3Yq1Wx1zN",
"recipient_email": "client@enterprise.com",
"cc_emails": [],
"bcc_emails": [],
"subject": "Monthly Service Summary",
"body_text": "Account Summary\n\nYour deployment completed successfully...",
"body_html": "<div style=\"font-family: sans-serif;\"><h2>Account Summary</h2>...</div>",
"status": "sent",
"error_message": null,
"sent_at": "2026-09-04T12:30:00.000Z",
"created_at": "2026-09-04T12:29:58.000Z",
"attachments": [],
"from_name": "Acme Orders",
"message_id": "<4b9c1d2e-3f4a-5b6c-7d8e-9f0a1b2c3d4e@acme-corp.com>",
"aliases": {
"local_part": "billing",
"domains": {
"domain": "acme-corp.com"
}
}
}
],
"pagination": {
"page": 1,
"limit": 2,
"total": 85,
"totalPages": 43
}
}
DELETE /v1/quick-send/sent — Bulk Delete Sent Email History
Scope: quick_send:write · Rate Limit: 60/min · Idempotent: Yes
Permanently deletes specified sent email records and their stored message copies from your account log history.
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | string[] | Yes | Array of sent email record IDs to remove. |
Example Request
curl -X DELETE "https://api.aliasfleet.com/v1/quick-send/sent" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"e9a8b7c6-d5e4-f3a2-b1c0-9876543210ab"
]
}'
Response (200 OK)
{
"success": true,
"message": "1 email record(s) deleted successfully",
"count": 1
}
GET /v1/quick-send/signature — Inspect Outbound Signature
Scope: quick_send:read · Rate Limit: 60/min · Idempotent: Yes
Retrieves the plain-text email signature configured for outbound messages.
Example Request
curl -X GET "https://api.aliasfleet.com/v1/quick-send/signature" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Accept: application/json"
Response (200 OK)
{
"signature": "--\nAcme Corporation Operations\nhttps://acme-corp.com",
"enabled": true
}
PATCH /v1/quick-send/signature — Update Outbound Signature
Scope: quick_send:write · Rate Limit: 60/min · Idempotent: Yes
Configures or toggles the automatic email signature appended to outgoing quick-send messages. HTML tags are stripped automatically to preserve clean deliverability.
Request Body Parameters
| Parameter | Type | Required | Constraints | Description |
|---|---|---|---|---|
signature | string | Optional | Max 1000 chars | Text signature to append to outbound messages. |
enabled | boolean | Optional | Boolean | Whether to automatically append the signature to dispatched emails. |
Example Request
curl -X PATCH "https://api.aliasfleet.com/v1/quick-send/signature" \
-H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \
-H "Content-Type: application/json" \
-d '{
"signature": "--\nAcme Corporation Technical Support\nhelp@acme-corp.com",
"enabled": true
}'
Response (200 OK)
{
"success": true
}
Errors
| Status | Code | Cause & Resolution |
|---|---|---|
400 Bad Request | BAD_REQUEST | Signature content exceeds the 1,000 character maximum. |
429 Too Many Requests | RATE_LIMIT | Too many signature update requests in a short period. |