Developer API Overview
Programmatically provision email aliases, manage custom domain routing tables, and dispatch outbound messages through the AliasFleet REST API.
Quickstart#
Make your first authenticated request to verify your API key and inspect your account identity:
curl -X GET "https://api.aliasfleet.com/v1/me" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Accept: application/json"{ "user_id": "d3b07384-d113-4674-bc50-a88981298418", "email": "developer@company.com", "full_name": "Alex Mercer", "role": "user", "tier": "business", "created_at": "2026-09-04T12:00:00.000Z", "auth_type": "api_key", "scopes": [ "aliases:read", "aliases:write", "domains:read", "destinations:read", "analytics:read", "categories:read" ]}Core Conventions#
| Property | Specification |
|---|---|
| Base URL | https://api.aliasfleet.com |
| Transport | TLS 1.3 required. Plain HTTP requests are rejected. |
| Format | JSON (Content-Type: application/json) for all request and response bodies. |
| Authentication | HTTP Bearer token via Authorization: Bearer afp_... or header x-api-key. |
| Date Format | ISO 8601 UTC strings (YYYY-MM-DDTHH:mm:ss.sssZ). |
Authentication#
Generate API keys in your dashboard under Settings → Developer API. All developer keys carry an afp_ prefix followed by 48 hexadecimal characters (52 characters total):
Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1eAlternatively, pass the key via the x-api-key header:
x-api-key: afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1eDeveloper API key access (api_access) is an exclusive capability of the Business subscription plan. Accounts on Free and Pro tiers manage aliases via the interactive web dashboard.
Entity Identifiers#
All database entities across the AliasFleet infrastructure (aliases, destinations, custom domains, rules, webhooks, categories, audit logs) use standard RFC 4122 UUIDs (e.g. 9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c).
The only prefixed strings in the API ecosystem are:
| Prefix | Type | Format | Example |
|---|---|---|---|
afp_ | Developer API Key (Secret) | afp_ + 48 hex characters (52 total) | afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e |
af_whsec_ | Webhook Signing Secret | af_whsec_ + 64 hex characters (73 total) | af_whsec_8f1c4e2b... |
Permission Scopes#
API keys enforce fine-grained resource:action permission scopes. You can tailor each key with the exact permissions required by your application:
| Scope | Category | Description |
|---|---|---|
aliases:read | Aliases | List aliases, inspect stats, check availability, view retention |
aliases:write | Aliases | Create aliases, update metadata, soft-delete, purge, modify recipients |
domains:read | Domains | List system domains and user custom domains, check DNS status |
domains:write | Domains | Register custom domains, provision subdomains, generate DKIM keys |
destinations:read | Destinations | List forwarding destinations, inspect alias usage |
destinations:write | Destinations | Add destinations, resend OTP verification codes, smart reassign aliases |
categories:read | Categories | List alias categories and folder structures |
categories:write | Categories | Create, update, reorder, and delete categories |
sender_rules:read | Sender Rules | List whitelist and blacklist sender rules |
sender_rules:write | Sender Rules | Add sender rules, toggle active status, delete entries |
rules:read | Rules Engine | List priority-ordered conditional routing rules |
rules:write | Rules Engine | Create rules, modify conditions and actions, reorder rule priority |
quick_send:read | Quick Send | List sent messages and inspect outbound dispatch history |
quick_send:write | Quick Send | Dispatch outbound emails via aliases, presign attachment uploads |
analytics:read | Analytics | Query aggregate metrics, email volume trends, and security telemetry |
activity:read | Activity | Query forwarding event logs, view Email X-Ray forensics, export logs |
webhooks:read | Webhooks | List webhook endpoints and inspect delivery attempt logs |
webhooks:write | Webhooks | Create webhook endpoints, rotate signing secrets, dispatch test pings |
user:read | Account | Inspect user profile, monthly bandwidth usage, and plan entitlements |
user:write | Account | Update profile details and global forwarding preferences |
security:read | Security | Inspect suspicious activity threat alerts and dismiss incidents |
Platform Tiers & Feature Entitlements#
AliasFleet provisions features and quotas across three clear tiers: Free, Pro, and Business.
| Resource / Feature | Free Plan | Pro Plan | Business Plan |
|---|---|---|---|
| Developer API Keys | Disabled | Disabled | Enabled |
| Active Aliases | 5 | Unlimited (-1) | Unlimited (-1) |
| Custom Domains | 0 (PLAN_UPGRADE_REQUIRED) | 3 domains | 10 domains (or custom) |
| Catch-All Routing | Disabled | Enabled | Enabled |
| Expiring Aliases (TTL) | Disabled (custom domains only) | Enabled (custom domains only) | Enabled (custom domains only) |
| Verified Destinations | 1 destination | 5 destinations | 20 destinations |
| Monthly Bandwidth | 50 MB (52,428,800 bytes) | 1 GB (1,073,741,824 bytes) | Unlimited (-1) |
| Log Retention | 7 days | 30 days | 90 days |
| Email X-Ray | Disabled | Enabled | Enabled |
| Quick-Send Outbound | Disabled (PRO_FEATURE) | Enabled (max 5 recipients) | Enabled (max 20 recipients) |
| Custom Rules Engine | 0 rules | 20 rules | Unlimited (-1) rules |
| Sender Filtering Rules | Exact email addresses only | Exact + Wildcard/Domain rules | Exact + Wildcard/Domain rules |
| Webhook Endpoints | 0 endpoints | 2 endpoints | Unlimited (-1) endpoints |
| Raw MIME Streaming | Disabled | Disabled | Enabled |
| Alias Categories | 5 categories | 15 categories | Unlimited (-1) categories |
| Sanitized Forwarding | Disabled (standard raw only) | Enabled | Enabled |
| Analytics Access | Basic Overview | Advanced Trends & Senders | Detailed Per-Alias Metrics |
Rate Limits & Response Headers#
Rate limits are evaluated per client or API key using sliding-window limiters:
| Limit Window | Threshold | Enforced On |
|---|---|---|
| Standard Requests | 60 requests / minute | General reading, inspection, and update endpoints |
| Quick-Send Outbound | 5 requests / minute | POST /v1/quick-send to safeguard outbound reputation |
| Alias Creation | 10 creations / minute | POST /v1/aliases to prevent automated namespace squatting |
| Analytics Queries | 10 requests / 10 seconds | GET /v1/analytics to optimize database query performance |
| Destination Creation | 5 requests / minute | POST /v1/destinations to prevent destination flooding |
| Availability Checks | 30 requests / minute | GET /v1/aliases/check per client IP |
Telemetry Headers#
Every API response emits telemetry headers:
X-Response-Time: 12.4msServer-Timing: total;dur=12.4When an idempotent quick-send request is replayed within its 24-hour cache window, the response includes:
X-Idempotent-Replay: trueRate Limit Exceeded (429)#
When a rate limit threshold is crossed, the API returns 429 Too Many Requests with a standard Retry-After header:
HTTP/1.1 429 Too Many RequestsRetry-After: 12Content-Type: application/json{ "error": "Too Many Requests", "code": "RATE_LIMIT_EXCEEDED"}Outbound Email Idempotency#
To prevent duplicate email dispatches during network hiccups, POST /v1/quick-send supports an Idempotency-Key header:
Idempotency-Key: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d- Retention Window: Cached for 24 hours.
- Replay Behavior: If a connection drops and your client retries with the same
Idempotency-Key, the server returns the cached200 OKresponse with headerX-Idempotent-Replay: truewithout sending a duplicate email.
Pagination#
Endpoints returning lists support limit and offset pagination:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 10 | Maximum items to return (min 1, max 100). |
offset | integer | 0 | Number of records to skip before beginning to return items. |
Collection responses return item arrays alongside total counts:
{ "aliases": [...], "total": 42}Error Handling#
All error responses adhere to standard JSON error envelopes:
{ "error": "Alias limit reached. Upgrade your subscription plan to create more aliases.", "code": "LIMIT_REACHED"}Common HTTP Status Codes#
| Status | Code | Cause & Remediation |
|---|---|---|
400 Bad Request | VALIDATION_ERROR | Malformed request body or missing parameters. Check field schemas. |
400 Bad Request | CUSTOM_DOMAIN_REQUIRED | Feature (such as alias TTL / expiration) is only supported on custom domains. |
401 Unauthorized | MISSING_CREDENTIALS | Missing Authorization: Bearer or x-api-key header. |
401 Unauthorized | INVALID_API_KEY | Provided API key does not exist or hash verification failed. |
401 Unauthorized | EXPIRED_API_KEY | API key has exceeded its configured expiration date. |
402 Payment Required | ENTITLEMENT_REQUIRED | Feature (e.g. wildcard sender filtering) requires an upgraded plan. |
403 Forbidden | INSUFFICIENT_SCOPES | API key lacks the required permission scope for this endpoint. |
403 Forbidden | IP_NOT_ALLOWED | Calling IP address is not included in the key's IP allowlist. |
403 Forbidden | BUSINESS_TIER_REQUIRED | Developer API access requires an active Business tier subscription. |
403 Forbidden | PLAN_UPGRADE_REQUIRED | Account plan does not include entitlement for this resource (e.g. custom domains on Free). |
403 Forbidden | LIMIT_REACHED | Resource quota reached for current plan. Upgrade plan to expand limit. |
403 Forbidden | FEATURE_LOCKED | Feature is restricted to a higher subscription tier (e.g. raw MIME webhooks). |
403 Forbidden | ENTITLEMENT_FORBIDDEN | Feature entitlement not enabled on plan (e.g. sanitized forwarding). |
404 Not Found | NOT_FOUND | Requested entity does not exist or belongs to another user. |
409 Conflict | ALIAS_EXISTS | Alias local part and domain combination is already registered. |
429 Too Many Requests | RATE_LIMIT_EXCEEDED | Rate limit exceeded. Back off for the duration specified in Retry-After. |
API Resource Directory#
- Identity API (
/v1/me) - Token introspection, active scopes, and account identity. - Aliases API (
/v1/aliases) - Core alias lifecycle (create, query, update, trash, purge, and retention). - Alias Destinations & Batch API - Multi-destination forwarding fanout, atomic batch operations, and privacy settings.
- Domains API (
/v1/domains) - System shared domains, custom domain DNS verification, subdomains, and DKIM keys. - Destinations API (
/v1/destinations) - Forwarding inboxes, OTP verification, alias usage, and smart reassignment. - Quick-Send API (
/v1/quick-send) - Outbound anonymous email dispatch with presigned attachment handling. - Sender Rules & Firewall API (
/v1/sender-rules) - Inbound allowlist and denylist firewall rules, pattern matching, and threat protection. - Activity API (
/v1/activity) - Forwarding event logs, Email X-Ray delivery forensics, and GDPR deletion. - Fleet Analytics API (
/v1/analytics) - Time-series forwarding trends, spam threat telemetry, and tracker blocking stats. - Rules API (
/v1/rules) - Priority-ordered conditional routing rules, header evaluations, and automated actions. - Security & Threat Intelligence API (
/v1/security) - Anomalous traffic volume spikes, threat alerts, and human-in-the-loop incident dismissal. - Webhooks API (
/v1/webhooks) - Real-time event notifications, HMAC-SHA256 signature verification, secret rotation, and delivery logs. - Categories & Tags API (
/v1/categories) - Organize aliases into folders, apply color tokens, and manage category hierarchies. - User Profile & Account API (
/v1/user) - Account profile, active subscription plan, monthly bandwidth usage, and global forwarding preferences.