MailSlurp logo

Choose an email source for device rendering

Documentation navigation
Search documentation

Render a delivered email, import HTML or MIME, or send from your ESP to a render address.

View MarkdownAgent setup

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.

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

NameTypeRequiredDescription
subjectstringNo
fromstringNo
tostringNo
sourceAliasstringNo
externalIdstringNo
providersstring[]NoLegacy web-provider keys to render.
allTargetsbooleanNoRender every currently configured target.
targetsstring[]NoDevice preview target keys to render.
emailAuditbooleanNo
domainMonitorbooleanNo
senderDomainstringNo

Request body

multipart/form-data

Responses

StatusSchemaDescription
200CreateDevicePreviewRunResultOK
HTTP and SDK snippets

HTTP

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

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

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.

GET /emails/device-previews/email-submissions/wait

Wait for received device preview email submissions

Request, parameters, and responses

Query parameters

NameTypeRequiredDescription
sincestring:date-timeYes
emailDomainIdstring:uuidNo
profileIdstring:uuidNo
localPartstringNo
limitinteger:int32No
timeoutMillisinteger:int64No
pollIntervalMillisinteger:int64No

Responses

StatusSchemaDescription
200DevicePreviewEmailSubmissionWaitResultOK
HTTP and SDK snippets

HTTP

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

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

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")
GET /emails/device-previews/email-runs/wait

Wait for device preview runs created from account email domains

Request, parameters, and responses

Query parameters

NameTypeRequiredDescription
sincestring:date-timeYes
emailDomainIdstring:uuidNo
profileIdstring:uuidNo
localPartstringNo
limitinteger:int32No
timeoutMillisinteger:int64No
pollIntervalMillisinteger:int64No
hydrateThumbnailbooleanNoHydrate each returned run with a nullable primary screenshot thumbnail URL.

Responses

StatusSchemaDescription
200DevicePreviewIngestRunWaitResultOK
HTTP and SDK snippets

HTTP

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

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

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.