- List inboxes GET
- Create an inbox POST
- Retrieve an inbox GET
- Update an inbox PATCH
- Delete an inbox DELETE
- List an inbox's threads GET
- Retrieve a thread GET
- Delete a thread DELETE
- List an inbox's messages GET
- Send a message from an inbox POST
- Retrieve a message GET
- Download an attachment of a message GET
- Reply to a message POST
Create an inbox
Gives an agent (or anyone) its own email address in the API key's environment: username@<the environment's inbound domain>, which needs no DNS setup, or an address at one of the environment's receiving domains (domain). Mail to it is kept as threads, and each message that arrives sends an inbox.message.received webhook. With a client_id that already has an inbox, that inbox is returned (200) instead of a new one.
bearerAuthAuthorizationBearer <token>A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.
Coss-Version?"2026-10-10"The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.
"2026-10-10"application/json- body
- body
- …
username?stringThe part before the @. Omit it for a random one. Mail to username+anything@domain reaches the inbox too.
^(?!.*\.\.)[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$length <= 64domain?stringOne of the environment's receiving domains (its hostname). Omit it for the environment's own domain under coss.com's inbound domain, which needs no DNS setup.
1 <= length <= 253display_name?stringThe name messages from the inbox are sent with.
1 <= length <= 64client_id?stringYour own id for the inbox (unique per environment). Creating an inbox with a client_id that already has one returns that inbox instead (200), so retries and "one inbox per user" need no bookkeeping.
^[\x21-\x7e]{1,128}$The environment's inbox with this client_id.
application/json- response
- response
- …
object*"inbox""inbox"id*stringaddress*stringThe inbox's email address (username@domain).
username*stringdomain*stringkind*stringmanaged: at the environment's own domain under coss.com's inbound domain (no DNS setup). domain: at one of the environment's receiving domains.
"managed""domain"display_name*|The name messages from the inbox are sent with.
client_id*|Your own id for the inbox, e.g. your agent's or user's (unique per environment).
can_send*booleanWhether messages can be sent from the inbox. Inboxes at coss.com's inbound domain only receive in live environments: create the inbox at a receiving domain under one of your verified domains to send from it.
sandbox*booleanWhether it belongs to a sandbox environment.
created_at*stringdate-timeupdated_at*stringdate-timeimport { Coss } from "coss";const coss = new Coss({ apiKey: process.env.COSS_API_KEY, baseUrl: "https://api.coss.com",});const { data, error } = await coss.inboxes.create({ username: "support-agent", display_name: "Acme Support", client_id: "agent-42",});{ "object": "inbox", "id": "inbox_01k7c8m4q2f3e9v6t5r1n0p8yz", "address": "support-agent@k3j9x2m7qp4l.inbound.coss.com", "username": "support-agent", "domain": "k3j9x2m7qp4l.inbound.coss.com", "kind": "managed", "display_name": "Acme Support", "client_id": "agent-42", "can_send": true, "sandbox": true, "created_at": "2026-10-10T12:00:00.000Z", "updated_at": "2026-10-10T12:00:00.000Z"}