The foundation the world's apps are built on.

Email, SMS, inboxes, scheduling and more, behind one SDK and one API key.

Quickstart
coss_test_••••••••the same key
const { ,  } = await ..({
  : "Acme <billing@acme.com>",
  : "ada@example.com",
  : "Your October invoice",
  : "<p>Your invoice is attached.</p>",
  : "billing",
});

Response, abridged

{
  "object": "email",
  "id": "email_01k7c8m4q2f3e9v6t5r1n0p8yz",
  "status": "queued"
}

Your October invoice

to ada@example.com

delivered
  1. queued
  2. email.sent
  3. email.delivered
  4. email.opened

coss.com is used by

  • Code
  • fusial
  • Ledington

One vendor, not four

Every channel you add usually means another vendor to approve, pay and search. See how coss.com compares.

Vendor review: coss.com
  • Security review
  • DPA signed
  • Procurement approved

One vendor onboarding

One security review and one contract, whichever products you use.
Your subprocessors

coss.com

One subprocessor

One name on your list covers every product.
October invoice
Email
120,000 recipients
SMS
8,400 segments
Scheduling
1,200 bookings

One bill

All your usage, on one invoice.
Logs

john@example.com

  • email.delivered
  • sms.delivered
  • scheduling.booking.confirmed

One diagnostic surface

Every message and event, searched in one place.

Set up in one prompt

Plain-text docs, typed results, and keys that can't send by accident.

  1. Copy one promptOne line for Claude Code, Cursor or Codex.
  2. Your agent reads the manualEvery docs page is Markdown at its URL plus .md.
  3. It tests with a sandbox keycoss_test_ keys record every event and deliver nothing.
Add coss.com to this project

Claude Code~/acme

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.

  1. Fetch(https://coss.com/llms.txt)
  2. Bash(npx coss-cli init --agents)
  3. ✔ Saved a development key to .env.local as COSS_API_KEY.
  4. Fetch(https://coss.com/docs/email/sending.md)
  5. Write(src/lib/coss.ts)
  6. Write(src/app/api/webhooks/coss/route.ts)
  7. Bash(npx tsx scripts/send-test.ts)
  8. email_01k7c8m4q2f3e9v6t5r1n0p8yz queued
  9. Email and signed delivery webhooks are in. The test send was recorded with your sandbox key; nothing was delivered.

Worked for 2m 14s

⏵⏵ accept edits on (shift+tab to cycle)

A coding agent setting up coss.com from one prompt. What it does depends on your project.

Know what happened to every message

Every message keeps its events. Look one up, ask your agent, or show it in your own app.

In the dashboard
Welcome to Acme, JohnTo john@example.com
delivered
  1. email.sent
  2. email.delivered
  3. email.opened
Ask your agent, over MCP

Did john@example.com get the onboarding email?

diagnose_email(john@example.com)

Yes, delivered at 09:41 and opened two minutes later.

In your app, with the SDK
const { data } = await diagnose(coss, id);data.summary

"Delivered to john@example.com."

Questions

Send your first email before your coffee cools.

Start free with 3,000 emails a month. Sandbox keys are never billed.

Pricing

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.