Create a test address
const url = 'https://api.proxymail.qa/v1/addresses';const options = { method: 'POST', headers: { 'Proxy-Mail-QA-Test': 'sign-up%20%E2%80%BA%20sends%20one%20code', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"label":"example","name":"example","persona":false,"password":false,"lifetime_days":1,"domain":"example","age":"adult","date_of_birth":"2026-04-15","country":"example","site":"example","environment":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.proxymail.qa/v1/addresses \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Proxy-Mail-QA-Test: sign-up%20%E2%80%BA%20sends%20one%20code' \ --data '{ "label": "example", "name": "example", "persona": false, "password": false, "lifetime_days": 1, "domain": "example", "age": "adult", "date_of_birth": "2026-04-15", "country": "example", "site": "example", "environment": "example" }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”A run’s id (POST /v1/runs): adds what this call saw to the run. If it can’t be added (the run finished, or isn’t in this project), the call still works and the Proxy-Mail-QA-Run-Warning response header says why.
With Proxy-Mail-QA-Run: the test this call belongs to, percent-encoded (encodeURIComponent), up to 200 characters once decoded. The run’s report shows it beside what the call saw.
Example
sign-up%20%E2%80%BA%20sends%20one%20codeRequest Body
Section titled “Request Body”object
What it is for, e.g. “Checkout test”.
A custom name before the @: 3–64 lowercase letters, digits, dots (not first, last or doubled) or any of ! # $ % & ’ * - / = ? ^ _ ` { | } ~. Random when left out.
Also generate a fictional first name, last name and username.
Also generate a strong password for the sign-up form and save it on the address. It is returned once, in this response; reading it again needs a key with “Can read saved passwords”.
Defaults to the plan’s maximum.
One of the project’s mail domains (GET /v1/project). Defaults to the project’s.
Give the persona a date of birth for this age: adult (18 to 65), over21, under18 (15 to 17), under15 (13 or 14), under13 (8 to 12), any (8 to 80), or someone who turns 18 tomorrow or turned 18 today. Leave out for no date of birth.
A date of birth to use instead of age, YYYY-MM-DD.
Where the persona lives, as an ISO 3166-1 alpha-2 code such as GB or US (persona.country). Leave out for none.
Where the account is used: the host or a page URL of the app under test, kept as the host.
Which environment of the app, such as staging, qa or local.
Responses
Section titled “Responses”The new address. With password: true, it also has password, shown this once.
object
object
Present only when the address has one.
ISO 3166-1 alpha-2 code, such as GB. Present only when the address has one.
Only in the response to creating it with password: true.
Where it is used: the host of the app under test. Present only when set.
Which environment it is used in, such as staging. Present only when set.
The newest code or link, like Match.
Only while someone has it checked out of the pool.
Example generated
{ "address": "example", "label": "example", "created_at": "2026-04-15T12:00:00Z", "expires_at": "2026-04-15T12:00:00Z", "persona": { "first_name": "example", "last_name": "example", "username": "example", "date_of_birth": "2026-04-15", "country": "example" }, "notes": "example", "tags": [ "example" ], "has_password": true, "password": "example", "site": "example", "environment": "example", "email_count": 1, "latest": "example", "checked_out_until": "2026-04-15T12:00:00Z"}An error
object
Example generated
{ "error": "example", "message": "example"}An error
object
Example generated
{ "error": "example", "message": "example"}An error
object
Example generated
{ "error": "example", "message": "example"}An error
object
Example generated
{ "error": "example", "message": "example"}