> ## 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.

# Chat providers

> Slack, Microsoft Teams, WhatsApp, Discord, and other chat providers, with their profile fields.

export const Endpoint = ({method, path, name, href, children, bare}) => {
  const verb = String(method || "").toUpperCase();
  const title = verb + " " + path;
  const label = children || name || path;
  if (bare) {
    return href ? <a href={href}><code>{title}</code></a> : <code>{title}</code>;
  }
  if (!href) {
    return <span className="cx-endpoint" data-method={verb} title={title}>
        <span className="cx-endpoint-label">{label}</span>
        <span className="cx-endpoint-method">{verb}</span>
      </span>;
  }
  return <a className="cx-endpoint" data-method={verb} href={href} title={title}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">{verb}</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>;
};

## Available providers

<CardGroup cols={3}>
  <Card title="Slack" href="/docs/integrations/direct-message/slack" icon="https://mintcdn.com/courier-4f1f25dc/Ia7FGvhsFU_5CtOa/assets/provider-slack.svg?fit=max&auto=format&n=Ia7FGvhsFU_5CtOa&q=85&s=5432c35c8682e83900f77a2ed3eb40f0" horizontal width="24" height="24" data-path="assets/provider-slack.svg" />

  <Card title="Microsoft Teams" href="/docs/integrations/direct-message/microsoft-teams" icon="https://mintcdn.com/courier-4f1f25dc/Ia7FGvhsFU_5CtOa/assets/provider-microsoft-teams.svg?fit=max&auto=format&n=Ia7FGvhsFU_5CtOa&q=85&s=17090d6b9e3286823792857aae9d3fee" horizontal width="24" height="24" data-path="assets/provider-microsoft-teams.svg" />

  <Card title="Discord" href="/docs/integrations/direct-message/discord" icon="https://mintcdn.com/courier-4f1f25dc/Ia7FGvhsFU_5CtOa/assets/provider-discord.svg?fit=max&auto=format&n=Ia7FGvhsFU_5CtOa&q=85&s=a770f306a670a1ae36f197e940566775" horizontal width="24" height="24" data-path="assets/provider-discord.svg" />

  <Card title="WhatsApp" href="/docs/integrations/direct-message/whatsapp" icon="https://mintcdn.com/courier-4f1f25dc/rYENcCCTyPPrDtw0/assets/provider-whatsapp.webp?fit=max&auto=format&n=rYENcCCTyPPrDtw0&q=85&s=68fc28cb26d95d6c28fdf114daa719f9" horizontal width="216" height="216" data-path="assets/provider-whatsapp.webp" />

  <Card title="Facebook Messenger" href="/docs/integrations/direct-message/facebook-messenger" icon="https://mintcdn.com/courier-4f1f25dc/Ia7FGvhsFU_5CtOa/assets/provider-facebook-messenger.webp?fit=max&auto=format&n=Ia7FGvhsFU_5CtOa&q=85&s=8e088098f89eb9737d6fe2cd7ad497d7" horizontal width="216" height="216" data-path="assets/provider-facebook-messenger.webp" />

  <Card title="Viber" href="/docs/integrations/direct-message/viber" icon="https://mintcdn.com/courier-4f1f25dc/rYENcCCTyPPrDtw0/assets/provider-viber.webp?fit=max&auto=format&n=rYENcCCTyPPrDtw0&q=85&s=0886271caaed7c42b99434072ceb6efd" horizontal width="216" height="216" data-path="assets/provider-viber.webp" />

  <Card title="Stream Chat" href="/docs/integrations/direct-message/stream-chat" icon="https://mintcdn.com/courier-4f1f25dc/Ia7FGvhsFU_5CtOa/assets/provider-stream-chat.webp?fit=max&auto=format&n=Ia7FGvhsFU_5CtOa&q=85&s=dc6bc0ce85aec61e3d7904c54027eb0c" horizontal width="216" height="216" data-path="assets/provider-stream-chat.webp" />

  <Card title="Chat API" href="/docs/integrations/direct-message/chat" icon="comments" horizontal />
</CardGroup>

<Doc href="/docs/integrations/direct-message/slack">Slack</Doc> and <Doc href="/docs/integrations/direct-message/microsoft-teams">Microsoft Teams</Doc> carry rich layouts, Block Kit and Adaptive Cards. <Doc href="/docs/integrations/direct-message/whatsapp">WhatsApp</Doc> sends through Twilio and needs its templates verified first.

<Tip>
  Can't find a provider? Start a chat or email [support@courier.com](mailto:support@courier.com)
</Tip>

## Channel overrides

<Doc href="/docs/send/overrides#how-overrides-work">How overrides work</Doc> covers the two levels and which one wins. Most chat providers accept these two in a provider override.

| Field    | Sets                                                                         |
| :------- | :--------------------------------------------------------------------------- |
| `body`   | The message content, plus embeds, blocks, and other provider-specific fields |
| `config` | Credentials or endpoint URLs, swapped for this one send                      |

Each provider page documents its override schema.
