Start here
Quickstart
Create a key, verify a domain, and send a controlled email with a retry-safe request.
Before you begin
Create a SendHQ workspace and keep the dashboard open. New workspaces receive a controlled integration trial: deliveries can go only to the account email or an AWS SES simulator address until a paid subscription is active.
1. Create an API key
Open API keys in the dashboard, choose a descriptive name such as Production, and copy the key when it is shown. Store it in a server-side secret manager. SendHQ never returns the full value again.
SENDHQ_API_KEY=re_your_key_here2. Add a sending domain
Open Domains, add a domain you control, and publish the returned DKIM, SPF, DMARC, and SES verification records. Cloudflare users can authorize a one-time DNS setup; SendHQ discards the OAuth token after the callback.
include:amazonses.com into the existing v=spf1 value.3. Wait for verification
Use the dashboard or POST /domains/:id/verify. DNS can move through pending, checking, and propagating before SES reports the identity as verified.
4. Send a controlled message
curl https://sendhq.cc/api/v1/emails \
-H "Authorization: Bearer $SENDHQ_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: onboarding-user-42" \
-d '{"from":"Acme <hello@example.com>","to":["owner@example.com"],"subject":"SendHQ is connected","html":"<h1>It works</h1><p>Your first controlled message was accepted.</p>","text":"It works. Your first controlled message was accepted."}'A successful request returns a SendHQ email ID, the provider message ID, and the conversation thread ID. Persist the SendHQ ID with the application event that caused the email.
5. Handle outcomes
An accepted API request is not the same as recipient delivery. Retrieve /emails/:id/events or use the dashboard to inspect delivery, bounce, complaint, reject, open, and click events.