Send email and keep the proof

An email platform for your own domains, with a chain of custody for every message you send or receive.

Sends
each email once
Signs
every webhook
Receives
mail as JSON, with its verdicts
Keeps content
30 days, never in a log

Minket is not open for sign-up yet.

Written

18:00:00UTC

One call, from the SDK or curl. Sending

const minket = new Minket({
  apiKey: process.env.MINKET_API_KEY,
});

const email = await minket.emails.send({
  from: "receipts@mail.fernbank.example",
  to: "rui.okafor@example.com",
  subject: "Your receipt for order 10452",
  html: "<p>Thanks, Rui.</p>",
}, { idempotencyKey: "receipt-10452" });
curl https://api.minket.com/v1/emails \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: receipt-10452" \
  -d '{
    "from": "receipts@mail.fernbank.example",
    "to": "rui.okafor@example.com",
    "subject": "Your receipt for order 10452",
    "text": "Thanks, Rui."
  }'
{
  "id": "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5c",
  "object": "email",
  "status": "queued",
  "scheduled_at": null,
  "idempotent_replay": false
}
The answer

Accepted

18:00:00+0 s

An id to look up, and the same answer for a retried key. Retries

Emails

Your receipt for order 10452

QueuedTransactionalLive

019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5c

From
receipts@mail.fernbank.example
To
rui.okafor@example.com
Idempotency-Key
receipt-10452, for 24 hours

Chain of custody

  1. AcceptedMinket API
  2. Sentnext

Checked

before any live send

Live mail goes out only from a domain whose records check out. Domains

The records of mail.fernbank.example
RecordNameValueStatus
DKIM CNAME7f3a9c._domainkey.mail.fernbank.example7f3a9c.dkim.amazonses.comVerified
DKIM CNAMEb21e04._domainkey.mail.fernbank.exampleb21e04.dkim.amazonses.comVerified
DKIM CNAMEc9d811._domainkey.mail.fernbank.examplec9d811.dkim.amazonses.comVerified
MAIL FROM MXbounce.mail.fernbank.example10 feedback-smtp.<region>.amazonses.comVerified
SPF TXTbounce.mail.fernbank.examplev=spf1 include:amazonses.com ~allVerified
DMARC TXT_dmarc.mail.fernbank.examplev=DMARC1; p=none; rua=mailto:dmarc@fernbank.exampleVerified
Tracking CNAMElinks.mail.fernbank.examplelinks.minket.comVerified
Receiving MXmail.fernbank.example10 inbound-smtp.<region>.amazonaws.comVerified

Sent

18:00:02+2 s

Every message carries its id, so a reply finds the email it answers.

X-Minket-Email-Id: 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5c
A header on every message

Delivered

18:00:04+4 s

Pick a test recipient and the chain plays its outcome. Test mode

Play the chain for
Test mode
  1. DeliveredThe receiving server took it.+4 s

Signed

18:00:04+4 s

Endpoint
fernbank.example/api/minket
Secret
whsec_<shown once>
Tolerance
5 minutes

Each event reaches your endpoint signed, as it happens. Webhooks

POST /api/minket HTTP/1.1
svix-id: msg_019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a60
svix-timestamp: 1761328804
svix-signature: v1,K1lQb2w3YnE1Y0F0ZE5hV1J2VHdxaXZlSHk0dz0=

{
  "type": "email.delivered",
  "created_at": "2026-10-24T18:00:04.000Z",
  "data": {
    "email_id": "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5c",
    "to": ["rui.okafor@example.com"],
    "subject": "Your receipt for order 10452"
  }
}
What the endpoint receives

Answered

09:14:37+2 d

The reply arrives as email.received, tied to the email it answers. Inbound

From
rui.okafor@example.com
Subject
Re: Your receipt for order 10452
Answers
the receipt, by its id

Sealed

23 Nov+30 d

The content is deleted; what happened to the email stays. Security

Content no longer kept

Its addresses and events stay.

Purged

23 Nov 2027+13 months

Then the addresses and the events go too.

The rest of Minket

Questions

Can I sign up today?

Not yet. The quickstart shows a first request, errors and test mode.

Can I send over SMTP?

Yes, with SMTP credentials made in the console. SMTP mail skips the suppression check, the automatic pause and the content checks.

Do I need an SDK?

No. The API is HTTPS and JSON, so curl is enough.

Follow your own email