Availability
Customer accounts and hosted API access aren’t available yet. We haven’t announced a launch date. This reference documents implemented interfaces, including features that still need a separate rollout.
The OpenAPI server uses a non-resolving .invalid placeholder. It isn’t a working API host. Private owner-session routes are excluded.
Authentication
Project API keys are bearer credentials scoped to a project, environment, and permissions. Workspace administration endpoints use a separate scoped workspace credential. A project key never grants owner access. Keep credentials on your server.
Sending and delivery
Use a stable idempotency key for each logical send and reuse it when retrying. A successful API request confirms acceptance for processing; receiving-server acceptance does not prove inbox placement. Test credentials simulate delivery.
Try a local example
Download the local email fixture. You’ll need Node.js 22 or later.
This fixture needs no account or API key and never sends email. It keeps synthetic messages in memory and implements only a small subset of the send/status protocol. It isn’t a complete implementation of the OpenAPI contract.
# Download the linked email-mock-server.mjs, then run it in one terminal:
node email-mock-server.mjs
# In another terminal, create a simulated message:
curl -sS http://127.0.0.1:3027/api/v1/emails \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: preview-example-001' \
--data '{"to":"reader@example.com","subject":"Local example","text":"This fixture sends no email."}'The response contains a synthetic id, status queued, and mode demo. Repeat the request with the same key to retrieve the same message. Changing the body with that key returns an idempotency conflict. Restarting the fixture clears its data.