Email and SMS Testing API

Using the Mailosaur API, you can write automated tests for the email and SMS messages your product sends.


The Mailosaur API lets you test email using a simple REST API. You can make the API calls yourself, however because email and SMS messages can take time to arrive, we highly recommend using one of our official clients.

Run in Postman Run in Insomnia

Popular Setups


The Mailosaur API uses API keys to authenticate requests.

Authentication to the API is performed via HTTP Basic Auth. Your API key must be provided as the basic auth username value. You do not need to provide a password.

Your API keys carry many privileges, so always keep them secret and secure! Never share your API key in publicly-accessible areas such GitHub, client-side code, etc.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

curl \
  -u api:YOUR_API_KEY

Managing API keys

You can manage all your API keys in the Mailosaur Dashboard.


HTTP Status Codes

Mailosaur uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted), and codes in the 5xx range indicate an error with Mailosaur’s servers (give us a shout in the unlikely event that you see one of those).

200 OKRequest was successful.
204 No ContentRequest was successful, no response content.
400 Bad RequestThe request could not be handled, often due to missing a required parameter.
401 UnauthorizedNo valid API key provided.
404 Not FoundThe requested resource doesn’t exist.
5XX Server ErrorsSomething went wrong at Mailosaur. (Give us a shout).

Error handling

In case of an error the server will return as much information as possible. In the case of a 401 or 404 error the status code gives as much information as you’d need. But for 400 errors Mailosaur will return a JSON object containing the structure below.

Note that our client libraries convert responses to appropriate language-specific objects.

typeThe type of error returned.
messageA human-readable message providing more details about the error.
parametersA JSON object containing a key for each property name at fault, with a human-readable message per field.
modelThe request model that was sent and failed to be processed.