Choose an email source for device rendering
Documentation navigation
Render a delivered email, import HTML or MIME, or send from your ESP to a render address.
Choose a source based on what you want to verify. A delivered message includes changes made by the sending platform; a template import is useful earlier while editing the design.
| Source | Use it when | Start here |
|---|---|---|
| Stored email | Your application test already received the message in MailSlurp | Render by email ID |
| HTML | You are reviewing template markup before sending | HTML import |
| EML / raw MIME | You have a complete exported email or test fixture | MIME imports |
| Render address | Your ESP or mail client can send a test message | Send to a render address |
Preview an exported file
The file endpoint accepts HTML, EML or a ZIP containing exactly one HTML or EML file, subject to archive limits. Keep the full EML when headers, multipart content or inline attachments affect the result. Do not rename an arbitrary file to .eml and assume it becomes valid MIME.
/emails/device-previews/import/file
Create a device preview run from an HTML, EML, or ZIP file
Uploads an HTML or RFC822 EML file, or a ZIP archive containing exactly one HTML or EML file. ZIP uploads are bounded by entry count, expanded size, and compression ratio.
Request, parameters, and responses
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
subject | string | No | |
from | string | No | |
to | string | No | |
sourceAlias | string | No | |
externalId | string | No | |
providers | string[] | No | Legacy web-provider keys to render. |
allTargets | boolean | No | Render every currently configured target. |
targets | string[] | No | Device preview target keys to render. |
emailAudit | boolean | No | |
domainMonitor | boolean | No | |
senderDomain | string | No |
Request body
Responses
| Status | Schema | Description |
|---|---|---|
200 | CreateDevicePreviewRunResult | OK |
HTTP and SDK snippets
HTTP
POST /emails/device-previews/import/file?subject=value&from=user%40example.com&to=user%40example.com HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json
cURL
curl -X POST "https://api.mailslurp.com/emails/device-previews/import/file?subject=value&from=user%40example.com&to=user%40example.com" \
-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 request = {
"subject": "value",
"from": "user@example.com",
"to": "user@example.com"
};
const result = await devicePreviewsController.createDevicePreviewRunFromFile(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)
result = devicePreviewsController.create_device_preview_run_from_file(subject="value", from="user@example.com", to="user@example.com")
For a JSON-based integration, use base64 MIME import; for a byte stream or multipart upload, use the corresponding endpoint documented in the API workflow. Choose one source path per render rather than creating duplicate runs for every import form.
Receive the campaign from your ESP
Create or select a render address with the intended target profile. Send the finished test campaign to it and wait for its submission and run. Use the ESP guide table for platform-specific steps.
A missing submission means the message has not reached the render workflow yet. A submission with an unfinished run means rendering is still in progress. Inspect these separately when troubleshooting.
/emails/device-previews/email-submissions/wait
Wait for received device preview email submissions
Request, parameters, and responses
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
since | string:date-time | Yes | |
emailDomainId | string:uuid | No | |
profileId | string:uuid | No | |
localPart | string | No | |
limit | integer:int32 | No | |
timeoutMillis | integer:int64 | No | |
pollIntervalMillis | integer:int64 | No |
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewEmailSubmissionWaitResult | OK |
HTTP and SDK snippets
HTTP
GET /emails/device-previews/email-submissions/wait?since=value&emailDomainId=00000000-0000-4000-8000-000000000000&profileId=00000000-0000-4000-8000-000000000000 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/email-submissions/wait?since=value&emailDomainId=00000000-0000-4000-8000-000000000000&profileId=00000000-0000-4000-8000-000000000000" \
-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 request = {
"since": "value",
"emailDomainId": "00000000-0000-4000-8000-000000000000",
"profileId": "00000000-0000-4000-8000-000000000000"
};
const result = await devicePreviewsController.waitForDevicePreviewEmailSubmissions(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)
result = devicePreviewsController.wait_for_device_preview_email_submissions(since="value", email_domain_id="00000000-0000-4000-8000-000000000000", profile_id="00000000-0000-4000-8000-000000000000")
/emails/device-previews/email-runs/wait
Wait for device preview runs created from account email domains
Request, parameters, and responses
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
since | string:date-time | Yes | |
emailDomainId | string:uuid | No | |
profileId | string:uuid | No | |
localPart | string | No | |
limit | integer:int32 | No | |
timeoutMillis | integer:int64 | No | |
pollIntervalMillis | integer:int64 | No | |
hydrateThumbnail | boolean | No | Hydrate each returned run with a nullable primary screenshot thumbnail URL. |
Responses
| Status | Schema | Description |
|---|---|---|
200 | DevicePreviewIngestRunWaitResult | OK |
HTTP and SDK snippets
HTTP
GET /emails/device-previews/email-runs/wait?since=value&emailDomainId=00000000-0000-4000-8000-000000000000&profileId=00000000-0000-4000-8000-000000000000 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/email-runs/wait?since=value&emailDomainId=00000000-0000-4000-8000-000000000000&profileId=00000000-0000-4000-8000-000000000000" \
-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 request = {
"since": "value",
"emailDomainId": "00000000-0000-4000-8000-000000000000",
"profileId": "00000000-0000-4000-8000-000000000000"
};
const result = await devicePreviewsController.waitForDevicePreviewEmailRuns(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)
result = devicePreviewsController.wait_for_device_preview_email_runs(since="value", email_domain_id="00000000-0000-4000-8000-000000000000", profile_id="00000000-0000-4000-8000-000000000000")
Continue with targets and profiles or CI automation.