Attach verified destinations for multi-destination forwarding fanout, execute bulk operations across up to 100 aliases, and fine-tune per-alias privacy settings.
Quick Reference#
| Endpoint | Method | Required Scope | Description |
|---|---|---|---|
/v1/aliases/:id/recipients | GET | aliases:read | List verified destinations attached to an alias. |
/v1/aliases/:id/recipients | POST | aliases:write | Attach an additional verified destination to an alias. |
/v1/aliases/:id/recipients/:recipientId | DELETE | aliases:write | Detach a destination from an alias. |
/v1/aliases/batch-toggle | POST | aliases:write | Bulk pause or activate up to 100 aliases atomically. |
/v1/aliases/batch-delete | POST | aliases:write | Bulk move up to 100 aliases to trash. |
/v1/aliases/:id/settings | GET | aliases:read | Inspect per-alias privacy transformations and banner settings. |
/v1/aliases/:id/settings | PATCH | aliases:write | Update per-alias privacy transformations and banner settings. |
List Attached Destinations#
GET /v1/aliases/:id/recipients
Returns all verified destinations attached to an alias. Incoming emails to this alias are duplicated and forwarded to every listed destination concurrently.
aliases:readRate Limit: 60 req/minIdempotent: YesPath Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | UUID of the alias (aliases.id). |
Request Headers#
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | Optional* | Bearer afp_... |
x-api-key | string | Optional* | afp_... (*Provide either Authorization or x-api-key). |
Accept | string | Yes | application/json |
cURL Example#
curl -X GET "https://api.aliasfleet.com/v1/aliases/9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c/recipients" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Accept: application/json"Response (200 OK)#
{ "recipients": [ { "id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e", "created_at": "2026-08-24T06:30:00.000Z", "destinations": { "id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "email": "primary-ops@company.com", "is_verified": true } }, { "id": "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f", "created_at": "2026-08-25T14:15:00.000Z", "destinations": { "id": "8b7c6d5e-4f3a-2b1c-0d9e-8f7a6b5c4d3e", "email": "audit-archive@company.com", "is_verified": true } } ]}Attach Destination to Alias#
POST /v1/aliases/:id/recipients
Attaches a verified destination inbox to an existing alias. Incoming messages will fan out to this destination in addition to previously attached destinations.
aliases:writeRate Limit: 60 req/minIdempotent: YesRequest Body Schema#
| Field | Type | Required | Description |
|---|---|---|---|
destination_id | string | Yes | UUID of the verified destination inbox. |
cURL Example#
curl -X POST "https://api.aliasfleet.com/v1/aliases/9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c/recipients" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Content-Type: application/json" \ -d '{ "destination_id": "8b7c6d5e-4f3a-2b1c-0d9e-8f7a6b5c4d3e" }'Response (201 Created)#
{ "success": true, "recipient": { "id": "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f", "alias_id": "9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c", "destination_id": "8b7c6d5e-4f3a-2b1c-0d9e-8f7a6b5c4d3e", "created_at": "2026-09-04T12:00:00.000Z" }}Error Responses#
| Status Code | Code | Error Message | Reason |
|---|---|---|---|
400 | UNVERIFIED_DESTINATION | "Destination must be verified before attaching to an alias" | Target destination has not completed OTP email verification. |
400 | DUPLICATE_RECIPIENT | "Destination is already attached to this alias" | Destination is already an active recipient on this alias. |
404 | DESTINATION_NOT_FOUND | "Destination not found" | Destination ID does not exist on your account. |
Detach Destination from Alias#
DELETE /v1/aliases/:id/recipients/:recipientId
Detaches a destination from an alias. Forwarded messages will no longer deliver to this destination inbox.
aliases:writeRate Limit: 60 req/minIdempotent: YesPath Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | UUID of the alias. |
recipientId | string | Yes | UUID of the recipient routing link (alias_recipients.id). |
cURL Example#
curl -X DELETE "https://api.aliasfleet.com/v1/aliases/9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c/recipients/3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e"Response (200 OK)#
{ "success": true}Error Responses#
| Status Code | Code | Error Message | Reason |
|---|---|---|---|
400 | LAST_RECIPIENT | "Cannot remove the last recipient. Aliases must have at least one forwarding destination." | An alias must retain at least one forwarding destination. Pause or trash the alias instead. |
404 | NOT_FOUND | "Recipient not found" | Recipient link does not exist or does not belong to this alias. |
Bulk Pause or Activate Aliases#
POST /v1/aliases/batch-toggle
Updates operational forwarding status across up to 100 aliases in a single atomic request.
aliases:writeRate Limit: 60 req/minIdempotent: YesRequest Body Schema#
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
ids | string[] | Yes | 1–100 elements | Array of alias UUIDs to update. |
active | boolean | Yes | true or false | false to pause forwarding, true to reactivate. |
cURL Example#
curl -X POST "https://api.aliasfleet.com/v1/aliases/batch-toggle" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c", "8b7c6d5e-4f3a-2b1c-0d9e-8f7a6b5c4d3e" ], "active": false }'Response (200 OK)#
{ "success": true, "updated_count": 2, "active": false}Bulk Move Aliases to Trash#
POST /v1/aliases/batch-delete
Soft-deletes up to 100 aliases in a single atomic operation. Trashed aliases drop incoming emails immediately at the mail gateway but can be restored.
aliases:writeRate Limit: 60 req/minIdempotent: YesRequest Body Schema#
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
ids | string[] | Yes | 1–100 elements | Array of alias UUIDs to move to trash. |
cURL Example#
curl -X POST "https://api.aliasfleet.com/v1/aliases/batch-delete" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c", "8b7c6d5e-4f3a-2b1c-0d9e-8f7a6b5c4d3e" ] }'Response (200 OK)#
{ "success": true, "deleted_count": 2}Inspect Alias Settings#
GET /v1/aliases/:id/settings
Retrieves privacy transformations, tracking protection, custom sender names, and safety banner configurations for a specific alias.
aliases:readRate Limit: 60 req/minIdempotent: YesPath Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | UUID of the alias. |
cURL Example#
curl -X GET "https://api.aliasfleet.com/v1/aliases/9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c/settings" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Accept: application/json"Response (200 OK)#
{ "alias": { "id": "9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c", "local_part": "billing-support", "aliasName": "billing-support", "settings": { "fromName": "Acme Billing", "subject": "[Invoice] ", "useFromName": true, "useSubject": true, "bannerEnabled": true, "bannerText": "Received via AliasFleet billing alias.", "bannerLocation": "top", "bannerShowSender": true, "bannerShowDeactivateLink": false, "neutralizeTrackers": true, "rawForwarding": false, "fromAddressFormat": "name_and_email" } }}Update Alias Settings#
PATCH /v1/aliases/:id/settings
Updates per-alias delivery modifications and privacy protections. All fields are optional.
aliases:writeRate Limit: 60 req/minIdempotent: YesRequest Body Schema#
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
fromName | string | null | Optional | Max 255 chars | Custom sender display name. Set null to clear. |
useFromName | boolean | Optional | true or false | Enable or disable custom sender display name. |
subject | string | null | Optional | Max 255 chars | Subject line prefix. Set null to clear. |
useSubject | boolean | Optional | true or false | Enable or disable subject prefix. |
bannerEnabled | boolean | null | Optional | true, false, null | Render safety banner inside email bodies. |
bannerText | string | null | Optional | Max 500 chars | Banner note text. |
bannerLocation | string | null | Optional | "top", "bottom", null | Banner position in the message body. |
bannerShowSender | boolean | Optional | true or false | Display original sender's address in the banner. |
bannerShowDeactivateLink | boolean | Optional | true or false | Include 1-click deactivation link in banner. |
neutralizeTrackers | boolean | Optional | true or false | Strip 1x1 tracking beacons and spyware pixels. |
rawForwarding | boolean | Optional | true or false | When true, passes raw message without HTML sanitization. Setting false requires Sanitized Mode. |
fromAddressFormat | string | null | Optional | "name_and_email", "name_only", null | Format override. Set null to inherit account default. |
cURL Example#
curl -X PATCH "https://api.aliasfleet.com/v1/aliases/9f83a21b-4c7d-4e9a-8b7c-6d5e4f3a2b1c/settings" \ -H "Authorization: Bearer afp_4a8f9c1b2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e" \ -H "Content-Type: application/json" \ -d '{ "useFromName": true, "fromName": "Acme Billing Support", "neutralizeTrackers": true, "rawForwarding": false }'Response (200 OK)#
{ "success": true}Error Responses#
| Status Code | Code | Error Message | Reason |
|---|---|---|---|
400 | ALIAS_TRASHED | "Cannot modify settings of a soft-deleted alias" | Cannot modify settings on an alias currently in trash. Restore it first. |
400 | INVALID_FROM_NAME | "Invalid sender name" | Sender name contains illegal control characters or format errors. |
403 | ENTITLEMENT_FORBIDDEN | "Sanitized Mode is a premium feature. Please upgrade your plan to enable tracker blocking and safety banners." | Account tier does not support sanitized forwarding mode. |
404 | ALIAS_NOT_FOUND | "Alias not found or access denied" | Alias ID does not exist. |