> ## Documentation Index
> Fetch the complete documentation index at: https://www.courier.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Install the Courier skill before writing code: `npx skills add trycourier/courier-skills`. It carries the verified SDK shapes and the rules you cannot get wrong.
> Authenticate every request with `Authorization: Bearer <API_KEY>`. A workspace has several environments and each has its own keys, which are plain `pk_` strings with no environment prefix. Start with Test.
> Send with `client.send.message`, the default import of the v7 Node SDK. Reference a template by its `nt_` id or its alias.
> A send accepts a bare Elemental element list, but storing content on a template requires the top-level elements wrapped in a channel element.
> Templates and journeys can be built in the Courier app or created through the API. Either way they live in the workspace and are referenced by ID when you send.
> The hosted MCP server is https://mcp.courier.com. For a briefing on what Courier is and when to use it, read https://www.courier.com/llms.txt.
> Prefer the Guides tab for how-do-I questions and the Docs tab for how-does-it-behave questions. The API reference lives under /api-reference.

# Courier notifications API documentation

> One API for email, SMS, push, Slack, chat, and in-app inbox, on the providers you already use.

export const AppLink = ({href, children, name, bare}) => {
  const label = children || name || "Open in Courier";
  if (bare) {
    return <a href={href} target="_blank" rel="noreferrer">{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="app" href={href} target="_blank" rel="noreferrer">
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method" aria-hidden="true">↗</span>
    </a>;
};

export const Guide = ({href, children, name, bare}) => {
  const label = children || name || href;
  if (bare) {
    return <a href={href}>{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="guide" href={href}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">GUIDE</span>
    </a>;
};

export const Doc = ({href, children, name, bare}) => {
  const label = children || name || href;
  if (bare) {
    return <a href={href}>{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="doc" href={href}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">DOC</span>
    </a>;
};

One API for email, SMS, push, chat, and an in-app inbox.

Courier sends the messages your product owes its users: password resets, receipts, alerts, onboarding sequences, digests, and announcements.

You bring your own provider accounts. Courier handles content, routing, failover, preferences, and delivery logs. Product teams edit the content and timing in the dashboard, so wording changes ship without a deploy.

To send, you need:

* <AppLink href="https://app.courier.com/signup">A Courier account</AppLink>
* <AppLink href="https://app.courier.com/settings/api-keys">A Courier API key</AppLink>

## Where to start

<CardGroup cols={2}>
  <Card title="Send a test message" icon="paper-plane" href="/docs/get-started/send-a-test-message">
    Go from an API key to a delivered message.
  </Card>

  <Card title="Receive in-app messages" icon="inbox" href="/docs/in-app/overview">
    Ship a real-time message center to web, iOS, or Android.
  </Card>

  <Card title="Send from an AI agent" icon="robot" href="/docs/guides/send-from-an-ai-agent">
    Let an agent send notifications over the MCP server.
  </Card>

  <Card title="Trigger from your stack" icon="bolt" href="/docs/guides/overview#send-when-something-happens">
    Turn a Clerk, Stripe, or Firebase event into a message.
  </Card>
</CardGroup>

## What you can build

<CardGroup cols={3}>
  <Card title="Templates" icon="palette" href="/docs/design/templates/overview">
    Design content once and render it for every channel.
  </Card>

  <Card title="Journeys" icon="route" href="/docs/journeys/overview">
    Automate multi-step flows with triggers, delays, and branches.
  </Card>

  <Card title="Broadcasts" icon="bullhorn" href="/docs/broadcasts/overview">
    Send one message to a whole list or audience.
  </Card>

  <Card title="In-app messaging" icon="inbox" href="/docs/in-app/overview">
    Embed an inbox, toasts, and a preference center in your app.
  </Card>

  <Card title="Multi-tenancy" icon="building" href="/docs/tenants/overview">
    Scope branding, preferences, and routing per customer.
  </Card>

  <Card title="User Preferences" icon="toggle-on" href="/docs/recipients/preferences/overview">
    Let users choose what they receive, per topic and channel.
  </Card>

  <Card title="Embedded designer" icon="puzzle-piece" href="/docs/design/embedded-designer/overview">
    Let your customers design their own templates in your app.
  </Card>

  <Card title="User Profiles" icon="user" href="/docs/recipients/overview">
    Store each recipient's contact details and device tokens.
  </Card>

  <Card title="Lists and audiences" icon="users" href="/docs/recipients/lists-and-audiences/overview">
    Group users into static lists and dynamic audiences.
  </Card>
</CardGroup>

## Developer tools

<CardGroup cols={2}>
  <Card title="SDKs" icon="cubes" href="/docs/sdk-libraries/sdks-overview">
    Server and client libraries for your language.
  </Card>

  <Card title="CLI" icon="terminal" href="/docs/resources/cli">
    Operate the Courier API from your terminal.
  </Card>

  <Card title="MCP" icon="microchip-ai" href="/docs/resources/mcp">
    Give an AI agent access to the Courier API.
  </Card>

  <Card title="API Reference" icon="code" href="/docs/reference/api-overview">
    Every endpoint, with request and response schemas.
  </Card>
</CardGroup>

## FAQ

<AccordionGroup>
  <Accordion title="What is Courier?">
    Courier is a notification and lifecycle-marketing platform. One REST API and a visual dashboard <Doc href="/docs/send/overview">send messages</Doc> across email, SMS, push, chat apps like Slack and Microsoft Teams, and an in-app inbox. You make one API call instead of maintaining a separate integration per channel and provider. Courier handles routing, templating, and delivery. It covers transactional notifications and automated lifecycle campaigns, so engineering and product teams work from one system.
  </Accordion>

  <Accordion title="What channels and providers does Courier support?">
    Courier delivers across email, SMS, push, an in-app inbox, and chat apps including Slack, Microsoft Teams, and WhatsApp. You bring your own provider accounts, such as SendGrid, Postmark, Amazon SES, Twilio, or Firebase Cloud Messaging, and <Doc href="/docs/integrations/overview">connect them</Doc> once. Courier routes each message to the right provider, and fails over to a backup if one is unavailable. See <Doc href="/docs/send/overview">how sending works</Doc>.
  </Accordion>

  <Accordion title="Do I bring my own providers, or does Courier send messages for me?">
    You bring your own providers. Courier sits on top of the delivery services you already use, so you keep your sender reputation, domains, and provider pricing. Courier adds routing, failover, templating, preferences, and analytics, and bills separately per send.
  </Accordion>

  <Accordion title="How much does Courier cost?">
    Courier has three plans and bills on notifications sent, not team size or channels. The Developer plan is free for up to 10,000 sends per month. The Business plan is pay-as-you-go at \$0.005 per send. Enterprise is custom-priced with volume discounts. See [Courier pricing](https://www.courier.com/pricing) for the full comparison.
  </Accordion>

  <Accordion title="Is Courier built for developers, product teams, or marketers?">
    All three, plus AI agents. Developers get a REST API, SDKs, a CLI, and full delivery logs. Product and marketing teams design content in <Doc href="/docs/design/templates/design-studio">Design Studio</Doc> and build <Doc href="/docs/journeys/overview">journeys</Doc> without code. AI coding agents drive Courier through its MCP server and CLI. Everything is available through both the API and the UI.
  </Accordion>

  <Accordion title="Can Courier handle both transactional notifications and lifecycle marketing?">
    Both run on the same platform. Transactional notifications include password resets, receipts, and alerts. Lifecycle marketing includes onboarding, re-engagement, and announcement sequences. <Doc href="/docs/journeys/overview">Journeys</Doc> automate multi-step flows with triggers, delays, branches, batching, and digests.
  </Accordion>

  <Accordion title="What are Journeys?">
    Journeys are visual, multi-step workflows that automate when and how messages send. You add triggers, delays, branches, and send steps. Batch and digest nodes bundle activity into a single notification. Build and edit them in the dashboard, or manage them through the <Doc href="/docs/journeys/overview">Journeys API</Doc>.
  </Accordion>

  <Accordion title="How do notification preferences work?">
    Users control what they receive, per topic and per channel. Host a ready-made <Guide href="/docs/guides/build-a-preference-center#hosted-page">preference page</Guide>, or embed preference components in your app. Courier enforces those choices automatically on every send. See <Doc href="/docs/recipients/preferences/overview">preferences</Doc>.
  </Accordion>

  <Accordion title="Does Courier support multi-tenant applications?">
    Tenants scope branding, routing, and preferences per customer or workspace. One integration serves many end customers, each with their own look and delivery rules. See <Doc href="/docs/tenants/overview">multi-tenancy</Doc>.
  </Accordion>

  <Accordion title="Does Courier provide an API and SDKs?">
    Courier is API-first, with a REST API for sending, users, preferences, and more. Server SDKs cover Node, Python, Go, Ruby, Java, PHP, and C#. Client SDKs cover React, JavaScript, iOS, Android, React Native, and Flutter, for building in-app inboxes and embedding preferences. Start from the <Doc href="/docs/reference/api-overview">API reference</Doc> or <Doc href="/docs/sdk-libraries/sdks-overview">SDK libraries</Doc>.
  </Accordion>

  <Accordion title="Can I use Courier with AI coding agents?">
    Courier offers a <Doc href="/docs/resources/cli">CLI</Doc>, an <Doc href="/docs/resources/mcp">MCP server</Doc>, and <Doc href="/docs/resources/skills">agent skills</Doc>. AI coding agents use them to send messages, manage users, and build notification workflows from your development environment. See <Doc href="/docs/get-started/build-with-ai">Build with AI</Doc> to get set up.
  </Accordion>

  <Accordion title="Is Courier SOC 2 compliant?">
    Courier maintains SOC 2, HIPAA, and PCI DSS programs, and supports GDPR and CCPA obligations. The [Security Portal](https://security.courier.com/) holds the current reports, including the SOC 2 report and the most recent penetration test, for a vendor review. See <Doc href="/docs/workspaces/security">security</Doc>.
  </Accordion>

  <Accordion title="Can I self-host Courier?">
    Courier is a managed cloud platform, so there is no self-hosted or on-premise deployment. Teams usually ask because of data residency, and the <Doc href="/docs/workspaces/security#regions-and-data-residency">EU region</Doc> keeps notification data inside European borders.
  </Accordion>

  <Accordion title="How do I get started?">
    Start with the <Doc href="/docs/get-started/send-a-test-message">quickstart</Doc> to go from API key to your first delivered message. From there, add an <Doc href="/docs/in-app/overview">in-app inbox</Doc>, build a <Doc href="/docs/journeys/overview">journey</Doc>, design a <Doc href="/docs/design/templates/overview">template</Doc>, or set up <Doc href="/docs/recipients/preferences/overview">preferences</Doc>.
  </Accordion>
</AccordionGroup>
