One key, one log, one bill.
The coss.com platform is what every product shares. Environments and scoped keys, signed webhooks, searchable logs, dated API versions and one bill.
How it works
Every product sits on the same environments, keys, webhooks, logs and bill. Learn them once and every new product works the same way.
// What this key is, and what it may do.
const { : } = await ..();
.(?., ?..);
// Get told when something happens, signed and retried.
const { : } = await ..({
: "https://example.com/webhooks/coss",
: ["email.bounced", "sms.failed"],
});
// Every request, event and webhook attempt, in one log.
const { : } = await ..({
: new (.() - 24 * 60 * 60 * 1000),
: ["warning", "error"],
});An API that holds still
Integrations keep working: breaking changes are versioned, and retries never act twice.
Dated versions. Breaking changes ship as a new API version named after its release date and selected with the Coss-Version header. Without it, a request uses your organization's version, pinned on its first request and changed only when you upgrade it in the dashboard. Webhook endpoints keep their own version. Additive changes reach every version. Versioning.
Idempotency. Sends accept an Idempotency-Key: for 24 hours a repeat with the same body returns the first result, and a different body fails with 422 idempotency_key_reused. The SDK sends a key on every POST and reuses it across its retries. Idempotency.
One error shape. Every error is the same envelope with a type, a code, a message and a request id, in every version. Errors.
Billing you can control
One plan covers every product, rated by coss.com and paid on one invoice.
A paid plan's monthly fee is usage credit: it is spent on any product, so a month costs the larger of the fee and your usage. Volume pricing is graduated, so there is no cliff between bands.
- Spend limit: live sending pauses once usage beyond your credit reaches it.
- Budgets: monthly caps per member's personal keys, per project or per API key; over one, only its live sending pauses.
- Usage alerts: at 80% and 100% of your credit by default, by email and as
billing.*webhooks. - Spend by source: the Spend page splits each month's charges by project, environment, key and member.
Plans and billing and spend and budgets have the details.
Plans
Plans differ in usage credit, sending rates, limits and organization features. Sandbox sends are never billed.
See pricing for every rate.
Specifications
Platform numbers from the code and the docs.
- Environments per project
- 2, live and sandbox
- Webhook signatures
- Standard Webhooks, HMAC-SHA256
- Webhook retries
- 7, over about 28 hours
- Webhook response window
- 10 seconds, any 2xx
- Endpoint auto-disable
- after 5 days of failures
- Secret roll grace period
- a day by default, up to a week
- Log range per query
- 31 days
- Log drains per environment
- 5
- Idempotency window
- 24 hours
- Webhook deliveries kept
- 30 days
Questions
- How do I test without sending real email or SMS?
- Use a sandbox key (coss_test_). Every project has a development environment whose keys accept any sender and deliver nothing, while delivery events are simulated, including bounces and complaints from the mailbox simulator's addresses. Sandbox sends are never billed.
- Can I restrict what an API key can do?
- Yes. Keys are created with full access, sending access only, read-only access or a custom set of permissions. A restricted key keeps exactly the permissions it was created with, and a request it isn't allowed to make fails with 403 and names the permission it needed.
- How are coss.com webhooks signed?
- With Standard Webhooks headers (webhook-id, webhook-timestamp and webhook-signature) and an HMAC-SHA256 over the raw body with the endpoint's whsec_ secret. verifyWebhook in the coss package checks them, and any Standard Webhooks library works.
- How long are logs kept?
- Each environment's log is kept for 30 days, and one query covers at most 31 days. To keep logs longer or search them next to your own, stream them to your logging stack with a log drain.
- Will API changes break my integration?
- No. Breaking changes ship as a new dated API version, and your organization stays pinned to its version until you upgrade it in the dashboard. Additive changes, such as new fields and endpoints, reach every version.
- How does coss.com billing work?
- A paid plan's monthly fee becomes usage credit that pays for any product, so a month costs the larger of the fee and your usage. Every product is on one invoice, and owners can set a spend limit, budgets per member, project or API key, and usage alerts. The pricing page lists the plans.
Works with
- Securitycoss.com security covers who gets in and what is kept. SSO, SCIM, two-factor and passkeys, roles, an audit log, abuse screening and a retention policy.
- SDKs and toolscoss.com SDKs and tools cover every language you ship in. A zero-dependency TypeScript SDK, six generated SDKs, framework drivers, a CLI and OpenAPI 3.1.
- Coding agentscoss.com for coding agents is a one-line setup for Claude Code, Cursor and Codex. Markdown docs, a sandbox key, an MCP server and an Agent Skill.
- Hookscoss.com Hooks is webhooks as a service. Send an event once and coss.com signs, delivers and retries it to every endpoint your customers registered.
- SaaS platformscoss.com gives multi-tenant platforms email sub-accounts per customer, webhooks to customers with a hosted portal, budgets, an audit log and SSO.
- 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.
Start with Platform 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.