Transactional email, from your own domain.
coss.com Email is a transactional email API. Send single, batch and scheduled email from your domains, with templates, tracking and per-recipient webhooks.
How it works
One call sends an email. coss.com queues it, hands it to the mail provider and reports what happens to each recipient.
// An email with an attachment, safe to retry under your own key.
const { : , } = await ..(
{
: "Acme <billing@acme.com>",
: "ada@example.com",
: "Your October invoice",
: "<p>Your invoice is attached.</p>",
: [{ : "invoice.pdf", : }],
: "billing",
},
{ : "invoice-2026-10-ada" },
);
// A published template, rendered at send in the recipient's language, sent later.
await ..({
: "Acme <hello@acme.com>",
: "grace@example.com",
: "welcome",
: "de",
: { : "Grace" },
: "2026-11-02T09:00:00Z",
});
// Up to 100 emails in one request, all or nothing.
await ..([
{ : "Acme <digest@acme.com>", : "ada@example.com", : "Your week", : "<p>Hi Ada</p>" },
{ : "Acme <digest@acme.com>", : "linus@example.com", : "Your week", : "<p>Hi Linus</p>" },
]);Sends return 202 with status: "queued" (or scheduled). Follow each recipient with
coss.email.get() or the email.delivered, email.bounced and other webhooks.
The API reference lists every field.
Sending
Everything a product needs to send its own email: content in code or in coss.com, at once or later, retried without duplicates.
Single, batch and scheduled
coss.email.send() sends one email, sendBatch() up to 100 in one all-or-nothing request. scheduled_at sends up to 30 days ahead, and a scheduled email can be rescheduled or canceled until it leaves.
Idempotent by default
The SDK puts an Idempotency-Key on every send and reuses it across its retries. Pass your own, such as an invoice id, and a repeat within 24 hours returns the first email instead of sending a second. See idempotency.
Templates
Keep subjects and bodies in coss.com: edit a draft, publish numbered versions, hold one subject, HTML and text per locale, and declare typed variables. Templates are rendered at send, so later publishes never change an email already sent or scheduled.
React Email and text parts
Pass a React Email component as react and the SDK renders it to HTML and text. Send only HTML and coss.com adds a plain-text part generated from it, with links written out.
Attachments
Base64 files, inline images by content_id, up to 20 per email. The bytes are deleted once the email is sent, fails or is canceled; reads and webhooks only ever show their metadata.
Per-recipient events
Each recipient has its own status, from queued to delivered, bounced or complained. Every change is an event on the email and a signed webhook, with your tags and category, never the content.
Deliverability
The parts of email that decide whether it reaches the inbox, set up and watched for you.
Domains with Domain Connect
Each domain gets three DKIM keys, a MAIL FROM subdomain with SPF, and a recommended DMARC record. With a DNS provider that supports Domain Connect, the dashboard adds the missing records in one click.
DMARC reports and BIMI
Tracking on your domain
Open and click tracking per environment, category or send. A custom tracking domain such as links.acme.com serves the links from your own brand, with a certificate coss.com issues.
Suppressions
Permanent bounces and complaints are suppressed automatically, and one-click unsubscribe suppresses per category. One list per environment, managed, imported and exported through the API.
Two streams
Transactional and marketing email leave on separate sending configurations with separate reputations, so a newsletter's complaints never hold up a password reset.
Dedicated IPs
With the add-on, live email leaves from your own Amazon SES managed dedicated IPs, warmed up per mailbox provider. What they can't take yet goes out on shared IPs, so warm-up never delays a send.
Sensitive content can skip storage: with content storage set to
discard, coss.com keeps an email's subject and bodies only until it is sent.
Specifications
The limits a send is checked against. The docs list each one in context.
- Emails per batch
- 100, all or nothing
- Recipients per field
- 50
- Scheduling
- up to 30 days ahead
- Attachments
- 20 files, 25 MB combined
- Request size
- 40 MB
- Custom headers
- 15
- Tags per email
- 50
- Idempotency window
- 24 hours
- Locales per template version
- 30
- Email retention
- 45 days
- Custom tracking domains
- Pro, Scale and Enterprise
- Dedicated IPs add-on
- Scale and Enterprise
Pricing
Email is billed per recipient. Sandbox environments send nothing and are free.
Free includes 3,000 email recipients a month. Dedicated IPs are an add-on:
See pricing for the plans.
Questions
- What is the coss.com email API?
- A REST API and TypeScript SDK for sending transactional email such as sign-in links, receipts and password resets from your own verified domains. Each email is tracked per recipient, and every delivery event can be sent to your webhook endpoint.
- How do I send an email with coss.com in Node.js or TypeScript?
- Install the coss package, set COSS_API_KEY, and call coss.email.send() with from, to, subject and html or text. The call returns { data, error } instead of throwing, and the SDK retries failed requests under the same Idempotency-Key so an email is never sent twice.
- Can I send emails in bulk or in batches?
- Yes. coss.email.sendBatch() sends up to 100 emails in one request, each with its own sender, recipients and content. A batch is all or nothing, so if one email is invalid nothing is sent, and one idempotency key covers the whole batch.
- Can I schedule an email to send later?
- Yes. Pass scheduled_at as an ISO 8601 time up to 30 days ahead. Until it is sent, you can move it with coss.email.reschedule() or cancel it with coss.email.cancel().
- How do I set up DKIM, SPF and DMARC for my domain?
- Add the domain in the dashboard or with coss.domains.create() and publish the records it returns, three DKIM CNAMEs, a MAIL FROM MX and SPF record, and a recommended DMARC record. If your DNS provider supports Domain Connect, the dashboard adds them for you in one click.
- Does coss.com offer dedicated IP addresses?
- Yes, as the Dedicated IPs add-on. They are Amazon SES managed dedicated IPs, warmed up automatically per mailbox provider, and while they warm up the mail they can't take yet leaves from shared IPs. The pricing page lists the plans it can be added to.
- How much does sending email cost?
- Email is billed per recipient, with a monthly allowance on the Free plan and volume tiers on paid plans. Sandbox environments send nothing and are free. The pricing page lists the current rates.
Works with
- Marketing emailcoss.com Marketing email sends newsletters and announcements to your contacts as broadcasts, with audiences, segments, topics and a hosted preference center.
- SMTP relaycoss.com's SMTP relay sends email from anything that speaks SMTP, with an API key as the password and the same checks, tracking and webhooks as the API.
- Inbound emailcoss.com Inbound email receives mail at your domain or at an address coss.com gives each environment, and calls your webhook with every message, parsed.
- Email for platformscoss.com Email for platforms gives each of your users a sub-account with its own domains, sending reputation, quotas and suppression list, all on your API key.
- AI agentscoss.com gives AI agents their own email addresses, threads and replies, checks untrusted mail with Risk, and lets coding agents set it all up from one prompt.
- Authenticationcoss.com covers sign-up, login and verification with account emails for Better Auth and Auth.js, one-time codes with a fraud guard, risk checks and rate limits.
- Notificationscoss.com sends product notifications by email and SMS on one API key, with templates, scheduled sends, signed delivery webhooks and one log across both.
Compared
- coss.com vs ResendResend and coss.com cover much of the same email ground. coss.com puts sub-accounts, sandbox environments and SMS on the same key.
- coss.com vs SendGridSendGrid is a mature email API with a separate marketing suite. coss.com puts sending, marketing, receiving and sub-accounts in one API.
- coss.com vs PostmarkPostmark is built for application email and does it well. coss.com adds contacts, audiences, per-customer sub-accounts and SMS on the same key.
- coss.com vs MailgunMailgun is a sending API with flexible inbound routes and deliverability add-ons. coss.com adds marketing email, agent inboxes and logs on every plan.
- coss.com vs Amazon SEScoss.com sends through Amazon SES. SES is the lower-level, lower-cost building block; coss.com adds what SES leaves to you.
Start with Email today.
Development keys record every request and event and deliver nothing, so you can build and test before you verify a domain. Hand your coding agent this prompt:
Add coss.com to this project: read https://coss.com/llms.txt, get a development key with `npx coss-cli init --agents`, and build and test with it.