Create Email Test

This call creates a new email test and submits it to our system for processing.

All requests must contain a “subject” property and one source property (either “html” or “url”). Customers on a user-based reseller package must provide the “customer_id” as well. All other properties are optional. In the following table, each property and its default value is shown.

The response will include an “id” property that should be used to request the results or run processes on the email content.

If the seed list method of spam testing was used, the response will also include a spam property with the spam key which contains an object with an “address_list” property that contains the list of email addresses to send a copy of the email for spam testing purposes.

Enterprise customers’ responses will also include the customer_id and reference_id that were submitted with the test.

URL:

POST https://api.emailonacid.com/v5/email/tests

Example Request Body:

{
  "subject": "My Email Subject",
  "html": "",
  "transfer_encoding": "8bit",
  "charset": "utf-8",
  "reference_id": "123ABC",
  "customer_id": "1",
  "clients": [
    "outlook16",
    "gmail_chr26_win",
    "iphone6p_9"
  ],
  "image_blocking": true,
  "spam": {
    "test_method": "seed",
    "from_address": "my.test@example.com"
  }
}

Example Response:

{
  "id": "<UNIQUE ID>",
  "reference_id": "123ABC",
  "customer_id": "1",
  "spam": {
    "key": "<UNIQUE SPAM ID>",
    "address_list": [
      "spam_address1@example.com",
      "spam_address2@example.com"
    ]
  }
}

Request Details

Element Type Description Default
subject String The subject line of your email, encoded as declared in transfer_encoding. None; Required
html String The email source of your email, encoded as declared in transfer_encoding. None; Required if no url
url String A URL pointing to the email source of your email. None; Required if no html
transfer_encoding String One of base64, quoted-printable, 7bit, or 8bit. 8bit; subject and html should be encoded as described by this field.
charset String The character set your HTML is encoded in. utf-8; subject and html should be encoded as described by this field.
free_test Boolean If true, run as a free test with limited features. false
sandbox Boolean If true, run without creating any actual content. false
reference_id String Enterprise customers can set this value for searching and internal reporting. None; Enterprise only
customer_id String Enterprise customers can set this value for searching and internal reporting. None; Enterprise only
headers Object Enterprise customers can populate this object with X-Header style key/value pairs whose keys begin with "X-", but not with the reserved "X-EOA" prefix, to assist in test retrieval.
ie: { "X-Cake":"Best123", "X-Fun":"Yes456" }
None; Enterprise only
clients Array of String An array of string IDs as returned from client list functions. Default list as returned from email/clients/default
image_blocking Boolean If true, run a test with images blocked in clients that support it. false
spam Object As below. None; if set, a Spam Test will be run with the Email Test
spam->test_method String One of "eoa", "smtp", or "seed". The meanings of these values are explained in the Spam Test section. "eoa"
spam->smtp_info Object An object containing the SMTP Authentication info. None; Required if test_method is "smtp"
spam->smtp_info->host String The SMTP host. None; Required
spam->smtp_info->port Integer The SMTP port. 25
spam->smtp_info->secure String One of "ssl", "tls", or "". ""
spam->smtp_info->username String The SMTP username. None
spam->smtp_info->password String The SMTP password. None
spam->from_address String Address to send the email from. None
spam->key String Seedlist Key to use. Generated ahead of time using Reserve Seed List. None; Optional if test_method is "seed"

Get Tests

This call returns a list of all available Email Tests and some metadata about them. Email Tests are stored for 90 days.

URL:

GET https://api.emailonacid.com/v5/email/tests

Example Response:

[
  {
    "id": "<test_id>",
    "date": 1735310616,
    "type": "email-test",
    "headers": {
        "X-EXAMPLE": "My Header"
    }
  },
  {
    "id": "<test_id>",
    "date": 1735310616,
    "type": "spam-test",
    "headers": {}
  }
]

Search Tests

This call returns a list of Email Tests that match the criteria in the query string and some metadata about them. Its structure is identical to the above call.

The query string is a standard URL parameterized version containing any or all of the following parameters.

URL:

GET https://api.emailonacid.com/v5/email/tests?<query_string>

Query String Details

Name Description Example
from The starting point of your test date range. from=2024-12-27 14:43:36, from=1735310616, from=yesterday
to The ending point of your test date range. to=2024-12-27 14:43:36, to=1735310616, to=yesterday
subject The "subject" field of returned tests must contain the exact string. This search is case-insensitive. subject=My+example+test, subject=Another%20example, subject=A%2B tests
headers Enterprise users can use this field in a KV array of x-headers submitted with the test. This is an AND match, meaning all headers must be present to return. headers[x-fun]=most+fun&headers[x-cake]=best+cake
results The number of results to return. Must be between 1 and 200. The default value is 50 results=50
page The page number. If you submit a number higher than the number of pages in the data, an empty array will be returned. The default value is 1 page=2

Get Test Info

This call returns the subject and submission time in UNIX timestamp format. It will also contain one to three properties containing an array of clients. The “completed” property shows clients that have completed screenshots uploaded. The “processing” property contains clients which are still being processed by our system. The “bounced” property contains clients that were bounced by the destination and cannot be retried.

This call will automatically requeue screenshots if they stay in processing for more than three minutes.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>

Example Response:

{
  "subject": "Test Subject",
  "date": 1470034800,
  "completed": [
    "outlook13",
    "iphone6p_9"
  ],
  "processing": [
    "cc_chr26_win"
  ],
  "bounced": [
    "ffr_chr26_win"
  ]
}

Delete Test

This call marks an Email Test as deleted. Once it is deleted, it cannot be recovered.

URL:

DELETE https://api.emailonacid.com/v5/email/tests/<test_id>

Example Response:

{
  "success": true
}

Get Results

This call returns detailed results for screenshots including their upload locations, send times, completion times, and information about bounces, if any. <test_id> is a test ID returned from test creation or the get test list functions. The <client_id> is optional and restricts the returned data to a single client if present. If the client is not present in the test or is invalid, an error will be returned.

Any reprocessing that is done will replace the images in these locations. The image locations are generated programmatically before the screenshots are complete, so the presence of a URL in the call is not a guarantee that the file will be present. Use the “status” property to determine whether or not the file is present in the location, or you can manually test the URL provided. If the file is not present, you will receive a 403 Forbidden response from the endpoint.

SCREENSHOT URLS

Screenshot URLs contain direct access to screenshot images, and remain valid throughout the life of the test (90 days from test creation). Access to screenshot URLs are done through either Basic Authentication or Presigned URLs.

Basic Authentication

Screenshot URLs are accessed using the same authentication credentials used on all other API requests. When Basic Authentication is used, the temporary nature of presigned URLs are overridden and the same URL can be used through the life of a test (90 days), provided basic auth credentials are sent along with the request.

Presigned URLs

If no basic authentication credentials are sent along with the request, the default authentication scheme is a form of presigned URLs that provide a time-limited URL (24 hours) for accessing screenshot images. With that in mind, it's important to note that screenshot URLs are dynamic, and it is strongly recommended that an API call to Get Results is made each time to retrieve a fresh set of screenshot URLs.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/results[/<client_id>]

Example Response:

{
  "outlook03": {
    "id": "outlook03",
    "display_name": "Outlook 2003",
    "client": "Outlook 2003",
    "os": "Windows",
    "category": "Application",
    "screenshots": {
      "default": "<url>",
      "no_images": "<url>"
    },
    "thumbnail": "<url>",
    "full_thumbnail": "<url>",
    "status": "Processing",
    "status_details": {
      "submitted": 1468789495,
      "attempts": 1
    }
  },
  "iphone6p_9": {
    "id": "iphone6p_9",
    "display_name": "iPhone 6+ (iOS 9)",
    "client": "iPhone 6+",
    "os": "iOS9",
    "category": "Mobile",
    "screenshots": {
      "default": "<url>",
      "no_images": "<url>",
      "horizontal": "<url>",
      "horizontal_no_images": "<url>"
    },
    "thumbnail": "<url>",
    "full_thumbnail": "<url>",
    "status": "Complete",
    "status_details": {
      "submitted": 1468789495,
      "completed": 1468789503,
      "attempts": 1
    }
  },
  "ffr_chr26_win": {
    "id": "ffr_chr26_win",
    "display_name": "Free.fr Chrome (Windows)",
    "client": "Free.fr",
    "os": "Windows",
    "category": "Web",
    "browser": "Chrome",
    "screenshots": {
      "default": "<url>",
      "no_images": "<url>"
    },
    "thumbnail": "<url>",
    "full_thumbnail": "<url>",
    "status": "Bounced",
    "status_details": {
      "submitted": 1468789495,
      "bounce_code": "550 5.5.0",
      "bounce_message": "<message>"
    }
  }
}

Response Details

Element Description
id Our unique identifier for the email client. This code can be used when creating new Email Tests.
display_name A presentable name of the email client.
client Name of the email client.
os The name of the OS that this client is running on.
category The type of client this is: one of "Application", "Mobile", or "Web"
browser If this is client is in a browser, the name of the browser the client is running in.
screenshots An object of all screenshots available for this client. Possible properties of this object are default, no_images if image_blocking is true on both the test and the client, horizontal if rotate is true for the client, and horizontal_no_images if both no_images and horizontal exist.
thumbnail The URL to the cropped result thumbnail.
full_thumbnail The URL to the full result thumbnail. Available in API V5.0.1 and later
status A string describing the current status. One of Complete, Processing, Bounced, or Pending.
status_details An object with properties depending on the status.
status_details->submitted UNIX timestamp the screenshot was sent.
status_details->completed UNIX timestamp the screenshot was completed.
status_details->bounce_code If bounced, the code the remote server returned.
status_details->bounce_message If bounced, the message the remote server returned.

Reprocess Screenshots

Sometimes strange things happen on the internet. If a strange result has come back in your screenshot, use this function to tell us to retake your screenshot free of charge.

The request should contain an object with a property of “clients” that contains a list of clients in the <test_id> provided. The object returned will have a “success” value indicating if the attempt was successful. If it is false, there will be a “reason” value describing the failure reason.

URL:

PUT https://api.emailonacid.com/v5/email/tests/<test_id>/results/reprocess

Example Request Body:

{
  "clients": [
    "iphone6p_9",
    "gmail_chr26_win",
    "outlook16"
  ]
}

Example Response:

{
  "iphone6p_9": {
    "success": true,
    "remaining_reprocesses": 19,
    "regional": false
  }
}

Get Test Content

Each of these calls will return an object with a single property “content” that contains the desired format of content. <test_id> is a test ID returned from test creation or the get test list functions.

Example Response:

{
  "content": <html>
}

HTML Content

This call returns the HTML associated with your Email Test. This is what is sent to our servers.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/content

Inlined CSS Content

This call returns HTML with all stylesheets inlined into the HTML.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/content/inlinecss

Text Only Content

This call returns a plain text version of your HTML. This approximates what will be displayed on devices that do not support HTML content. Our system does not currently support multipart emails, so if you send a separate text/plain section when you send your email, this may not be accurate to what users see. Additionally, devices may differ in their plain text renderings, so this function should be used more as a guide than as an exact preview.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/content/textonly

Spam Results

This call returns an object containing the status of your spam result, if you submitted your test with spam processing. If you did not submit with spam processing, you will receive an error. The object will be identical to that received from the Spam Testing version of the function.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/spam/results

Example Response:

[
  {
    "client": "SPAM CLIENT 1",
    "type": "b2c",
    "spam": 1,
    "details": "SPAM DETAILS"
  },
  {
    "client": "SPAM CLIENT 2",
    "type": "b2b",
    "spam": -1,
    "details": ""
  }
]

Spam Seed List

This call returns a list of email addresses to send to for your seed list type spam test. If your spam test was not a seed list type or you did not run the test with spam processing, you will receive an error.

URL:

GET https://api.emailonacid.com/v5/email/tests/<test_id>/spam/seedlist

Example Response:

[
  "address1@example.com",
  "address2@example.com"
]