Skip to main content
email·digit

Send your first email in five minutes.

Three steps. No SDK to install (we don't have one yet; REST is enough). The same flow works in any language that can make an HTTPS request.

Step 1

Create an API key.

From your dashboard at /dashboard/api-tokens. Click Create key, give it a name (for example “local dev”), tick the email:send scope, and copy the value once. We store only the hash; if you lose the plaintext you'll have to create a new one. An ed_test_… key records and renders everything and delivers nothing; ed_live_… sends for real. Start on test.

export ED_TOKEN="ed_test_qm4x7ptbz2hs6kdrfw3nyc5jvea7lqtm"
The "Create API key" dialog with scopes.
The Create API key dialog. Pick the send scope, or leave every scope unticked for full workspace access.
Step 2

Create a journey and give it a trigger key.

Your app fires a trigger, not a body of HTML: the email itself lives in a journey you write once. Create one at /dashboard/transactional, or describe the sequence and let us draft it. The trigger_key you choose (for example welcome) is what your code calls. A live key needs the journey activated; an ed_test_ key works against a draft.

Journeys page: generate a journey from a sentence, with the trigger key column
Journeys: describe a sequence to have it drafted, and read each journey's trigger key in the list.
Step 3

POST to /api/transactional/send.

One endpoint. The key already knows its workspace: no X-Workspace-Id header required. Returns 202 Accepted with the enrollment; pass the same idempotency_key on a retry and it's a no-op.

POST /api/transactional/send
# Fire the trigger: one authenticated POST
curl -X POST https://api.emaildigit.com/api/transactional/send \
  -H "Authorization: Bearer $ED_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "trigger_key": "welcome",
    "to": "you@yourcompany.com",
    "variables": { "first_name": "Ada" },
    "idempotency_key": "signup_8f21c"
  }'

# → 202 Accepted
{
  "trigger_key": "welcome",
  "status": "enrolled",
  "mode": "live",
  "enrolled_steps": 1,
  "message_ids": ["9f2c1a4e-..."]
}
The same call from a terminal: one POST with a trigger key, and the answer comes back enrolled.
Next

What to read next.

  • Webhooks: receive events when sends land, replies arrive, domains verify.
  • API reference: the main endpoints by group.
  • Domain setup: four DNS records to start sending from your own domain.
Guides

Background reading.