Record a coupon’s result at checkout
const url = 'https://api.proxymail.qa/v1/addresses/k7f2x9ab12cd%40mailclub.dev/coupon-result';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: '{"result":"accepted","code":"example","email_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","message":"example","one_time":true,"discount_applied":"example","at":"2026-04-15T12:00:00Z"}'};
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/k7f2x9ab12cd%40mailclub.dev/coupon-result \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Proxy-Mail-QA-Test: sign-up%20%E2%80%BA%20sends%20one%20code' \ --data '{ "result": "accepted", "code": "example", "email_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "message": "example", "one_time": true, "discount_applied": "example", "at": "2026-04-15T12:00:00Z" }'After the test applied a coupon at checkout (on staging with test payments: Proxy Mail QA never checks out), records whether the app accepted it, refused it (rejected) or failed with an error, with its message. Every attempt is kept. Answers with them all and the coupon_result verdict: it fails a coupon accepted after its end date, accepted for an offer already given to another version of the address, or accepted twice when one_time; it warns on an error, or a refusal with no reason. With a run, a failed verdict fails it. In Labs: answers 403 until the key’s creator switches on Marketing and offer emails in Account settings → Labs.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The test address, URL-encoded. A variant also works: capitals, or a +tag (k7f2x9ab12cd+o’brien@mailclub.dev). It acts on the plain address; waiting on a +tag variant, or listing its messages, only finds mail sent to that variant.
Example
k7f2x9ab12cd@mailclub.devHeader 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 Bodyrequired
Section titled “Request Bodyrequired”object
The coupon applied. Default: the newest coupon at the address.
The email the coupon came in.
What the app said, such as “Code already used”.
The offer is one per person: a second acceptance fails.
What checkout took off, as shown.
When. Default: now.
Responses
Section titled “Responses”The coupon, its results and the verdict
object
object
The coupon_result verdict.
object
Example
{ "results": [ { "result": "accepted" } ], "check": { "check": "coupon_result", "status": "pass" }}An error
object
Example generated
{ "error": "example", "message": "example"}An error
object
Example generated
{ "error": "example", "message": "example"}