Device targets and reusable profiles
Documentation navigation
Choose supported email clients and reuse target sets across campaigns and automated render runs.
A native target identifies an email-client context. A profile saves a target set so a team can repeat the same review without selecting each client for every campaign.
Discover supported targets
Read the stable target catalog before choosing IDs. Use its client, platform and device metadata to select the contexts your audience uses. The live availability endpoint adds temporary health and queue information; use it to investigate current availability, not to redefine your saved coverage every time a worker is busy.
/device-preview-targets
List device preview targets
Returns visible native device preview target metadata without worker availability, queue, or health fields.
Request, parameters, and responses
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewNativeTargetListDto | OK |
HTTP and SDK snippets
HTTP
GET /device-preview-targets HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
cURL
curl -X GET "https://api.mailslurp.com/device-preview-targets" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: application/json"
JavaScript SDK
import { Configuration, DevicePreviewsControllerApi } from "mailslurp-client";
const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const devicePreviewsController = new DevicePreviewsControllerApi(config);
const result = await devicePreviewsController.getDevicePreviewTargets();
Python SDK
import mailslurp_client
from mailslurp_client.api.device_previews_controller_api import DevicePreviewsControllerApi
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"
with mailslurp_client.ApiClient(configuration) as api_client:
devicePreviewsController = DevicePreviewsControllerApi(api_client)
result = devicePreviewsController.get_device_preview_targets()
/emails/device-previews/native-targets/availability
Get native device preview target availability
Returns live native device preview target availability for authenticated API clients, including worker health, queue, timeout, and status fields. Use `/device-preview-targets` when you need the stable catalog without transient availability data.
Request, parameters, and responses
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewNativeTargetAvailabilityListDto | OK |
HTTP and SDK snippets
HTTP
GET /emails/device-previews/native-targets/availability HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
cURL
curl -X GET "https://api.mailslurp.com/emails/device-previews/native-targets/availability" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: application/json"
JavaScript SDK
import { Configuration, DevicePreviewsControllerApi } from "mailslurp-client";
const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const devicePreviewsController = new DevicePreviewsControllerApi(config);
const result = await devicePreviewsController.getDevicePreviewNativeTargetAvailability();
Python SDK
import mailslurp_client
from mailslurp_client.api.device_previews_controller_api import DevicePreviewsControllerApi
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"
with mailslurp_client.ApiClient(configuration) as api_client:
devicePreviewsController = DevicePreviewsControllerApi(api_client)
result = devicePreviewsController.get_device_preview_native_target_availability()
Use exact catalog IDs in nativeTargets. Avoid legacy provider names and reject unknown IDs before running a large batch. Start with a small representative client set and include mobile, desktop or dark-mode variants when they matter to the message.
Save a profile
- Open the render-address settings and create a device preview profile.
- Give it a recognizable name, such as Transactional QA.
- Choose a local part and the required targets.
- Send a sample to the profile's render address.
- Confirm the run contains the expected client set.
See the dashboard walkthrough for screenshots. For automation, use the profile API:
/emails/device-previews/profiles
Create a device preview profile
Request, parameters, and responses
Request body (required)
| Field | Type | Required | Description |
|---|---|---|---|
localPart | string | Yes | |
displayName | string | No | |
options | CreateDevicePreviewOptions | No | |
enabled | boolean | No |
{
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewProfileDto | OK |
HTTP and SDK snippets
HTTP
POST /emails/device-previews/profiles HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
Content-Type: application/json
{
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
cURL
curl -X POST "https://api.mailslurp.com/emails/device-previews/profiles" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data '{"localPart":"value","displayName":"Example name","options":{"targets":["apple_mail_macos"],"allTargets":true,"qa":{"emailAudit":true,"domainMonitor":true,"senderDomain":"example.com"}},"enabled":true}'
JavaScript SDK
import { Configuration, DevicePreviewsControllerApi } from "mailslurp-client";
const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const devicePreviewsController = new DevicePreviewsControllerApi(config);
const request = {
"createDevicePreviewProfileOptions": {
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
};
const result = await devicePreviewsController.createDevicePreviewProfile(request);
Python SDK
import mailslurp_client
from mailslurp_client.api.device_previews_controller_api import DevicePreviewsControllerApi
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"
with mailslurp_client.ApiClient(configuration) as api_client:
devicePreviewsController = DevicePreviewsControllerApi(api_client)
create_device_preview_profile_options = {
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": True,
"qa": {
"emailAudit": True,
"domainMonitor": True,
"senderDomain": "example.com"
}
},
"enabled": True
}
result = devicePreviewsController.create_device_preview_profile(create_device_preview_profile_options)
/emails/device-previews/profiles
List device preview profiles
Request, parameters, and responses
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewProfileDto[] | OK |
HTTP and SDK snippets
HTTP
GET /emails/device-previews/profiles HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
cURL
curl -X GET "https://api.mailslurp.com/emails/device-previews/profiles" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: application/json"
JavaScript SDK
import { Configuration, DevicePreviewsControllerApi } from "mailslurp-client";
const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const devicePreviewsController = new DevicePreviewsControllerApi(config);
const result = await devicePreviewsController.getDevicePreviewProfiles();
Python SDK
import mailslurp_client
from mailslurp_client.api.device_previews_controller_api import DevicePreviewsControllerApi
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"
with mailslurp_client.ApiClient(configuration) as api_client:
devicePreviewsController = DevicePreviewsControllerApi(api_client)
result = devicePreviewsController.get_device_preview_profiles()
/emails/device-previews/profiles/{profileId}
Update a device preview profile
Request, parameters, and responses
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
profileId | string:uuid | Yes |
Request body (required)
| Field | Type | Required | Description |
|---|---|---|---|
localPart | string | No | |
displayName | string | No | |
options | CreateDevicePreviewOptions | No | |
enabled | boolean | No |
{
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewProfileDto | OK |
HTTP and SDK snippets
HTTP
PUT /emails/device-previews/profiles/00000000-0000-4000-8000-000000000000 HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
Content-Type: application/json
{
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
cURL
curl -X PUT "https://api.mailslurp.com/emails/device-previews/profiles/00000000-0000-4000-8000-000000000000" \
-H "x-api-key: YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data '{"localPart":"value","displayName":"Example name","options":{"targets":["apple_mail_macos"],"allTargets":true,"qa":{"emailAudit":true,"domainMonitor":true,"senderDomain":"example.com"}},"enabled":true}'
JavaScript SDK
import { Configuration, DevicePreviewsControllerApi } from "mailslurp-client";
const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const devicePreviewsController = new DevicePreviewsControllerApi(config);
const request = {
"profileId": "00000000-0000-4000-8000-000000000000",
"updateDevicePreviewProfileOptions": {
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": true,
"qa": {
"emailAudit": true,
"domainMonitor": true,
"senderDomain": "example.com"
}
},
"enabled": true
}
};
const result = await devicePreviewsController.updateDevicePreviewProfile(request);
Python SDK
import mailslurp_client
from mailslurp_client.api.device_previews_controller_api import DevicePreviewsControllerApi
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"
with mailslurp_client.ApiClient(configuration) as api_client:
devicePreviewsController = DevicePreviewsControllerApi(api_client)
update_device_preview_profile_options = {
"localPart": "value",
"displayName": "Example name",
"options": {
"targets": [
"apple_mail_macos"
],
"allTargets": True,
"qa": {
"emailAudit": True,
"domainMonitor": True,
"senderDomain": "example.com"
}
},
"enabled": True
}
result = devicePreviewsController.update_device_preview_profile("00000000-0000-4000-8000-000000000000", update_device_preview_profile_options)
Keep coverage consistent
Review profile changes like other test configuration changes. Record the target set used for a release so a later comparison does not accidentally compare different clients. If a required target fails, inspect or rerun that target; a screenshot from a different client is not replacement evidence.
CI render checks show how to retain partial evidence while failing an incomplete required run. Sharing and review explains how teammates approve the result.