Estamail Partner API
Give the tenants and members of your SaaS platform free basic email signatures. Register a tenant, provision its members, and sign them in with one click.
Overview
The API is a simple JSON REST API. Your server calls it with a secret API key. Your platform has tenants (organisations), and each tenant has members (people). You use your own IDs for both, so you never need to store ours.
Each provisioned member gets an Estamail account on the free Basic plan, with the email already verified. Base URL:
https://app.estamail.waestaltd.com/api/v1Authentication
Send your API key in the x-api-key header (or as Authorization: Bearer ...). Keys start with em_. Call the API from your server only. Never put the key in a browser or mobile app.
curl https://app.estamail.waestaltd.com/api/v1/tenants \
-H "x-api-key: em_your_key_here" \
-H "Content-Type: application/json" \
-d '{"external_id":"acme-123","name":"Acme Ltd"}'To get a key, contact us with your platform name and a contact email. Keys are shown once when issued, so store yours securely. We can deactivate a key at any time, and you can ask for a replacement if one leaks.
Tenants
/tenantsRegister a tenant. Safe to call again: an existing external_id is updated, not duplicated.
{ "external_id": "acme-123", "name": "Acme Ltd" }Returns 201 with id, external_id, name, created_at, updated_at.
/tenants/{tenantExternalId}Remove a tenant and its member records. Returns 204. Members keep their Estamail accounts.
Members
/tenants/{tenantExternalId}/membersProvision a member. Creates the Estamail account and the free Basic subscription. Idempotent: calling again with the same member external_id returns the existing record.
{ "external_id": "user-42", "email": "jane@acme.com", "full_name": "Jane Doe" }Returns 201 (new) or 200 (already existed) with id, external_id, email, full_name, supabase_user_id, created_at.
/tenants/{tenantExternalId}/membersList the tenant's members. Returns { "data": [ ... ] }.
/tenants/{tenantExternalId}/members/{memberExternalId}Remove a member from the tenant. Returns 204.
One-click sign-in
/tenants/{tenantExternalId}/members/{memberExternalId}/linkGenerate a single-use sign-in link. Redirect your user to it and they land in Estamail already signed in. Optionally choose where they land (the URL must be one we allow).
{ "redirect_to": "https://app.estamail.waestaltd.com/builder" }Returns { "link": "https://...", "email": "jane@acme.com" }. Links are single-use and short-lived, so generate one at the moment the user clicks.
Typical integration
- When a customer signs up on your platform, call
POST /tenants. - When someone joins that customer, call
POST /tenants/…/members. - Add an "Email signature" button in your app. On click, your server calls
…/linkand redirects the user to the returned link. - When a member or customer leaves, call the matching
DELETE.
Errors and limits
Errors return JSON: { "error": "message" }.
400missing or invalid fields401missing, invalid or deactivated API key404tenant or member not found429too many requests. Wait the number of seconds inRetry-After.500server error. Safe to retry; all create calls are idempotent.
Requests are rate limited per IP address. Contact us if you need higher limits for a bulk import.
What members get
Free Basic plan: the signature builder and a selection of templates. Members can upgrade to a paid plan at any time from inside Estamail. Questions? Get in touch.