Email

Transactional email through a real SMTP relay or an HTTPS JSON API, authed by one hyd-mail key and billed per recipient.

Email

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
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>"
  }'

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 GET by messageId.
  • No 30-day unlimited tier. Email is billed strictly as credits, one per recipient. (An old unlimited SKU was retired and is gone.)