# Courier > Courier is one API for email, SMS, push, chat, and in-app inbox, sending through the notification providers you already use. It adds templates, routing, preferences, and multi-step journeys, so your application makes one request instead of integrating each channel. > ## 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 `. 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` from the Node SDK (`@trycourier/courier` v7 and later, where the client is the default import). 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. > To translate a template, write one locale at a time with `PUT /notifications/{id}/locales/{localeId}`, which merges into the existing translations. `PUT /notifications/{id}/content` and `PUT /notifications/{id}/elements/{elementId}` overwrite translations along with the content, so send each element's `id` and `locales` back, and first remove every `checksum` and any `locales` key that starts with an underscore. > 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 docs: send and automate customer messages](https://www.courier.com/docs/overview.md): Send and automate customer messages across email, SMS, push, Slack, chat, and in-app, all from one API. - [Send your first message](https://www.courier.com/docs/get-started/send-a-message.md): Send one message with the API using a Test key, then find it in the logs. - [Build your first journey](https://www.courier.com/docs/get-started/build-your-first-journey.md): Build a three-email welcome series with the Journeys API, then start it from your code. - [Send a message](https://www.courier.com/docs/send/overview.md): Send a message with one API call, and choose between a template, a broadcast, or a journey. - [Message routing and failover](https://www.courier.com/docs/send/routing.md): How Courier picks the channels and providers for each message, falls back when one can't deliver, and where you set routing: a strategy or the send. - [Routing strategies](https://www.courier.com/docs/send/routing-strategies.md): Save channel order, fallback, and provider priority as a routing strategy, attach it to templates, and change delivery for all of them in one edit. - [Send to a provider](https://www.courier.com/docs/send/send-to-a-provider.md): Send through one specific provider by naming it in routing instead of a channel. - [Message statuses and errors](https://www.courier.com/docs/send/statuses.md): Every status a message can have, what each one means, and why a send fails. - [Channel settings and overrides](https://www.courier.com/docs/send/overrides.md): Set a template's email fields and channel conditions, and change channel or provider payloads on a single send. - [Delay and schedule a send](https://www.courier.com/docs/send/delay-and-schedule.md): Delay a send by a duration, until a timestamp, or into a delivery window in the user's timezone. - [Push notifications](https://www.courier.com/docs/send/push/overview.md): How device tokens are stored on the user, synced by the SDK, and used to send push. - [Push payloads](https://www.courier.com/docs/send/push/custom-data.md): Attach custom data to a push and read it on iOS, Android, React Native, and Flutter. - [Journeys](https://www.courier.com/docs/journeys/overview.md): Multi-step flows that run once per user when triggered, with sends, delays, and branches. - [Build a journey](https://www.courier.com/docs/journeys/build.md): Build a journey in the canvas or as JSON over the API, then publish and invoke it. - [Journey nodes](https://www.courier.com/docs/journeys/nodes.md): The steps on a journey canvas: send, branch, delay, digest, batch, AI, fetch data, throttle, cancel. - [Journey send node](https://www.courier.com/docs/journeys/nodes/send.md): Send a message on one channel with a journey template, conditions, overrides, and a send window. - [Journey branch node](https://www.courier.com/docs/journeys/nodes/branch.md): Split a journey into paths by conditions on the run data, with a default path. - [Journey delay node](https://www.courier.com/docs/journeys/nodes/delay.md): Pause a run for a duration or until a timestamp before the next node. - [Journey digest node](https://www.courier.com/docs/journeys/nodes/digest.md): Add the run's event to a subscription topic's digest, released on the user's schedule. - [Journey batch node](https://www.courier.com/docs/journeys/nodes/batch.md): Collect events at one point in a journey and release them as a single payload. - [Journey AI node](https://www.courier.com/docs/journeys/nodes/ai.md): Run an LLM prompt inside a journey with the run's context, and use its structured output. - [Journey fetch data node](https://www.courier.com/docs/journeys/nodes/fetch-data.md): Call an external HTTP endpoint during a run and merge the response into the context. - [Journey throttle node](https://www.courier.com/docs/journeys/nodes/throttle.md): Limit how often a user, or everyone, passes a point in the journey within a time window. - [Journey cancel node](https://www.courier.com/docs/journeys/nodes/cancel.md): Stop in-flight runs from inside a journey, or a group of runs sharing a cancellation token. - [Journey experiments](https://www.courier.com/docs/journeys/experiments.md): A/B test two to ten template variants at one send node and compare results per variant. - [Invoke a journey](https://www.courier.com/docs/journeys/invoke.md): Start a journey run from the API, find it by run ID, and cancel it. - [Automations (Legacy)](https://www.courier.com/docs/journeys/automations/overview.md): The previous workflow product, still running and superseded by Journeys. - [Automation Designer](https://www.courier.com/docs/journeys/automations/designer.md): Build an automation visually with a trigger and a sequence of steps. - [Automation Steps](https://www.courier.com/docs/journeys/automations/steps.md): Every step an automation can run, from send and delay to fetch and branch. - [Automation Batching](https://www.courier.com/docs/journeys/automations/batching.md): Collect events over a window and release them together as one message. - [Automation Digests](https://www.courier.com/docs/journeys/automations/digest.md): Hold a topic's events and release them on the schedule the user picked. - [Automation Throttling](https://www.courier.com/docs/journeys/automations/throttle.md): Cap how often an automation sends to one user over a rolling window. - [Automation Fetch Data](https://www.courier.com/docs/journeys/automations/fetch-data.md): Call your own endpoint mid-run and merge the response into the payload. - [Automation Get Profile](https://www.courier.com/docs/journeys/automations/get-profile.md): Load a recipient's stored profile mid-run and branch on what it holds. - [Dynamic Automation Steps](https://www.courier.com/docs/journeys/automations/dynamic.md): Build the step list at invoke time instead of defining it up front. - [Automation Conditional Logic](https://www.courier.com/docs/journeys/automations/control-flow.md): Branch a run with if and switch conditions evaluated on the payload. - [Cancel an Automation Run](https://www.courier.com/docs/journeys/automations/cancel.md): Stop a scheduled or in-flight automation run with a cancellation token. - [Automation Debugger](https://www.courier.com/docs/journeys/automations/debugger.md): Step through a run to see what each node received and what it returned. - [Automation Scheduling](https://www.courier.com/docs/journeys/automations/scheduling.md): Delay a run until a timestamp, a duration, or the recipient's local time. - [Automations with Segment](https://www.courier.com/docs/journeys/automations/segment.md): Trigger an automation from a Segment track event and its properties. - [Inbound Events](https://www.courier.com/docs/journeys/automations/inbound-events.md): Post an event to Courier over the API and start an automation from it. - [Automation Webhook Trigger](https://www.courier.com/docs/journeys/automations/webhook-trigger.md): Start an automation from an inbound webhook you configure in Courier. - [Automation Audience Trigger](https://www.courier.com/docs/journeys/automations/audience-trigger.md): Start an automation for every member of an audience when it changes. - [Broadcasts](https://www.courier.com/docs/broadcasts/overview.md): Send one message to a whole list or audience, now or on a schedule. - [Send a broadcast](https://www.courier.com/docs/broadcasts/send.md): Create, schedule, and send a broadcast from the console or the API. - [Design notifications](https://www.courier.com/docs/design/overview.md): Templates, brands, and the Elemental format that defines what a notification says and looks like. - [Templates](https://www.courier.com/docs/design/templates/overview.md): What a template contains, its draft and published versions, and sending it by ID or alias. - [Design Studio](https://www.courier.com/docs/design/templates/design-studio.md): The visual template editor: canvas, per-channel content, blocks, variables, preview, and publish. - [Design Studio template settings](https://www.courier.com/docs/design/templates/template-settings.md): Every template setting in Design Studio: name, alias, conditions, and per-channel options. - [Design Studio block settings](https://www.courier.com/docs/design/templates/blocks.md): Every setting on each Design Studio block, with its type and default. - [Template variables and Handlebars helpers](https://www.courier.com/docs/design/templates/variables.md): Use variables and Handlebars helpers to personalize a template with send data and profile fields. - [Manage templates with the API](https://www.courier.com/docs/design/templates/api.md): Create, read, update, and publish templates over the REST API with an nt_ ID and a draft lifecycle. - [Edit email HTML directly](https://www.courier.com/docs/design/templates/html-email.md): Edit a template's email HTML by hand and format it to render in Gmail, Outlook, and Apple Mail. - [Device Preview for email](https://www.courier.com/docs/design/templates/device-preview.md): Render a template on real email clients and devices, from the editor or the API, and get a screenshot of each. - [Data mapping for push and inbox](https://www.courier.com/docs/design/templates/data-mapping.md): Choose which send data fields reach a delivered push or inbox message. - [Classic Designer (Legacy)](https://www.courier.com/docs/design/templates/classic-designer.md): The previous template editor, still sending, with no new templates built in it. - [Brands](https://www.courier.com/docs/design/brands.md): Apply one logo, color set, header, and footer across every template you send. - [Elemental](https://www.courier.com/docs/design/elemental/overview.md): The JSON format behind every template, and the elements Courier renders on each channel. - [Elemental text element](https://www.courier.com/docs/design/elemental/elements/text.md): Render body text with formatting, styles, and inline links or images. - [Elemental action element](https://www.courier.com/docs/design/elemental/elements/action.md): Add a button or link with a label, href, and style, rendered per channel. - [Elemental channel element](https://www.courier.com/docs/design/elemental/elements/channel.md): Set different content per channel inside one document, and override that channel's routing. - [Elemental meta element](https://www.courier.com/docs/design/elemental/elements/meta.md): Set the title, which becomes the email subject and push title. - [Elemental image element](https://www.courier.com/docs/design/elemental/elements/image.md): Embed an image with width, alignment, alt text, and an optional link. - [Elemental divider element](https://www.courier.com/docs/design/elemental/elements/divider.md): Render a horizontal rule between content sections, with color and spacing. - [Elemental group element](https://www.courier.com/docs/design/elemental/elements/group.md): Wrap several elements so one if or loop condition applies to all of them. - [Elemental columns element](https://www.courier.com/docs/design/elemental/elements/columns.md): Lay out content side by side in columns with their own width and styling. - [Elemental list element](https://www.courier.com/docs/design/elemental/elements/list.md): Render ordered or unordered lists, nested up to five levels, from your data. - [Elemental quote element](https://www.courier.com/docs/design/elemental/elements/quote.md): Render a quote block for testimonials or callouts, with border, color, and text styles. - [Elemental comment element](https://www.courier.com/docs/design/elemental/elements/comment.md): Add notes to a template that never render in the output, for documenting the document. - [Elemental HTML element](https://www.courier.com/docs/design/elemental/elements/html.md): Embed raw HTML when no other element produces the structure you need. - [Elemental Jsonnet element](https://www.courier.com/docs/design/elemental/elements/jsonnet.md): Generate Elemental content at render time with a Jsonnet template. - [Elemental control flow](https://www.courier.com/docs/design/elemental/control-flow.md): Use if, loop, ref, and channels on any element to show, repeat, reuse, or target content. - [Template translations](https://www.courier.com/docs/design/elemental/locales.md): Localize a template by syncing translations from your translation tool over the API, or with AI in Design Studio. Each recipient gets their language. - [Email template fonts](https://www.courier.com/docs/design/elemental/fonts.md): Set an email font in Design Studio or with font_family, and see how clients load it. - [Courier Create](https://www.courier.com/docs/design/embedded-designer/overview.md): Embed the template and brand editors in your React app so customers design their own messages. - [Courier Create template editor](https://www.courier.com/docs/design/embedded-designer/template-editor.md): Mount TemplateEditor, scope its token, restrict channels, theme it, and publish from your button. - [Courier Create brand editor](https://www.courier.com/docs/design/embedded-designer/brand-editor.md): Let a tenant edit its logo, colors, and email footer with BrandEditor and BrandProvider. - [Tenant Templates API](https://www.courier.com/docs/design/embedded-designer/api.md): Read, write, publish, and version a tenant's templates with the endpoints Courier Create uses. - [Users and profiles](https://www.courier.com/docs/recipients/overview.md): Store a user's email, phone, tokens, and chat IDs once, then send by user_id. - [Lists and audiences](https://www.courier.com/docs/recipients/lists-and-audiences/overview.md): Address a group instead of naming each person: curated lists or rule-based audiences. - [Lists](https://www.courier.com/docs/recipients/lists-and-audiences/lists.md): Curated groups of users, addressed with list_id, including list ID patterns and wildcards. - [Audiences](https://www.courier.com/docs/recipients/lists-and-audiences/audiences.md): Rule-based groups that update as profiles change, addressed with audience_id. - [Notification preferences](https://www.courier.com/docs/recipients/preferences/overview.md): How Courier decides at send time whether a user gets a message, and on which channels. - [Subscription topics and sections](https://www.courier.com/docs/recipients/preferences/model.md): Topics, sections, default states, and custom routing, and the API that reads and writes them. - [Preferences Editor](https://www.courier.com/docs/recipients/preferences/preferences-editor.md): Build the preference center: page settings, sections, topics, digests, and publishing. - [Manage user preferences with the API](https://www.courier.com/docs/recipients/preferences/api.md): Read and update a user's topic preferences and channel routing, per user or per tenant, and track changes. - [Tenants](https://www.courier.com/docs/tenants/overview.md): Model each customer organization with its own brand, defaults, templates, and properties. - [Tenant context](https://www.courier.com/docs/tenants/context.md): How a tenant's brand, preferences, templates, and properties apply when a send names it. - [Send with a tenant](https://www.courier.com/docs/tenants/send.md): Send to a user or a whole tenant with tenant_id, and handle users in several tenants. - [Tenant templates](https://www.courier.com/docs/tenants/templates.md): Give one customer its own version of a template without changing how you send. - [Tenant default preferences](https://www.courier.com/docs/tenants/preferences.md): Set default topic statuses per tenant that apply before a user makes their own choice. - [Monitoring your messages](https://www.courier.com/docs/monitor/overview.md): Look up any message, see how templates and journeys perform, track opens and clicks, and send delivery events to your own systems. - [Message and journey logs](https://www.courier.com/docs/monitor/logs.md): Every message and journey run in one place: status, timeline, content sent, and why it failed. - [Template, journey, and broadcast analytics](https://www.courier.com/docs/monitor/analytics.md): See how many messages were sent, delivered, opened, and clicked for each template, journey, and broadcast, and how those rates change over time. - [Metrics API](https://www.courier.com/docs/monitor/template-metrics.md): Get a template's delivery funnel as a time series, by provider and channel, over the REST API. - [Open and click tracking](https://www.courier.com/docs/monitor/tracking.md): How Courier records opens and clicks on each channel, and how to control and brand tracked links. - [Outbound webhooks](https://www.courier.com/docs/monitor/webhooks/outbound.md): Get a signed POST at your endpoint every time a message changes status, a user changes a preference, or a template or audience changes. - [Inbound webhooks](https://www.courier.com/docs/monitor/webhooks/inbound.md): Point an external system's webhooks at a Courier URL to update profiles and start journeys. - [Webhook event types](https://www.courier.com/docs/monitor/webhooks/events.md): Every event an outbound webhook sends, when it fires, and an example payload for each. - [Verify webhook signatures](https://www.courier.com/docs/monitor/webhooks/security.md): Check the courier-signature header on every outbound webhook before you trust the event. - [Observability](https://www.courier.com/docs/monitor/observability.md): Send Courier delivery metrics and logs to Datadog, New Relic, or any OpenTelemetry endpoint. - [Workspaces](https://www.courier.com/docs/workspaces/overview.md): A workspace is the top-level container for brands, providers, templates, API keys, and users, and when to run more than one. - [Environments and API keys](https://www.courier.com/docs/workspaces/environments.md): Production, Test, and custom environments with separate API keys, templates, and logs, and how to migrate templates between them. - [Team access, roles, and SSO](https://www.courier.com/docs/workspaces/team-access.md): Invite teammates, assign built-in or custom roles, and set up SSO and SCIM. - [Security: how Courier protects your data](https://www.courier.com/docs/workspaces/security.md): How Courier protects your notification data, and the controls you use to secure your workspace: SSO, roles, audit trail, API keys, and signed webhooks. - [Compliance: SOC 2, HIPAA, GDPR, and data requests](https://www.courier.com/docs/workspaces/compliance.md): Courier's SOC 2 Type II, HIPAA, PCI DSS, GDPR, and CCPA programs, where to get the reports, and how to answer data access and deletion requests. - [Regional datacenters: US and EU](https://www.courier.com/docs/workspaces/datacenters.md): Courier runs separate US and EU datacenters. Send EU users' notifications through the EU datacenter to keep their data in Europe for data residency. - [Audit trail](https://www.courier.com/docs/workspaces/audit-trail.md): A log of API key rotations, role changes, publishes, and integration edits, with who and when. - [Billing: sends, AI credits, and device previews](https://www.courier.com/docs/workspaces/billing.md): What Courier bills for: message sends, AI credits, and the Device Preview add-on. Plan pricing, how each one is counted, and common billing questions. - [Postman collection](https://www.courier.com/docs/resources/postman.md): Try every Courier endpoint in Postman with the official collection. - [Glossary](https://www.courier.com/docs/resources/glossary.md): Courier terms and every generated ID prefix, defined in plain language. - [Support and status](https://www.courier.com/docs/resources/help.md): How to reach support, check status, read the changelog, and find security reports. - [Guides](https://www.courier.com/docs/guides/overview.md): Step-by-step walkthroughs that end with a working send, inbox, journey, or migration. - [Send your first email](https://www.courier.com/docs/guides/send-your-first-email.md): Connect an email provider and your own domain, then send a real email and verify it. - [Send your first in-app message](https://www.courier.com/docs/guides/send-your-first-in-app-message.md): Add the Courier Inbox to your app, then send a message to the inbox channel. - [Set up mobile push](https://www.courier.com/docs/guides/set-up-mobile-push.md): Connect FCM and APNs, sync device tokens with the mobile SDK, and send a test push. - [Send your first SMS](https://www.courier.com/docs/guides/send-your-first-sms.md): Connect an SMS provider, store a phone number on the profile, and send a text. - [Send your first Slack message](https://www.courier.com/docs/guides/send-your-first-slack-message.md): Create a Slack app, store its token on the recipient's profile, and send a direct message. - [Personalize a message](https://www.courier.com/docs/guides/personalize-a-message.md): Fill one template with each recipient's data using variables, and handle missing values. - [Create your first journey](https://www.courier.com/docs/guides/create-your-first-journey.md): Build a one-node journey, invoke it from your code, and read the run. - [Build an onboarding sequence](https://www.courier.com/docs/guides/build-an-onboarding-sequence.md): Welcome new users over a week with delays and a branch that skips those who activated. - [Send a daily digest](https://www.courier.com/docs/guides/send-a-daily-digest.md): Collapse many notifications into one scheduled message with a topic digest. - [Send from an AI agent](https://www.courier.com/docs/guides/send-from-an-ai-agent.md): Let an AI agent send notifications through the Courier MCP server with a scoped API key. - [Send to a list or audience](https://www.courier.com/docs/guides/announce-to-a-list.md): Send one announcement to a saved list or audience and confirm every member got it. - [Notify everyone watching](https://www.courier.com/docs/guides/notify-everyone-watching.md): Model watchers of a document or ticket as a list per entity, then notify them in one send. - [Send in bulk](https://www.courier.com/docs/guides/send-in-bulk.md): Send to thousands of recipients you supply with a bulk job you can review before it runs. - [Import your users](https://www.courier.com/docs/guides/import-your-users.md): Create or update profiles one at a time or from a CSV, and delete them. - [Send a welcome email from Clerk](https://www.courier.com/docs/guides/notify-from-clerk.md): Turn Clerk's user.created webhook into a Courier profile and a welcome email. - [Send a welcome email from Supabase](https://www.courier.com/docs/guides/notify-from-supabase.md): Turn a Supabase Database Webhook on a new row into a welcome email, with a shared secret. - [Send a welcome message from Firebase Auth](https://www.courier.com/docs/guides/notify-from-firebase-auth.md): Send a welcome message from a Cloud Function on the Firebase user-created event. - [Send a push from Firestore](https://www.courier.com/docs/guides/notify-from-firestore.md): Turn a Firestore document write into a push that falls back to email. - [Send a dunning email from Stripe](https://www.courier.com/docs/guides/notify-from-stripe.md): Turn Stripe's invoice.payment_failed webhook into an email that gets the card updated. - [Send a welcome email from Auth0](https://www.courier.com/docs/guides/notify-from-auth0.md): Call Courier from an Auth0 post-registration Action, with no webhook route to host. - [Start a journey from Segment](https://www.courier.com/docs/guides/notify-from-segment.md): Turn Segment track events into Courier journeys without writing send code. - [Build a preference center](https://www.courier.com/docs/guides/build-a-preference-center.md): Let users choose their topics and channels with the hosted page or the embedded component. - [Notify across tenants](https://www.courier.com/docs/guides/notify-across-tenants.md): Send from one workspace to many customer organizations, each with its own brand and defaults. - [Let customers edit their notifications](https://www.courier.com/docs/guides/let-customers-edit-notifications.md): Embed Courier Create so each customer edits its own emails while your send stays the same. - [Go live](https://www.courier.com/docs/guides/go-live.md): Validate a notification change in Test, then promote it to Production. - [Send from your own domain](https://www.courier.com/docs/guides/send-from-your-domain.md): Set the default from address, then override it for one template or one send. - [Track delivery with webhooks](https://www.courier.com/docs/guides/track-delivery.md): Receive every delivery event in your own system through an outbound webhook. - [Debug email delivery](https://www.courier.com/docs/guides/debug-delivery.md): Trace an email that never arrived from Courier logs to the provider to the inbox. - [Migrate to Courier](https://www.courier.com/docs/guides/migrate/overview.md): Map your concepts to Courier's, move recipients and content, then cut over sends. - [Migrate from an in-house system](https://www.courier.com/docs/guides/migrate/from-in-house.md): Replace homegrown notification code with Courier one notification type at a time. - [Migrate from Knock](https://www.courier.com/docs/guides/migrate/from-knock.md): Map Knock workflows, channels, and recipients to Courier, with an API mapping and a plan. - [Migrate from SuprSend](https://www.courier.com/docs/guides/migrate/from-suprsend.md): Map SuprSend workflows, templates, and subscribers to Courier, with an API mapping and a plan. - [Migrate from Novu](https://www.courier.com/docs/guides/migrate/from-novu.md): Map Novu workflows, steps, and subscribers to Courier, with an API mapping and a plan. - [Migrate from OneSignal](https://www.courier.com/docs/guides/migrate/from-onesignal.md): Map OneSignal messages, segments, and players to Courier, with an API mapping and a plan. - [Migrate from Braze](https://www.courier.com/docs/guides/migrate/from-braze.md): Move transactional flows from Braze canvases and campaigns to Courier journeys and templates. - [Migrate from Salesforce Marketing Cloud](https://www.courier.com/docs/guides/migrate/from-salesforce-marketing-cloud.md): Map SFMC journeys, data extensions, and sends to Courier, with a phased plan. - [Migrate from Intercom](https://www.courier.com/docs/guides/migrate/from-intercom.md): Map Intercom series, messages, and contacts to Courier, and keep the help desk in place. - [Courier React v8 migration guide](https://www.courier.com/docs/sdk-libraries/courier-react-v8-migration-guide.md): Move from @trycourier/react-inbox and react-provider to courier-react v8 and up. - [Integrations](https://www.courier.com/docs/integrations/overview.md): Connect your email, SMS, push, chat, CDP, and observability providers to Courier. - [Email providers](https://www.courier.com/docs/integrations/email/overview.md): Every email provider Courier supports, what a send needs on the profile, and channel overrides. - [Send email with Amply through Courier](https://www.courier.com/docs/integrations/email/amply.md): Connect Amply with an API key and from address, then override sender and attachments per send. - [Send email with Amazon SES through Courier](https://www.courier.com/docs/integrations/email/aws-ses.md): Connect SES with access keys or an IAM role, track delivery through SNS, and override fields. - [Send email with Gmail through Courier](https://www.courier.com/docs/integrations/email/gmail.md): Connect a Gmail account over OAuth, and fix the invalid_grant error when the token expires. - [Send email with MailerSend through Courier](https://www.courier.com/docs/integrations/email/mailersend.md): Connect MailerSend with an API token and from address, then override fields per send. - [Send email with Mailgun through Courier](https://www.courier.com/docs/integrations/email/mailgun.md): Connect Mailgun with an API key and domain, track delivery with webhooks, and override fields. - [Send email with Mailjet through Courier](https://www.courier.com/docs/integrations/email/mailjet.md): Connect Mailjet with an API key and secret, then override attachments and API fields per send. - [Send email with Mandrill through Courier](https://www.courier.com/docs/integrations/email/mandrill.md): Connect Mandrill with an API key, import Mandrill templates, and override fields per send. - [Send email with OneSignal through Courier](https://www.courier.com/docs/integrations/email/onesignal-email.md): Connect OneSignal email with an App ID and REST API key, then override fields per send. - [Send email with Postmark through Courier](https://www.courier.com/docs/integrations/email/postmark.md): Connect Postmark with a server token, then override MessageStream, attachments, and templates. - [Send email with Resend through Courier](https://www.courier.com/docs/integrations/email/resend.md): Connect Resend with an API key and from address, then override sender fields per send. - [Send email with SendGrid through Courier](https://www.courier.com/docs/integrations/email/sendgrid.md): Connect SendGrid with a Mail Send API key, track delivery with the event webhook, override fields. - [Send email with SMTP through Courier](https://www.courier.com/docs/integrations/email/smtp.md): Connect any SMTP server with host, port, and credentials, then override transport fields per send. - [Send email with SparkPost through Courier](https://www.courier.com/docs/integrations/email/sparkpost.md): Connect SparkPost with an API key and from address, then override transmission fields per send. - [SMS providers](https://www.courier.com/docs/integrations/sms/overview.md): Every SMS provider Courier supports, the phone_number profile field, and per-send overrides. - [Send SMS with Africa's Talking through Courier](https://www.courier.com/docs/integrations/sms/africas-talking.md): Connect Africa's Talking with a username and API key, then override the sender ID per send. - [Send SMS with Amazon SNS for SMS through Courier](https://www.courier.com/docs/integrations/sms/aws-sns.md): Connect Amazon SNS for SMS with IAM credentials, then override message attributes per send. - [Send SMS with Azure Communication Services](https://www.courier.com/docs/integrations/sms/azure-sms.md): Connect Azure Communication Services with a connection string and from number. - [Send SMS with Bird through Courier](https://www.courier.com/docs/integrations/sms/bird.md): Connect Bird with an access key and originator, then override either per send. - [Send SMS with Plivo through Courier](https://www.courier.com/docs/integrations/sms/plivo.md): Connect Plivo with an Auth ID, Auth Token, and from number. Delivery status is polled. - [Send SMS with Sinch through Courier](https://www.courier.com/docs/integrations/sms/sinch.md): Connect Sinch with a service plan ID and API token, then override credentials or body per send. - [Send SMS with Sinch Engage through Courier](https://www.courier.com/docs/integrations/sms/sinch-engage.md): Connect Sinch Engage (formerly MessageMedia) with an API key and secret, and receive delivery status by webhook. - [Send SMS with SMSCentral through Courier](https://www.courier.com/docs/integrations/sms/smscentral.md): Connect SMSCentral with a username and password, then override body and config fields per send. - [Send SMS with Telnyx through Courier](https://www.courier.com/docs/integrations/sms/telnyx.md): Connect Telnyx with an API key and messaging profile, then override body and headers per send. - [Send SMS with TextUs through Courier](https://www.courier.com/docs/integrations/sms/textus.md): Connect TextUs with an auth token and from number, then send to the profile's phone_number. - [Send SMS with Twilio through Courier](https://www.courier.com/docs/integrations/sms/twilio.md): Connect Twilio with an Account SID, Auth Token, and Messaging Service SID or from number. - [Send SMS with Vonage through Courier](https://www.courier.com/docs/integrations/sms/vonage.md): Connect Vonage with an API key, secret, and from number, then override fields per send. - [Push providers](https://www.courier.com/docs/integrations/push/overview.md): Every push provider Courier supports, how device tokens are stored, and payload overrides. - [Send push with Airship through Courier](https://www.courier.com/docs/integrations/push/airship.md): Connect Airship with an app key and secret, and target audience and device_types from the profile. - [Send push with Amazon SNS for push through Courier](https://www.courier.com/docs/integrations/push/aws-sns.md): Connect Amazon SNS for push with IAM credentials and target a topic or endpoint ARN. - [Send iOS push with APNs through Courier](https://www.courier.com/docs/integrations/push/apple-push-notification.md): Connect APNs with a .p8 key, team ID, and bundle ID, and sync device tokens with the iOS SDK. - [Send push with Beamer through Courier](https://www.courier.com/docs/integrations/push/beamer.md): Connect Beamer with an API key, set its profile field, and override fields per send. - [Send push with Expo through Courier](https://www.courier.com/docs/integrations/push/expo.md): Connect Expo and store each recipient's Expo push tokens on the profile. - [Send push with Firebase Cloud Messaging through Courier](https://www.courier.com/docs/integrations/push/firebase-fcm.md): Connect FCM with a service account and sync device tokens with the Android, iOS, or Flutter SDK. - [Send push with MagicBell through Courier](https://www.courier.com/docs/integrations/push/magicbell.md): Connect MagicBell with an API key and secret, and target a recipient by email or external ID. - [Send push with NowPush through Courier](https://www.courier.com/docs/integrations/push/nowpush.md): Connect NowPush with an API key. A send addresses the account, so no profile field is needed. - [Send push with OneSignal through Courier](https://www.courier.com/docs/integrations/push/onesignal-push.md): Connect OneSignal with an App ID and REST API key, and target a Player ID or External User ID. - [Send push with Pushbullet through Courier](https://www.courier.com/docs/integrations/push/pushbullet.md): Connect Pushbullet with an access token. No profile field is needed. - [Send push with Pusher Beams through Courier](https://www.courier.com/docs/integrations/push/pusher-beams.md): Connect Pusher Beams with an instance ID and secret key, and target users or interests. - [Send push with Pusher through Courier](https://www.courier.com/docs/integrations/push/pusher.md): Connect Pusher Channels with an app ID, key, secret, and cluster, and publish to a channel. - [In-app channel](https://www.courier.com/docs/integrations/in-app.md): The inbox and toasts need no provider. Push goes through APNs and FCM. - [Chat providers](https://www.courier.com/docs/integrations/direct-message/overview.md): Slack, Microsoft Teams, WhatsApp, Discord, and other chat providers, with their profile fields. - [Send Chat API messages through Courier](https://www.courier.com/docs/integrations/direct-message/chat.md): Connect the Chat API and address a recipient by phone number or chat ID on the profile. - [Send Discord messages through Courier](https://www.courier.com/docs/integrations/direct-message/discord.md): Connect a Discord bot and send to users or channels by ID, with embed overrides. - [Send Facebook Messenger messages through Courier](https://www.courier.com/docs/integrations/direct-message/facebook-messenger.md): Connect a Facebook Page and address a recipient by facebookPSID on the profile. - [Send Microsoft Teams messages through Courier](https://www.courier.com/docs/integrations/direct-message/microsoft-teams.md): Connect a Teams bot, send to users and channels, reply in threads, and send Adaptive Cards. - [Send Slack messages through Courier](https://www.courier.com/docs/integrations/direct-message/slack.md): Connect a Slack app with a bot token and target users by email or ID, or channels, with Block Kit. - [Send Stream Chat messages through Courier](https://www.courier.com/docs/integrations/direct-message/stream-chat.md): Connect Stream Chat with an API key and secret, and target a channel from the profile. - [Send Viber messages through Courier](https://www.courier.com/docs/integrations/direct-message/viber.md): Connect a Viber bot with an auth token and address a recipient with viber.receiver. - [Send WhatsApp messages through Courier](https://www.courier.com/docs/integrations/direct-message/whatsapp.md): Send WhatsApp messages through Twilio with a pre-approved template. - [Customer data platforms](https://www.courier.com/docs/integrations/cdp/overview.md): Sync profiles and trigger journeys from Segment or RudderStack events. - [Sync events between Segment and Courier](https://www.courier.com/docs/integrations/cdp/segment.md): Send Segment identify and track events into Courier, and stream message events back. - [Sync events between RudderStack and Courier](https://www.courier.com/docs/integrations/cdp/rudderstack.md): Route RudderStack events into Courier journeys, and stream message events back. - [Observability integrations](https://www.courier.com/docs/integrations/observability/overview.md): Send Courier delivery metrics and logs to Datadog, New Relic, or any OpenTelemetry endpoint. - [Forward Courier events to Datadog](https://www.courier.com/docs/integrations/observability/datadog.md): Forward delivery metrics and message logs to Datadog with an API key and site. - [Forward Courier events to New Relic](https://www.courier.com/docs/integrations/observability/new-relic.md): Forward delivery metrics and message logs to New Relic with your license key. - [Forward Courier events to OpenTelemetry](https://www.courier.com/docs/integrations/observability/open-telemetry.md): Export delivery metrics and logs to any OpenTelemetry endpoint. - [Other providers](https://www.courier.com/docs/integrations/other/overview.md): Alerting, support, and webhook destinations: PagerDuty, Opsgenie, Splunk On-Call, Drift, Intercom. - [Build a custom provider for Courier](https://www.courier.com/docs/integrations/other/custom-provider.md): Route messages to your own webhook so an in-house channel works like any provider. - [Send Drift messages through Courier](https://www.courier.com/docs/integrations/other/drift.md): Connect Drift with an OAuth token and start a conversation by the recipient's email. - [Send Intercom messages through Courier](https://www.courier.com/docs/integrations/other/intercom.md): Connect Intercom with an access token and send in-app messages by Intercom user ID. - [Trigger Opsgenie alerts from Courier](https://www.courier.com/docs/integrations/other/ops-genie.md): Connect Opsgenie with an API key and create alerts from a template. No profile data needed. - [Trigger PagerDuty incidents from Courier](https://www.courier.com/docs/integrations/other/pagerduty.md): Connect PagerDuty with an Events API v2 key and trigger incidents from a template. - [Trigger Splunk On-Call alerts from Courier](https://www.courier.com/docs/integrations/other/splunk-on-call.md): Connect Splunk On-Call with a REST endpoint key and route alerts by target type and slug. - [Deliver Courier messages to your own webhook](https://www.courier.com/docs/integrations/other/webhook-integration.md): Deliver messages as HTTP requests to a static URL or one from the profile. - [In-app notifications](https://www.courier.com/docs/in-app/overview.md): The Courier Inbox, toasts, and preferences UI on every client SDK, plus mobile push. - [Authenticate users with a JWT](https://www.courier.com/docs/in-app/authenticate-users.md): Mint a scoped JWT on your backend and sign the user in to any Courier client SDK. - [Add an inbox to React](https://www.courier.com/docs/guides/add-an-inbox-to-react.md): A token route and a component: the two files that put a Courier Inbox in a React app. - [Add an inbox to Next.js](https://www.courier.com/docs/guides/add-an-inbox-to-nextjs.md): A route handler and a client component: the two files that put a Courier Inbox in Next.js. - [Add an inbox to Astro](https://www.courier.com/docs/guides/add-an-inbox-to-astro.md): An endpoint and a React island: the two files that put a Courier Inbox in an Astro app. - [Add the Courier Inbox](https://www.courier.com/docs/in-app/add-an-inbox.md): Install the SDK, sign the user in, and render the inbox component on any platform. - [Send to the inbox](https://www.courier.com/docs/in-app/send-to-the-inbox.md): Route a message to the inbox channel, tag it for a tab, and scope it to a tenant. - [Inbox runtime behavior](https://www.courier.com/docs/in-app/how-the-inbox-behaves.md): Real-time updates, message retention, and expiry once a user is signed in. - [Customize the inbox](https://www.courier.com/docs/in-app/customize-the-inbox.md): Theme the inbox, handle clicks and actions, or replace parts of the UI. - [Inbox tabs and feeds](https://www.courier.com/docs/in-app/tabs-and-feeds.md): Filter the inbox into tabs by tag, read state, archive state, or date, and group them into feeds. - [Build a custom inbox](https://www.courier.com/docs/in-app/build-a-custom-inbox.md): Swap parts of the inbox for your own renderers, or build the whole UI on the SDK's data layer. - [Add toasts](https://www.courier.com/docs/in-app/add-toasts.md): Render toast popups for new inbox messages and handle clicks on the web SDKs. - [Customize toasts](https://www.courier.com/docs/in-app/customize-toasts.md): Theme toasts or replace the toast item with your own component. - [Add a preference center](https://www.courier.com/docs/in-app/add-a-preference-center.md): Embed the Courier Preferences component so users pick their topics and channels. - [Customize the preference center](https://www.courier.com/docs/in-app/customize-preferences.md): Theme the preferences component or build your own UI on the client methods behind it. - [Courier SDKs](https://www.courier.com/docs/sdk-libraries/sdks-overview.md): Server SDKs that wrap the REST API and client SDKs that render in-app UI, for every platform. - [Courier Node.js SDK](https://www.courier.com/docs/sdk-libraries/node.md): Typed access to the Courier API from TypeScript or JavaScript: install, authenticate, send. - [Courier Python SDK](https://www.courier.com/docs/sdk-libraries/python.md): Typed access to the Courier API from Python with sync and async clients. - [Courier Ruby SDK](https://www.courier.com/docs/sdk-libraries/ruby.md): Typed access to the Courier API from Ruby 3.2+, with Sorbet definitions. - [Courier Go SDK](https://www.courier.com/docs/sdk-libraries/go.md): Typed access to the Courier API from Go with request structs. - [Courier Java SDK](https://www.courier.com/docs/sdk-libraries/java.md): Typed access to the Courier API from Java 8+ with builder-pattern requests. - [Courier PHP SDK](https://www.courier.com/docs/sdk-libraries/php.md): Typed access to the Courier API from PHP 8.1+ with named parameters. - [Courier C# SDK](https://www.courier.com/docs/sdk-libraries/csharp.md): Typed access to the Courier API from C# with async methods throughout. - [Courier React SDK](https://www.courier.com/docs/sdk-libraries/courier-react-web.md): Inbox, toast, and preferences components for React, plus the useCourier hook. - [Courier Vue SDK](https://www.courier.com/docs/sdk-libraries/courier-vue-web.md): Inbox, toast, and preferences components for Vue, plus the useCourier composable. - [Courier Angular SDK](https://www.courier.com/docs/sdk-libraries/courier-angular-web.md): Inbox, toast, and preferences components for Angular, plus the CourierService. - [Courier Web Components SDK](https://www.courier.com/docs/sdk-libraries/courier-web-components.md): Inbox, toast, and preferences as custom elements for any web app, with or without a framework. - [Courier JS SDK](https://www.courier.com/docs/sdk-libraries/courier-js-web.md): Read and update inbox and preferences data in the browser without UI components. - [Courier React Native SDK](https://www.courier.com/docs/sdk-libraries/react-native.md): Prebuilt inbox and preferences UI, push token sync, and TypeScript APIs for React Native. - [Courier iOS SDK](https://www.courier.com/docs/sdk-libraries/ios.md): Prebuilt inbox and preferences UI, push token sync, and Swift APIs for UIKit and SwiftUI. - [Courier Android SDK](https://www.courier.com/docs/sdk-libraries/android.md): Prebuilt inbox and preferences UI, push token sync, and Kotlin APIs for Android. - [Courier Flutter SDK](https://www.courier.com/docs/sdk-libraries/flutter.md): Prebuilt inbox and preferences widgets, push token sync, and Dart APIs for Flutter. - [Courier API reference](https://www.courier.com/docs/reference/api-overview.md): Authentication, request format, payload limits, idempotency, and pagination for the REST API. - [Send a message](https://www.courier.com/docs/api-reference/send/send-a-message.md): Sends a message to one or more recipients and returns a requestId. Courier routes it to email, SMS, push, chat, or in-app based on your rules. Use the returned requestId to look up delivery status via the Messages API. - [List Notification Templates](https://www.courier.com/docs/api-reference/templates/list-notification-templates.md): Lists the workspace's notification templates. Each carries a name, tags, brand, routing, and its draft or published state. - [Create Notification Template](https://www.courier.com/docs/api-reference/templates/create-notification-template.md): Create a notification template. Requires all fields in the notification object. Templates are created in draft state by default. - [Get Notification Template](https://www.courier.com/docs/api-reference/templates/get-notification-template.md): Retrieve a notification template by ID. Returns the published version by default. Pass version=draft to retrieve an unpublished template. - [Replace Notification Template](https://www.courier.com/docs/api-reference/templates/replace-notification-template.md): Replaces a notification template in full, so send every field rather than only the ones you want changed. Publish separately to make it live. - [Archive Notification Template](https://www.courier.com/docs/api-reference/templates/archive-notification-template.md): Archives a notification template, preventing new sends from referencing it. The template stays retrievable for its version history. - [List Notification Template Versions](https://www.courier.com/docs/api-reference/templates/list-notification-template-versions.md): Returns a notification template's published versions, most recent first, for comparison or rollback. Paged. - [Publish Notification Template](https://www.courier.com/docs/api-reference/templates/publish-notification-template.md): Publish a notification template. Publishes the current draft by default. Pass a version in the request body to publish a specific historical version. - [Get Notification Content](https://www.courier.com/docs/api-reference/templates/get-notification-content.md): Returns a template's content and checksum. V2 templates return Elemental elements, while V1 templates return blocks and channels instead. - [Replace Notification Content](https://www.courier.com/docs/api-reference/templates/replace-notification-content.md): Replaces all Elemental content in a template, overwriting every existing element. Supported for V2 templates only, not V1 blocks and channels. - [Replace Notification Element](https://www.courier.com/docs/api-reference/templates/replace-notification-element.md): Replaces one Elemental element in a template, addressed by its element id. Supported for V2 templates only, not V1 blocks and channels. - [Replace Notification Locale](https://www.courier.com/docs/api-reference/templates/replace-notification-locale.md): Sets locale-specific content overrides for a template. Each override must reference an element that already exists in the default content. - [Get submission checks](https://www.courier.com/docs/api-reference/templates/get-submission-checks.md): Returns the approval checks recorded for a template submission, each with its pass or fail result. - [Replace submission checks](https://www.courier.com/docs/api-reference/templates/replace-submission-checks.md): Replaces the approval checks on a template submission with the complete set supplied in the request body. - [Cancel submission](https://www.courier.com/docs/api-reference/templates/cancel-submission.md): Cancels a pending template submission, withdrawing it from the approval workflow. The template stays in draft and can be resubmitted later. - [Get Notification Template Metrics](https://www.courier.com/docs/api-reference/templates/get-notification-template-metrics.md): Fetch the delivery funnel for one Notification Template as a time series — sent, delivered, opened, clicked, errors, and undeliverable — broken out per provider and channel inside each bucket. Sum the entries in a bucket for its totals; there is no bucket-level total. - [List Brands](https://www.courier.com/docs/api-reference/brands/list-brands.md): Lists the workspace's brands. Every entry carries its name, styling settings, snippets, and published version. - [Create a new Brand](https://www.courier.com/docs/api-reference/brands/create-a-new-brand.md): Creates a brand from a name and settings, including primary and secondary colors. Brands supply the logo, colors, and styling that templates render with. - [Get a Brand](https://www.courier.com/docs/api-reference/brands/get-a-brand.md): Returns one brand by id, including its colors, logo and styling settings, Handlebars snippets, and published version. - [Replace a Brand](https://www.courier.com/docs/api-reference/brands/replace-a-brand.md): Replaces a brand with the values you supply, so send the complete settings and snippets rather than only the fields you want changed. - [Delete a Brand](https://www.courier.com/docs/api-reference/brands/delete-a-brand.md): Deletes a brand by id. Reassign any template or tenant that references it before deleting to keep their styling intact. - [List Routing Strategies](https://www.courier.com/docs/api-reference/routing-strategies/list-routing-strategies.md): List routing strategies in your workspace. Returns metadata only (no routing/channels/providers content). Use GET /routing-strategies/{id} for full details. - [Create Routing Strategy](https://www.courier.com/docs/api-reference/routing-strategies/create-routing-strategy.md): Create a routing strategy. Requires a name and routing configuration at minimum. Channels and providers default to empty if omitted. - [Get Routing Strategy](https://www.courier.com/docs/api-reference/routing-strategies/get-routing-strategy.md): Returns one routing strategy by id with its name, tags, channels, and the routing rules that decide provider order and fallback. - [Replace Routing Strategy](https://www.courier.com/docs/api-reference/routing-strategies/replace-routing-strategy.md): Replace a routing strategy. Full document replacement; the caller must send the complete desired state. Missing optional fields are cleared. - [Archive Routing Strategy](https://www.courier.com/docs/api-reference/routing-strategies/archive-routing-strategy.md): Archive a routing strategy. The strategy must not have associated notification templates. Unlink all templates before archiving. - [List notifications for a Routing Strategy](https://www.courier.com/docs/api-reference/routing-strategies/list-notifications-for-a-routing-strategy.md): Returns the notification templates using a routing strategy, with paging. Check this before changing a strategy that templates depend on. - [List Journeys](https://www.courier.com/docs/api-reference/journeys/list-journeys.md): Lists the workspace's journeys, each carrying a name, state, and enabled flag. Paged by cursor. - [Create a Journey](https://www.courier.com/docs/api-reference/journeys/create-a-journey.md): Creates a journey from a set of nodes, in draft state unless you pass a published state. Send nodes cannot be included until their templates exist. - [Cancel Journey runs](https://www.courier.com/docs/api-reference/journeys/cancel-journey-runs.md): Cancels in-flight journey runs, either every run sharing a cancelation token or one run by id. Use it to stop a sequence when the event resolves. - [List Journey runs](https://www.courier.com/docs/api-reference/journeys/list-journey-runs.md): List runs of the workspace's Journeys, newest first, filtered by status, Journey, or date range and paged by cursor. Runs of v2 Automations are listed by `GET /automations/runs` instead — the two surfaces never return each other's runs. Runs are retained for 95 days. - [Fetch a Journey run](https://www.courier.com/docs/api-reference/journeys/fetch-a-journey-run.md): Fetch one Journey run by id. Returns `404` for an unknown run, a run belonging to another workspace, a run past the 95-day retention window, or an Automation run id — the same body in every case, so the response never reveals whether a run exists elsewhere. - [List steps for a Journey run](https://www.courier.com/docs/api-reference/journeys/list-steps-for-a-journey-run.md): List the per-node state of one Journey run, in full — this endpoint is not paginated. Each step's `node_id` is the id of the node in the published Journey, so a step maps directly onto the Journey graph. `message_id` is present on send steps that produced a message; follow it to `GET /messages/{mess… - [Invoke a Journey](https://www.courier.com/docs/api-reference/journeys/invoke-a-journey.md): Starts a journey run for one user and returns a runId. Runs execute asynchronously, so the response arrives before any message is sent. - [Fetch a Journey by id](https://www.courier.com/docs/api-reference/journeys/fetch-a-journey-by-id.md): Fetch a journey by id. Pass `?version=draft` (default `published`) to retrieve the working draft, or `?version=vN` to retrieve a historical version. - [Replace a Journey](https://www.courier.com/docs/api-reference/journeys/replace-a-journey.md): Replaces a journey's working draft, leaving the published version live until you publish. Reach for this when editing a journey already running. - [Archive a Journey](https://www.courier.com/docs/api-reference/journeys/archive-a-journey.md): Archives a journey so it can no longer be invoked. Runs already in flight continue to completion, so archiving never strands a user mid-sequence. - [List versions of a Journey](https://www.courier.com/docs/api-reference/journeys/list-versions-of-a-journey.md): Lists a journey's published versions, most recent first, so you have a version id to roll back to. Paged by cursor. - [Publish a Journey](https://www.courier.com/docs/api-reference/journeys/publish-a-journey.md): Publishes a journey's current draft as a new version, making it live for new runs. Pass a version instead to roll back to an earlier one. - [List Notification Templates scoped to a Journey](https://www.courier.com/docs/api-reference/journeys/list-notification-templates-scoped-to-a-journey.md): List notification templates scoped to this journey. Journey-scoped notification templates can only be referenced from `send` nodes within the same journey. - [Create a Notification Template scoped to a Journey](https://www.courier.com/docs/api-reference/journeys/create-a-notification-template-scoped-to-a-journey.md): Create a notification template scoped to this journey. Defaults to `DRAFT` state; pass `state: "PUBLISHED"` to publish on create. - [Fetch a Journey-scoped Notification Template by id](https://www.courier.com/docs/api-reference/journeys/fetch-a-journey-scoped-notification-template-by-id.md): Returns a journey's own notification template with its name, brand, subscription topic, and content. Defaults to the published version. - [Replace a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/replace-a-journey-scoped-notification-template.md): Replaces the draft content of one journey's notification template. Publish it before send nodes referencing it render the change. - [Archive a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/archive-a-journey-scoped-notification-template.md): Archives one journey's notification template, preventing further sends. Detach any send node referencing it beforehand. - [Publish a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/publish-a-journey-scoped-notification-template.md): Publishes a journey-scoped template's draft as a new version. Pass a version instead to roll back the template to an earlier publish. - [List versions of a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/list-versions-of-a-journey-scoped-notification-template.md): Lists the published versions of a template that belongs to a journey, most recent first. Paged by cursor. - [Fetch the content of a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/fetch-the-content-of-a-journey-scoped-notification-template.md): Returns the Elemental elements and version of a journey-scoped template's content. Compare versions to see what changed between publishes. - [Replace the content of a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/replace-the-content-of-a-journey-scoped-notification-template.md): Replace the elemental content of a journey-scoped notification template. Overwrites all elements in the template draft with the provided content. - [Replace a locale of a Journey-scoped Notification Template](https://www.courier.com/docs/api-reference/journeys/replace-a-locale-of-a-journey-scoped-notification-template.md): Set locale-specific content overrides for a journey-scoped notification template. Each element override must reference an existing element by ID. - [List Broadcasts](https://www.courier.com/docs/api-reference/broadcasts/list-broadcasts.md): List broadcasts in your workspace. Cursor-paginated; returns broadcasts newest-first. - [Create Broadcast](https://www.courier.com/docs/api-reference/broadcasts/create-broadcast.md): Create a broadcast. Provisions a private notification template for the broadcast and returns the new broadcast in the draft state. Exactly one channel is required. - [Get Broadcast](https://www.courier.com/docs/api-reference/broadcasts/get-broadcast.md): Retrieve a broadcast by ID. Archived broadcasts return 404. - [Update Broadcast](https://www.courier.com/docs/api-reference/broadcasts/update-broadcast.md): Update a broadcast's name. Content is edited via the broadcast's notification template, not this endpoint. - [Archive Broadcast](https://www.courier.com/docs/api-reference/broadcasts/archive-broadcast.md): Archive a broadcast. This is a soft delete — the archived broadcast is returned and no longer appears in list results. - [Duplicate Broadcast](https://www.courier.com/docs/api-reference/broadcasts/duplicate-broadcast.md): Duplicate a broadcast (and its template) into a new draft named "{source name} (copy)". - [Send Broadcast](https://www.courier.com/docs/api-reference/broadcasts/send-broadcast.md): Send a broadcast immediately to a list or audience. Publishes the broadcast template first. Not allowed once the broadcast is sending or sent. - [Schedule Broadcast](https://www.courier.com/docs/api-reference/broadcasts/schedule-broadcast.md): Schedule a broadcast for a future send to a list or audience. Publishes the broadcast template first. Not allowed once the broadcast is sending or sent. For an immediate send use POST /broadcasts/{broadcastId}/send. - [Cancel Broadcast schedule](https://www.courier.com/docs/api-reference/broadcasts/cancel-broadcast-schedule.md): Cancel a broadcast's pending schedule, returning it to the draft state. Only valid for a scheduled broadcast. - [Get Broadcast content](https://www.courier.com/docs/api-reference/broadcasts/get-broadcast-content.md): Retrieve the broadcast's content — the elemental content of its private notification template. Defaults to the working draft, since broadcast content is authored as a draft until the broadcast is sent. - [Update Broadcast content](https://www.courier.com/docs/api-reference/broadcasts/update-broadcast-content.md): Author the broadcast's content by replacing the draft elemental content of its private notification template. The draft is published automatically when the broadcast is sent or scheduled. - [List Preview Devices](https://www.courier.com/docs/api-reference/previews/list-preview-devices.md): List the devices a preview can be rendered on. Reference data, identical for every workspace — these ids are what a device set is built from and what a run reports results for. - [List Device Sets](https://www.courier.com/docs/api-reference/previews/list-device-sets.md): List the workspace's preview sets. Archived sets are not returned. - [Create Device Set](https://www.courier.com/docs/api-reference/previews/create-device-set.md): Create a named, reusable set of preview devices. Every id must be one listed by `GET /previews/devices`; any other is a 422. - [Get Device Set](https://www.courier.com/docs/api-reference/previews/get-device-set.md): Retrieve a preview set by ID. Archived sets return 404. - [Update Device Set](https://www.courier.com/docs/api-reference/previews/update-device-set.md): Replace a device set. This is a full replace, not a patch — both the name and the device list are always written. The Courier-provided default set cannot be changed and returns 409. - [Archive Device Set](https://www.courier.com/docs/api-reference/previews/archive-device-set.md): Archive a device set. This is a soft delete — the archived set is returned and no longer appears in list results. Runs already created against it keep their own copy of the device list and are unaffected. The Courier-provided default set cannot be archived and returns 409. - [List Preview Runs](https://www.courier.com/docs/api-reference/previews/list-preview-runs.md): List this template's preview runs, newest first. Cursor-paginated. - [Create Preview Run](https://www.courier.com/docs/api-reference/previews/create-preview-run.md): Render this template's email content on each of the requested devices. - [Get Preview Run](https://www.courier.com/docs/api-reference/previews/get-preview-run.md): Retrieve one of this template's preview runs together with its per-device results. - [Get a Profile](https://www.courier.com/docs/api-reference/user-profiles/get-a-profile.md): Returns a user's stored profile and preferences, including the email address, phone number, and push tokens Courier can reach them on. - [Replace a Profile](https://www.courier.com/docs/api-reference/user-profiles/replace-a-profile.md): Overwrites a user profile in full, removing any key absent from the request body. Use the patch endpoint when changing a single field. - [Create a Profile](https://www.courier.com/docs/api-reference/user-profiles/create-a-profile.md): Merges the supplied values into a user's profile, creating it if absent and leaving any key you omit untouched. Prefer this for everyday writes. - [Delete a Profile](https://www.courier.com/docs/api-reference/user-profiles/delete-a-profile.md): Deletes a user's profile and stored contact details. List subscriptions and preferences are separate resources, so remove those too if required. - [Update a Profile](https://www.courier.com/docs/api-reference/user-profiles/update-a-profile.md): Applies a JSON Patch to a user profile, adding, removing, or replacing individual fields without sending the whole object. - [Get List subscriptions](https://www.courier.com/docs/api-reference/user-profiles/get-list-subscriptions.md): Returns the lists a user is subscribed to, with paging. Use it to check what a recipient will receive before sending to a list. - [Subscribe to one or more Lists](https://www.courier.com/docs/api-reference/user-profiles/subscribe-to-one-or-more-lists.md): Subscribes a user to one or more lists, creating any list that does not yet exist. Optional preferences apply to each subscription. - [Delete List subscriptions](https://www.courier.com/docs/api-reference/user-profiles/delete-list-subscriptions.md): Removes every list subscription for a user at once. Their profile and preferences are untouched, so this only affects list-targeted sends. - [Get a Tenant](https://www.courier.com/docs/api-reference/tenants/get-a-tenant.md): Returns one tenant with its name, parent tenant id, default preferences, properties, and the user profile applied to its members. - [Create or replace a Tenant](https://www.courier.com/docs/api-reference/tenants/create-or-replace-a-tenant.md): Creates or replaces a tenant from a name, parent, brand, properties, and default preferences supplied in the request body. - [Delete a Tenant](https://www.courier.com/docs/api-reference/tenants/delete-a-tenant.md): Deletes a tenant. Its members' workspace-level profiles and preferences live outside the tenant and are managed separately. - [List Tenants](https://www.courier.com/docs/api-reference/tenants/list-tenants.md): Lists the workspace's tenants, each carrying a name, parent tenant, properties, and default preferences. Paged. - [Get users in Tenant](https://www.courier.com/docs/api-reference/tenants/get-users-in-tenant.md): Returns the users belonging to a tenant with cursor paging. Use it to see who a tenant-scoped send will reach. - [Create or replace default Preferences for Topic](https://www.courier.com/docs/api-reference/tenants/create-or-replace-default-preferences-for-topic.md): Sets a tenant's default opt-in status for one subscription topic, which applies to every member unless a user sets their own override. - [Remove default Preferences for Topic](https://www.courier.com/docs/api-reference/tenants/remove-default-preferences-for-topic.md): Removes a tenant's default preference for one subscription topic, addressed by tenant id and topic id. - [Get an Audience](https://www.courier.com/docs/api-reference/audiences/get-an-audience.md): Returns one audience with its name, description, and the filter and AND or OR operator that decide which users belong to it. - [Update an Audience](https://www.courier.com/docs/api-reference/audiences/update-an-audience.md): Creates or replaces an audience from a filter and an AND or OR operator. Membership recalculates automatically as profiles change. - [Delete an Audience](https://www.courier.com/docs/api-reference/audiences/delete-an-audience.md): Deletes an audience permanently, so update any caller sending to it by audience id first. Those sends fail once the audience is gone. - [List Audience members](https://www.courier.com/docs/api-reference/audiences/list-audience-members.md): Returns the users currently matching an audience filter, with paging. Membership is recalculated, so results shift as profiles change. - [List all Audiences](https://www.courier.com/docs/api-reference/audiences/list-all-audiences.md): Returns the audiences in the workspace with paging. Audiences are filter-based groups that recalculate as user profiles change. - [List Lists](https://www.courier.com/docs/api-reference/lists/list-lists.md): Returns the workspace's lists, filterable by a pattern to fetch a subset such as every regional list. Paged by cursor. - [Get a List](https://www.courier.com/docs/api-reference/lists/get-a-list.md): Returns one list by id with its name and created and updated timestamps. Fetch its subscribers separately with the subscriptions endpoint. - [Update a List](https://www.courier.com/docs/api-reference/lists/update-a-list.md): Creates or replaces a list from a name and preferences. Subscribers are managed through the separate subscriptions endpoints. - [Delete a List](https://www.courier.com/docs/api-reference/lists/delete-a-list.md): Deletes a list, halting sends that target it. A previously deleted list can be brought back with the companion restore endpoint. - [Restore a List](https://www.courier.com/docs/api-reference/lists/restore-a-list.md): Restores a previously deleted list along with its subscribers, so a list removed by mistake can be brought back rather than rebuilt. - [List subscriptions for a List](https://www.courier.com/docs/api-reference/lists/list-subscriptions-for-a-list.md): Returns the users subscribed to a list with paging, each with the preferences recorded for that subscription. - [Subscribe users to a List](https://www.courier.com/docs/api-reference/lists/subscribe-users-to-a-list.md): Subscribes the users to the list, overwriting existing subscriptions. If the list does not exist, it will be automatically created. - [Add subscribers to a List](https://www.courier.com/docs/api-reference/lists/add-subscribers-to-a-list.md): Subscribes additional users to the list, without modifying existing subscriptions. If the list does not exist, it will be automatically created. - [Subscribe a user Profile to a List](https://www.courier.com/docs/api-reference/lists/subscribe-a-user-profile-to-a-list.md): Subscribes one user to a list, creating the list if it does not yet exist. Optional preferences apply to this subscription only. - [Unsubscribe a user Profile from a List](https://www.courier.com/docs/api-reference/lists/unsubscribe-a-user-profile-from-a-list.md): Removes one user's subscription to a list, addressed by list id and user id. The user's profile and other subscriptions are separate resources. - [List Providers](https://www.courier.com/docs/api-reference/providers/list-providers.md): Lists the provider integrations configured in the workspace, one entry per channel and provider key with its alias and settings. - [Create a Provider](https://www.courier.com/docs/api-reference/providers/create-a-provider.md): Configures a provider integration from a Courier provider key and its settings. Check the catalog endpoint for the schema each provider expects. - [List available Provider types](https://www.courier.com/docs/api-reference/providers/list-available-provider-types.md): Returns the provider types Courier supports, each with a display name, description, and the configuration fields it requires. - [Get a Provider](https://www.courier.com/docs/api-reference/providers/get-a-provider.md): Returns one configured provider by id, including its channel, provider key, alias, title, and current settings. - [Update a Provider](https://www.courier.com/docs/api-reference/providers/update-a-provider.md): Replaces a provider's configuration in full, clearing any field you omit rather than merging it. Send the complete settings object. - [Delete a Provider](https://www.courier.com/docs/api-reference/providers/delete-a-provider.md): Deletes a provider configuration, which fails while routing strategies or templates still reference it. Update those references first. - [List preference changes](https://www.courier.com/docs/api-reference/preference-topics/list-preference-changes.md): Returns the history of preference changes in this environment, newest first. Each entry records one change a user made to one subscription topic, and carries the value before it where there was one. Supply user_id to read a single user's history instead of the whole environment. - [Publish Preferences page](https://www.courier.com/docs/api-reference/preference-topics/publish-preferences-page.md): Publishes the workspace preference page, snapshotting every preference and topic, and returns the page id and a preview URL. - [List Preference Sections](https://www.courier.com/docs/api-reference/preference-topics/list-preference-sections.md): Returns the workspace's preferences, each embedding its subscription topics, routing options, and whether custom routing is allowed. - [Create a Preference Section](https://www.courier.com/docs/api-reference/preference-topics/create-a-preference-section.md): Creates a workspace preference and returns its generated id. Add subscription topics to it afterwards with the topics endpoint. - [Get a Preference Section](https://www.courier.com/docs/api-reference/preference-topics/get-a-preference-section.md): Returns one workspace preference by id, including its subscription topics, routing options, and custom routing flag. - [Replace a Preference Section](https://www.courier.com/docs/api-reference/preference-topics/replace-a-preference-section.md): Replace a workspace preference. Full document replacement; missing optional fields are cleared. Topics attached to the workspace preference are unaffected. - [Archive a Preference Section](https://www.courier.com/docs/api-reference/preference-topics/archive-a-preference-section.md): Archive a workspace preference. The workspace preference must be empty: delete its topics first, otherwise the request fails with 409. - [List Topics in Section](https://www.courier.com/docs/api-reference/preference-topics/list-topics-in-section.md): Returns the subscription topics inside a workspace preference, each with its default status and routing options. - [Create Topic in Section](https://www.courier.com/docs/api-reference/preference-topics/create-topic-in-section.md): Creates a subscription topic inside a workspace preference. The default status sets whether users start opted in, opted out, or required. - [Get Topic in Section](https://www.courier.com/docs/api-reference/preference-topics/get-topic-in-section.md): Returns one subscription topic with its default status, routing options, allowed preferences, and unsubscribe header setting. - [Replace Topic in Section](https://www.courier.com/docs/api-reference/preference-topics/replace-topic-in-section.md): Replace a topic within a workspace preference. Full document replacement; missing optional fields are cleared. Same 404 rules as GET. - [Archive Topic in Section](https://www.courier.com/docs/api-reference/preference-topics/archive-topic-in-section.md): Archives a subscription topic and removes it from its workspace preference, addressed by section id and topic id. - [Delete a topic's digest](https://www.courier.com/docs/api-reference/digests/delete-a-topics-digest.md): Turn off a topic's digest, leaving the topic itself in place. The template is unlinked and the digest's schedules are removed along with their delivery rules. Equivalent to sending `digest: null` on a topic replace. - [Release a recipient's digest](https://www.courier.com/docs/api-reference/digests/release-a-recipients-digest.md): Send one recipient's held digest now, instead of waiting for its schedule. Use it to preview what a digest will look like, or to let someone flush their own. - [Release a digest early](https://www.courier.com/docs/api-reference/digests/release-a-digest-early.md): Send a digest now instead of waiting for its scheduled time, so your users get what they have collected so far right away. - [List digest instances](https://www.courier.com/docs/api-reference/digests/list-digest-instances.md): Returns the digest instances for a schedule, one per user, with cursor paging. Use it to see what has accumulated before a digest releases. - [Get user's Preferences](https://www.courier.com/docs/api-reference/user-preferences/get-users-preferences.md): Returns a user's preference overrides with paging, one entry per subscription topic they have set a choice for. - [Replace user Preferences in bulk](https://www.courier.com/docs/api-reference/user-preferences/replace-user-preferences-in-bulk.md): Replaces a user's entire set of preference overrides. Any topic you leave out is reset to its default, so send the full set rather than a subset. - [Update user Preferences in bulk](https://www.courier.com/docs/api-reference/user-preferences/update-user-preferences-in-bulk.md): Adds or updates a user's preferences for several subscription topics at once. Topics you leave out keep whatever they were set to before. - [Get user Subscription Topic](https://www.courier.com/docs/api-reference/user-preferences/get-user-subscription-topic.md): Returns a user's opt-in status and channel choices for one subscription topic, or the effective default if they have set no override. - [Update or create user Preferences for a Subscription Topic](https://www.courier.com/docs/api-reference/user-preferences/update-or-create-user-preferences-for-a-subscription-topic.md): Sets a user's opt-in status and channel choices for one subscription topic, overriding the tenant default for that topic only. - [Delete user Subscription Topic](https://www.courier.com/docs/api-reference/user-preferences/delete-user-subscription-topic.md): Removes a user's override for one subscription topic, resetting it to the effective default from the tenant or workspace. - [List messages](https://www.courier.com/docs/api-reference/messages/list-messages.md): Returns previously sent messages, most recent first, each carrying its status, recipient, channel, and provider. Paged by cursor. - [Get message](https://www.courier.com/docs/api-reference/messages/get-message.md): Returns a sent message's status, recipient, event, and per-provider delivery detail, with timestamps for enqueued, sent, delivered, opened, and clicked. - [Cancel message](https://www.courier.com/docs/api-reference/messages/cancel-message.md): Cancels a message that is still in the delivery pipeline and returns the message record with its resulting canceled or failed status. - [Resend message](https://www.courier.com/docs/api-reference/messages/resend-message.md): Resends a previously sent message to the same recipient and content, returning a new messageId. The original send request is not modified. - [Get message history](https://www.courier.com/docs/api-reference/messages/get-message-history.md): Returns the ordered event history for a sent message, one entry per status transition with its timestamp. - [Get message content](https://www.courier.com/docs/api-reference/messages/get-message-content.md): Returns the rendered content Courier delivered for a message, broken out per channel, to confirm what the recipient received. - [Archive message](https://www.courier.com/docs/api-reference/messages/archive-message.md): Archives a send request by its request id. Use it to remove test sends or superseded requests from the message list without deleting them. - [List tokens](https://www.courier.com/docs/api-reference/device-tokens/list-tokens.md): Returns every device token registered for a user, each with its provider key, status, and expiry date. - [Add multiple tokens to user](https://www.courier.com/docs/api-reference/device-tokens/add-multiple-tokens-to-user.md): Registers several device tokens for a user in one call, overwriting any stored token with a matching value. - [Get a token](https://www.courier.com/docs/api-reference/device-tokens/get-a-token.md): Returns one device token with its provider key, status and status reason, expiry date, and any properties stored alongside it. - [Add a token to a user](https://www.courier.com/docs/api-reference/device-tokens/add-a-token-to-a-user.md): Registers one device token for a user against a provider key, overwriting the token if it already exists. Push sends resolve tokens per user. - [Delete user token](https://www.courier.com/docs/api-reference/device-tokens/delete-user-token.md): Deletes one device token for a user, addressed by the token value, so push sends no longer target that device. - [Update a token](https://www.courier.com/docs/api-reference/device-tokens/update-a-token.md): Applies a JSON Patch to a device token, changing its status, expiry, or properties without re-registering it. - [List a user's Tenants](https://www.courier.com/docs/api-reference/tenant-memberships/list-a-users-tenants.md): Returns the tenants a user belongs to, with cursor paging. A user can belong to many tenants, each with its own profile and preferences. - [Add a user to multiple Tenants](https://www.courier.com/docs/api-reference/tenant-memberships/add-a-user-to-multiple-tenants.md): Adds a user to several tenants in one call, each optionally with a per-tenant profile that overrides their workspace profile. - [Remove a user from all Tenants](https://www.courier.com/docs/api-reference/tenant-memberships/remove-a-user-from-all-tenants.md): Removes a user from every tenant they belong to in one call. Their workspace-level profile is a separate resource. - [Add a user to a Tenant](https://www.courier.com/docs/api-reference/tenant-memberships/add-a-user-to-a-tenant.md): Adds a user to one tenant, optionally with a tenant-specific profile that overrides their workspace profile for sends in that tenant. - [Remove user from a Tenant](https://www.courier.com/docs/api-reference/tenant-memberships/remove-user-from-a-tenant.md): Removes a user from one tenant. Their other tenant memberships and workspace profile are managed through separate endpoints. - [Get a Template in Tenant](https://www.courier.com/docs/api-reference/tenant-templates/get-a-template-in-tenant.md): Returns a tenant's notification template with its content, version, and created, updated, and published timestamps. - [Create or update a Tenant Template](https://www.courier.com/docs/api-reference/tenant-templates/create-or-update-a-tenant-template.md): Creates or updates a notification template scoped to one tenant, letting a tenant override the content the workspace template would send. - [Delete a Tenant Template](https://www.courier.com/docs/api-reference/tenant-templates/delete-a-tenant-template.md): Deletes a tenant's notification template by id. Sends for that tenant then use the workspace template registered under the same id. - [Publish a Tenant Template](https://www.courier.com/docs/api-reference/tenant-templates/publish-a-tenant-template.md): Publishes a version of a tenant's notification template, making it the content that tenant's sends render from until you publish another. - [Get a Template version](https://www.courier.com/docs/api-reference/tenant-templates/get-a-template-version.md): Returns one version of a tenant template, addressed by version number or by latest, with its content and publish timestamp. - [List Templates in Tenant](https://www.courier.com/docs/api-reference/tenant-templates/list-templates-in-tenant.md): Lists a tenant's notification templates, each carrying its version and published timestamp. Paged. - [Create a bulk job](https://www.courier.com/docs/api-reference/bulk/create-a-bulk-job.md): Creates a new bulk job for sending messages to multiple recipients. - [Get a job](https://www.courier.com/docs/api-reference/bulk/get-a-job.md): Returns a bulk job's message definition, its status — CREATED, PROCESSING, COMPLETED, or ERROR — and running counts of users received, messages enqueued, and failures. Poll it to follow a job through to completion. - [Add users](https://www.courier.com/docs/api-reference/bulk/add-users.md): Ingest user data into a Bulk Job. - [Run a job](https://www.courier.com/docs/api-reference/bulk/run-a-job.md): Starts processing a bulk job, sending to every user ingested into it. Returns 204 immediately; the job runs asynchronously, so poll the job to watch its status and counts. - [Get users](https://www.courier.com/docs/api-reference/bulk/get-users.md): Returns the users ingested into a bulk job with paging, each carrying the status Courier recorded for it and the id of the message it produced. - [List Automations](https://www.courier.com/docs/api-reference/automations/list-automations.md): Lists the workspace's saved automation templates, each with its id and a cursor for paging to the next page of results. - [Invoke an Automation](https://www.courier.com/docs/api-reference/automations/invoke-an-automation.md): Starts an automation run from a saved template for one recipient, with optional data and profile, and returns a runId. - [Invoke an ad hoc Automation](https://www.courier.com/docs/api-reference/automations/invoke-an-ad-hoc-automation.md): Runs a series of automation steps supplied inline, without a saved template, and returns a runId. - [List Automation runs](https://www.courier.com/docs/api-reference/automations/list-automation-runs.md): List runs of the workspace's v2 Automations, newest first, filtered by status, Template, or date range and paged by cursor. Journey (v3) runs are listed by `GET /journeys/runs` instead — the two surfaces never return each other's runs. Runs are retained for 95 days. - [List steps for an Automation run](https://www.courier.com/docs/api-reference/automations/list-steps-for-an-automation-run.md): List the per-step state of one Automation run, in full — this endpoint is not paginated. `message_id` is present on send steps that produced a message; follow it to `GET /messages/{message_id}` for delivery status. A send to a List or an Audience yields one `message_id` for the request, not one per… - [Get a Translation](https://www.courier.com/docs/api-reference/translations/get-a-translation.md): Returns the translation strings stored for one domain and locale, for use in localized notification content. - [Update Translations by locale](https://www.courier.com/docs/api-reference/translations/update-translations-by-locale.md): Uploads the translation strings for one domain and locale. Courier uses them to render localized content for recipients in that locale. - [Track an event](https://www.courier.com/docs/api-reference/track-events/track-an-event.md): Records an inbound event that can trigger a journey. Requires an event name, a messageId you generate, a type, and a properties object. - [List Audit Events](https://www.courier.com/docs/api-reference/audit-events/list-audit-events.md): Returns the workspace's audit event log with cursor paging. Each event records the actor, target, source, type, and timestamp of a change. - [Get an Audit Event](https://www.courier.com/docs/api-reference/audit-events/get-an-audit-event.md): Returns one audit event by id, including the actor who performed it, the target they changed, the source, the event type, and a timestamp. - [Create a JWT](https://www.courier.com/docs/api-reference/authentication/create-a-jwt.md): Returns a JWT for authenticating client-side SDKs such as the Inbox. You supply the scope and an expires_in duration, both required. - [Build with AI: agent skills, MCP server, and CLI](https://www.courier.com/docs/get-started/build-with-ai.md): Connect Claude Code, Cursor, Codex, or any AI coding agent to Courier with Courier Skills, the MCP server, the CLI, and docs built for agents to read. - [Courier MCP server](https://www.courier.com/docs/resources/mcp.md): Connect an AI agent to the hosted MCP server at mcp.courier.com to use the Courier API as tools. - [Courier MCP tools: every tool, grouped by resource](https://www.courier.com/docs/resources/mcp/tools.md): All 170 Courier MCP server tools, grouped by resource, with write tools marked, what each group is for, and which tools an agent chains for common tasks. - [Courier CLI](https://www.courier.com/docs/resources/cli.md): Install the CLI, learn its resource and verb command structure, and read JSON output. - [Courier CLI recipes: send, debug, and script notifications](https://www.courier.com/docs/resources/cli/recipes.md): Copy-paste Courier CLI commands for sending, debugging deliveries, profiles, push tokens, journeys, broadcasts, bulk jobs, pagination, and CI pipelines. - [Courier Skills: the agent skill for building notifications](https://www.courier.com/docs/resources/skills.md): Install Courier Skills so Claude Code, Cursor, or Codex gets your Courier integration right the first time and debugs the Courier code you already have. ## OpenAPI Specs - [openapi.documented](/docs/openapi-specs/openapi.documented.yml)