Transactional email through a real SMTP relay or an HTTPS JSON API, authed by one hyd-mail key and billed per recipient.
Hep.gg Email sends transactional mail through two interchangeable channels: a real SMTP submission relay at smtp.hep.gg:587 that any existing app, mail client, or framework can point at unchanged, and an HTTPS JSON API at POST https://hep.gg/api/v1/email/send for new code. Both channels share the same hyd-mail- key, the same credit balance, and the same send log. Pick whichever fits the app you already have.
Authentication
Every send is authenticated by a single per-key token in the format hyd-mail- followed by 40 characters. You mint, rotate, disable, and delete keys on the API Keys tab of the Email dashboard. There is no public endpoint that creates a key.
- HTTPS API: send the key as
Authorization: Bearer hyd-mail-.... - SMTP: the key is the AUTH password. The username is ignored, so put anything there (for example
x). See SMTP relay.
The same key works on both channels. Disabling a key disables both instantly. Rotating a key rotates both. The 120 calls/min rate limit and the credit balance are shared across channels, so a caller cannot double-dip by switching protocols.
Quickstart
Send your first email from the global sender noreply@hep.gg, which works for every account. Replace hyd-mail-... with a key from the API Keys tab.
curl -X POST https://hep.gg/api/v1/email/send \
-H "Authorization: Bearer hyd-mail-..." \
-H "Content-Type: application/json" \
-d '{
"to": "customer@example.com",
"from": "noreply@hep.gg",
"subject": "Welcome to Acme",
"html": "<h1>Hi there!</h1><p>Your account is ready.</p>"
}'await fetch("https://hep.gg/api/v1/email/send", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HEPGG_EMAIL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "customer@example.com",
from: "noreply@hep.gg",
subject: "Welcome to Acme",
html: "<h1>Hi there!</h1><p>Your account is ready.</p>",
}),
});A successful call returns a messageId you can find on the dashboard Logs tab:
{
"ok": true,
"data": {
"messageId": "a1b2c3d4e5f6a7b8",
"smtpMessageId": "<...@hep.gg>",
"status": "sent",
"from": "noreply@hep.gg",
"recipients": 1,
"creditsCharged": 1
}
}Choosing a channel
What does not exist
- No delivery or bounce webhook. Nothing calls back when a message is delivered, opened, or bounces.
- No status-lookup endpoint. The only post-send visibility is the dashboard Logs tab; there is no public
GETbymessageId. - No 30-day unlimited tier. Email is billed strictly as credits, one per recipient. (An old unlimited SKU was retired and is gone.)