openapi: 3.0.3 info: title: Email on Acid API description: > REST API for automating email testing across 100+ email clients and devices, including email rendering previews, spam filter testing, seed list management, and accessibility checks. Now branded as Mailgun Inspect. Supports sandbox mode for development and test result storage for 90 days. version: '5.0' contact: name: Email on Acid Support url: https://www.emailonacid.com/contact/ license: name: Proprietary url: https://www.emailonacid.com/terms/ servers: - url: https://api.emailonacid.com/v5 description: Email on Acid API v5 security: - basicAuth: [] tags: - name: Authentication description: Verify API credentials - name: Email Clients description: Manage email client lists and defaults for testing - name: Email Testing description: Create and manage email rendering tests - name: Spam Testing description: Standalone spam filter analysis and seed list management paths: /auth: get: summary: Test authentication operationId: testAuth tags: - Authentication description: > Verify that API credentials are valid. Returns success if authentication succeeds. Use username and password "sandbox" for sandbox access. responses: '200': description: Authentication successful content: application/json: schema: $ref: '#/components/schemas/AuthSuccess' '401': $ref: '#/components/responses/AccessDenied' /email/clients: get: summary: Get available email clients operationId: getEmailClients tags: - Email Clients description: > Retrieves a list of all available email clients for testing, filtered by the account's plan eligibility. responses: '200': description: Map of available email clients content: application/json: schema: $ref: '#/components/schemas/EmailClientsMap' '401': $ref: '#/components/responses/AccessDenied' /email/clients/default: get: summary: Get default email clients operationId: getDefaultEmailClients tags: - Email Clients description: Retrieves the list of client IDs configured as defaults for email testing. responses: '200': description: List of default client IDs content: application/json: schema: $ref: '#/components/schemas/ClientList' '401': $ref: '#/components/responses/AccessDenied' put: summary: Set default email clients operationId: setDefaultEmailClients tags: - Email Clients description: Updates the configured default clients used when no clients are specified in a test. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientList' example: clients: - outlook16 - gmail_chr26_win - iphone6p_9 responses: '200': description: Updated default clients with optional warnings for invalid IDs content: application/json: schema: $ref: '#/components/schemas/SetDefaultClientsResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/AccessDenied' /email/tests: get: summary: Get all email tests operationId: getEmailTests tags: - Email Testing description: > Retrieve a list of all email tests. Supports filtering and pagination via query parameters. parameters: - $ref: '#/components/parameters/fromDate' - $ref: '#/components/parameters/toDate' - $ref: '#/components/parameters/subjectFilter' - $ref: '#/components/parameters/resultsPerPage' - $ref: '#/components/parameters/page' responses: '200': description: List of email tests content: application/json: schema: type: array items: $ref: '#/components/schemas/TestSummary' '401': $ref: '#/components/responses/AccessDenied' post: summary: Create email test operationId: createEmailTest tags: - Email Testing description: > Submit an email for testing across one or more email clients and devices. Either `html` or `url` must be provided. Tests are retained for 90 days. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailTestRequest' example: subject: My Email Subject html: '
Hello World
' transfer_encoding: 8bit charset: utf-8 clients: - outlook16 - gmail_chr26_win - iphone6p_9 image_blocking: false responses: '200': description: Email test created successfully content: application/json: schema: $ref: '#/components/schemas/CreateEmailTestResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/AccessDenied' '403': $ref: '#/components/responses/PermissionError' /email/tests/{testId}: get: summary: Get email test info operationId: getEmailTest tags: - Email Testing description: Retrieve information and current processing status for a specific email test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Email test details content: application/json: schema: $ref: '#/components/schemas/EmailTestInfo' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' delete: summary: Delete email test operationId: deleteEmailTest tags: - Email Testing description: Permanently delete a specific email test and all associated results. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Test deleted successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/results: get: summary: Get all test results operationId: getEmailTestResults tags: - Email Testing description: > Retrieve screenshot rendering results for all clients in an email test. Screenshot URLs support Basic Authentication (permanent, 90-day life) or Presigned URLs (24-hour time-limited). parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Map of client results keyed by client ID content: application/json: schema: $ref: '#/components/schemas/EmailTestResultsMap' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/results/{clientId}: get: summary: Get single client test result operationId: getEmailTestResultByClient tags: - Email Testing description: Retrieve rendering results for a specific client within an email test. parameters: - $ref: '#/components/parameters/testId' - name: clientId in: path required: true schema: type: string description: The client identifier (e.g. outlook16, gmail_chr26_win) responses: '200': description: Client result details content: application/json: schema: $ref: '#/components/schemas/EmailClientResult' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/results/reprocess: put: summary: Reprocess screenshots operationId: reprocessScreenshots tags: - Email Testing description: > Request re-rendering of screenshots for specific clients within a test. Each client has a limited number of reprocess attempts. parameters: - $ref: '#/components/parameters/testId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientList' example: clients: - iphone6p_9 - gmail_chr26_win - outlook16 responses: '200': description: Reprocess results per client content: application/json: schema: $ref: '#/components/schemas/ReprocessResultsMap' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/content: get: summary: Get test HTML content operationId: getEmailTestContent tags: - Email Testing description: Retrieve the original HTML content submitted for a specific email test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Original HTML content content: application/json: schema: $ref: '#/components/schemas/EmailContent' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/content/inlinecss: get: summary: Get HTML with inlined CSS operationId: getEmailTestContentInlineCss tags: - Email Testing description: Retrieve the email HTML content with all external stylesheets inlined. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: HTML with inlined stylesheets content: text/html: schema: type: string '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/content/textonly: get: summary: Get plain text content operationId: getEmailTestContentTextOnly tags: - Email Testing description: Retrieve a plain text approximation of the email HTML content. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Plain text content content: text/plain: schema: type: string '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/spam/results: get: summary: Get spam results for email test operationId: getEmailTestSpamResults tags: - Email Testing description: Retrieve spam filter analysis results for an email test that included spam testing. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: List of spam filter results per client content: application/json: schema: type: array items: $ref: '#/components/schemas/SpamResult' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /email/tests/{testId}/spam/seedlist: get: summary: Get spam seed list for email test operationId: getEmailTestSpamSeedList tags: - Email Testing description: Retrieve the seed list email addresses for a seed-method spam test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: List of seed list email addresses content: application/json: schema: type: array items: type: string format: email '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /spam/clients: get: summary: Get available spam clients operationId: getSpamClients tags: - Spam Testing description: Retrieve metadata about currently active spam filter clients available for testing. responses: '200': description: List of spam clients content: application/json: schema: type: array items: $ref: '#/components/schemas/SpamClient' '401': $ref: '#/components/responses/AccessDenied' /spam/tests: get: summary: Get all spam tests operationId: getSpamTests tags: - Spam Testing description: > Retrieve a list of all standalone spam tests, with optional filtering and pagination. Tests are stored for 90 days. parameters: - $ref: '#/components/parameters/fromDate' - $ref: '#/components/parameters/toDate' - $ref: '#/components/parameters/subjectFilter' - $ref: '#/components/parameters/resultsPerPage' - $ref: '#/components/parameters/page' responses: '200': description: List of spam tests content: application/json: schema: type: array items: $ref: '#/components/schemas/TestSummary' '401': $ref: '#/components/responses/AccessDenied' post: summary: Create spam test operationId: createSpamTest tags: - Spam Testing description: > Create and submit a standalone spam filter test. Either `html` or `url` must be provided. Supports eoa, smtp, and seed test methods. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSpamTestRequest' example: subject: My Email Subject html: 'Hello World
' transfer_encoding: 8bit charset: utf-8 test_method: seed from_address: my.test@example.com responses: '200': description: Spam test created successfully content: application/json: schema: $ref: '#/components/schemas/CreateSpamTestResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/AccessDenied' '403': $ref: '#/components/responses/PermissionError' /spam/tests/{testId}: get: summary: Get spam test results operationId: getSpamTestResults tags: - Spam Testing description: Retrieve spam verdict results for a specific standalone spam test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Spam filter results per client content: application/json: schema: type: array items: $ref: '#/components/schemas/SpamResult' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' delete: summary: Delete spam test operationId: deleteSpamTest tags: - Spam Testing description: Permanently delete a specific standalone spam test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: Spam test deleted successfully content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /spam/tests/{testId}/seedlist: get: summary: Get spam test seed list operationId: getSpamTestSeedList tags: - Spam Testing description: Retrieve the seed list email addresses for a seed-method spam test. parameters: - $ref: '#/components/parameters/testId' responses: '200': description: List of seed list email addresses content: application/json: schema: type: array items: type: string format: email '401': $ref: '#/components/responses/AccessDenied' '404': $ref: '#/components/responses/InvalidTestID' /spam/seedlist: get: summary: Reserve seed list operationId: reserveSeedList tags: - Spam Testing description: > Pre-reserve a seed list before creating a spam test. Returns a key and list of seed addresses to send email to prior to test creation. responses: '200': description: Reserved seed list key and addresses content: application/json: schema: $ref: '#/components/schemas/ReserveSeedListResponse' '401': $ref: '#/components/responses/AccessDenied' components: securitySchemes: basicAuth: type: http scheme: basic description: > HTTP Basic Authentication using `