MailSlurp logo

Device targets and reusable profiles

Documentation navigation
Search documentation

Choose supported email clients and reuse target sets across campaigns and automated render runs.

View MarkdownAgent setup

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.

GET /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

StatusSchemaDescription
200DevicePreviewNativeTargetListDtoOK
HTTP and SDK snippets

HTTP

HTTP
GET /device-preview-targets HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X GET "https://api.mailslurp.com/device-preview-targets" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

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

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()
GET /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

StatusSchemaDescription
200DevicePreviewNativeTargetAvailabilityListDtoOK
HTTP and SDK snippets

HTTP

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
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

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

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

  1. Open the render-address settings and create a device preview profile.
  2. Give it a recognizable name, such as Transactional QA.
  3. Choose a local part and the required targets.
  4. Send a sample to the profile's render address.
  5. Confirm the run contains the expected client set.

See the dashboard walkthrough for screenshots. For automation, use the profile API:

POST /emails/device-previews/profiles

Create a device preview profile

Request, parameters, and responses

Request body (required)

FieldTypeRequiredDescription
localPartstringYes
displayNamestringNo
optionsCreateDevicePreviewOptionsNo
enabledbooleanNo
Request example
{
  "localPart": "value",
  "displayName": "Example name",
  "options": {
    "targets": [
      "apple_mail_macos"
    ],
    "allTargets": true,
    "qa": {
      "emailAudit": true,
      "domainMonitor": true,
      "senderDomain": "example.com"
    }
  },
  "enabled": true
}

Responses

StatusSchemaDescription
200DevicePreviewProfileDtoOK
HTTP and SDK snippets

HTTP

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
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

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

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)
GET /emails/device-previews/profiles

List device preview profiles

Request, parameters, and responses

Responses

StatusSchemaDescription
200DevicePreviewProfileDto[]OK
HTTP and SDK snippets

HTTP

HTTP
GET /emails/device-previews/profiles HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

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

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

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()
PUT /emails/device-previews/profiles/{profileId}

Update a device preview profile

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
profileIdstring:uuidYes

Request body (required)

FieldTypeRequiredDescription
localPartstringNo
displayNamestringNo
optionsCreateDevicePreviewOptionsNo
enabledbooleanNo
Request example
{
  "localPart": "value",
  "displayName": "Example name",
  "options": {
    "targets": [
      "apple_mail_macos"
    ],
    "allTargets": true,
    "qa": {
      "emailAudit": true,
      "domainMonitor": true,
      "senderDomain": "example.com"
    }
  },
  "enabled": true
}

Responses

StatusSchemaDescription
200DevicePreviewProfileDtoOK
HTTP and SDK snippets

HTTP

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
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

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

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.