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 | Required Scope | Description |
|---|---|---|---|
/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. - Recipient Caps: Outbound dispatches are strictly capped at 5 recipients on Pro and 20 recipients on Business (combined To, Cc, and Bcc).
Dispatch Outbound Email#
POST /v1/quick-send
Delivers an email message to external recipients through an alias registered to your account. Supports rich HTML, GitHub-Flavored Markdown with automated CSS inlining, presigned attachments, and automated alias provisioning.
quick_send:writeRate Limit: 5 req/minIdempotent: Yes (with Idempotency-Key)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 Schema#
| Field | 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. billing@company.com). *Required if aliasId is omitted. |
aliasId | string | Optional* | UUID | Sending alias UUID. *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 staged via the presign endpoint. |
parentMessageId | string | Optional | RFC Message-ID | Populates In-Reply-To and References headers for conversation threading. |
cURL Example#
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": "billing@company.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```", "markdown_theme": "card" }'Response (200 OK)#
{ "success": true, "messageId": "<4b9c1d2e-3f4a-5b6c-7d8e-9f0a1b2c3d4e@company.com>", "sentAt": "2026-09-04T12:30:00.000Z", "from": "billing@company.com"}Error Responses#
| Status Code | Code | Error Message | Reason |
|---|---|---|---|
400 | INVALID_RECIPIENT | "At least one valid recipient is required in \"to\"" | No valid email address provided in to. |
400 | INVALID_RECIPIENT_DOMAIN | "Recipient domain has no valid MX records" | Recipient domain has no valid MX records published in DNS. |
400 | RECIPIENT_SUPPRESSED | "Recipient is on suppression list" | Recipient address previously failed with a permanent mailbox bounce. |
400 | BLOCKED_FILE_TYPE | "Executable file types are prohibited" | Attachment has a blocked extension (.exe, .bat, etc.). |
400 | ATTACHMENTS_TOO_LARGE | "Total attachment size exceeds 18 MB" | Combined attachment size exceeds the 18 MB limit. |
403 | PRO_FEATURE | "Quick Send is a Pro/Business feature. Please upgrade your plan to send emails." | Accounts on Free tier cannot access outbound Quick-Send. |
403 | BUSINESS_TIER_REQUIRED | "Developer API access is an exclusive Business tier feature. Please upgrade your subscription to use programmatic API keys." | Calling via developer API key requires an active Business tier subscription. |
403 | RECIPIENT_LIMIT_EXCEEDED | "Recipient limit exceeded. Your plan allows a maximum of 5 recipients (combined To, Cc, and Bcc)." | Exceeded plan's recipient limit (5 on Pro, 20 on Business). |
403 | LIMIT_REACHED | "You have reached your daily sending limit. Please try again tomorrow or upgrade your plan." | Daily outbound sending quota exhausted. |
403 | INSUFFICIENT_BANDWIDTH | "Bandwidth limit reached" | Account monthly outbound bandwidth exhausted. |
404 | ALIAS_NOT_FOUND | "Sending alias not found" | Specified sending alias does not exist. |
429 | RATE_LIMIT_EXCEEDED | "Too Many Requests" | Exceeded 5 req/min rate limit on Quick-Send. Check Retry-After. |
429 | BOUNCE_RATE_LIMIT_EXCEEDED | "Delivery throttled due to high bounce rate" | 3+ hard bounces detected within 1 hour. Delivery paused temporarily. |
Presign Attachment Upload#
POST /v1/quick-send/attachments/presign
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.
quick_send:writeRate Limit: 60 req/minIdempotent: NoRequest Body Schema#
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
filename | string | Yes | Non-executable | Name of the file (e.g. invoice.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). |
Response (200 OK)#
{ "success": true, "uploadUrl": "https://storage.aliasfleet.com/attachments/d3b07384-d113-4674-bc50-a88981298418/quarterly-report.pdf?X-Amz-Signature=...", "key": "attachments/d3b07384-d113-4674-bc50-a88981298418/quarterly-report.pdf"}Delete Staged Attachment#
DELETE /v1/quick-send/attachments
Removes an uploaded attachment key from staging storage before an email dispatch takes place.
quick_send:writeRate Limit: 60 req/minIdempotent: YesRequest Body Schema#
| Field | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Attachment storage key returned by the presign endpoint. |
Response (200 OK)#
{ "success": true, "message": "Attachment deleted successfully"}List Sent Emails#
GET /v1/quick-send/sent
Retrieves a paginated list of outbound messages dispatched via Quick-Send.
quick_send:readRate Limit: 60 req/minQuery Parameters#
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | Optional | 20 | Items per page (min 1, max 100). |
offset | integer | Optional | 0 | Number of records to skip. |
Response (200 OK)#
{ "success": true, "sentEmails": [ { "id": "7b848df8-7a5f-4a0b-9dfc-e0cb2cb39031", "from_email": "billing@company.com", "to_email": "client@enterprise.com", "subject": "Monthly Service Summary", "status": "sent", "created_at": "2026-09-04T12:30:00.000Z" } ], "total": 1}