Courier

io.github.trycourier由 GitHub 帳號 trycourier 發布v1.3.7更新於 Oct 25, 2026

Send notifications, manage templates, and configure integrations with Courier.

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作

概覽

AI 產生的概覽

Courier 的遠端 MCP 伺服器讓助理查看已寄送訊息、管理通知範本與旅程,並查閱供應商、路由、偏好設定和租戶資訊。

可以做什麼
列出並查看已寄送訊息,包括算繪內容和投遞流程各環節的歷史紀錄。瀏覽通知範本及其已發布與草稿內容、版本歷史和提交檢查項目。建立和編輯通知範本、元素與語言地區覆寫內容,並建立或取代旅程及旅程專用範本。查看供應商整合與供應商目錄、路由策略、偏好設定分區和主題。查詢租戶、租戶使用者、使用者資料和清單訂閱情況。依選定時間範圍讀取單一通知範本的投遞指標。
適用情境
當你使用 Courier 處理通知,希望助理查明訊息為何送達或未送達、審閱範本與旅程草稿,或在變更前確認適用的頻道、供應商和偏好設定時,適合使用。
執行需求
遠端 MCP 端點 mcp.courier.com,使用 streamable HTTP。需要 Courier API 金鑰,透過 api_key 標頭傳送。需要能存取 Courier 的網路;不涉及本機套件或執行環境。
安裝前請注意
api_key 標頭中的 API 金鑰可存取你的 Courier 工作區,應視為機密。多個工具會寫入:建立和取代通知範本、元素、語言地區覆寫內容、旅程及旅程專用範本。取代操作會覆寫整份文件,省略的部分將被刪除。新建的範本和旅程維持草稿狀態,無法透過這些工具發布。使用者資料和租戶資料包含電子郵件、電話和自訂屬性。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Courier,將其新增到工作區。
  2. 連接 api_key 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.trycourier%2Fcourier/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "courier": {
      "type": "http",
      "url": "https://mcp.courier.com/",
      "headers": {
        "api_key": "<YOUR_API_KEY>"
      }
    }
  }
}

README

該儲存庫沒有 README。

工具

173

list_messages

List Messages

List messages you've previously sent. Filter by status, recipient, notification, provider, tags, or tenant.

輸入參數taglisttagseventcursorstatustraceIdarchivedprovidermessageIdrecipienttenant_id另有 2 個

get_message

Get Message

Get the full details and status of a single message by its ID.

輸入參數message_id必填

get_message_content

Get Message Content

Get the rendered content (HTML, text, subject) of a previously sent message.

輸入參數message_id必填

get_message_history

Get Message History

Get the event history for a message, showing each step in the delivery pipeline (enqueued, sent, delivered, etc.).

輸入參數typemessage_id必填

list_notifications

List Notifications

List notification templates, newest first. Pass tags to return only templates carrying ALL of the given tags. Page through the rest with cursor.

輸入參數tagscursor

get_notification_content

Get Notification Content

Get the published content blocks of a notification template.

輸入參數notification_id必填

get_notification_draft_content

Get Notification Draft Content

Get the draft (unpublished) content blocks of a notification template.

輸入參數notification_id必填

create_notification

Create Notification

Create a V2 notification template. name is required. Content may be provided inline or set separately afterwards. A newly created template is a draft; making it live is a separate step this tool cannot perform. Link a routing strategy via notification.routing.strategy_id to control which channels are used. Example: { notification: { name: 'welcome-email', tags: [], brand: null, subscription: null, routing: { strategy_id: 'rs_01abc' }, content: { version: '2022-01-01', elements: [] } } }.

輸入參數statenotification必填

get_notification

Get Notification

Retrieve a notification template by ID. Optionally request draft, published, or a version such as v001.

輸入參數versionnotification_id必填

replace_notification

Replace Notification

Replace a notification template entirely (full document PUT). The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數statenotification必填notification_id必填

put_notification_content

Put Notification Content

Replace the elemental content of a V2 notification template. Overwrites all elements. Use channel elements to target specific channels. Multi-channel example: elements: [{ type: "channel", channel: "email", elements: [{ type: "meta", title: "Hello" }, { type: "text", content: "Email body" }] }, { type: "channel", channel: "push", elements: [{ type: "meta", title: "Hello" }, { type: "text", content: "Push body" }] }, { type: "channel", channel: "inbox", elements: [{ type: "text", content: "Inbox plain text only" }] }]. The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數stateversionelements必填notification_id必填

put_notification_element

Put Notification Element

Update a single element within a V2 notification template. The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數ifrefdatalooptype必填statechannelselement_id必填notification_id必填

put_notification_locale

Put Notification Locale

Set locale-specific content overrides for a V2 notification template. Each element override must reference an existing element by its id. Example for Spanish locale: { notification_id: "nt_01abc", locale_id: "es", elements: [{ id: "elem_meta_1", title: "Restablecer contraseña" }, { id: "elem_text_1", content: "Haga clic en el enlace para restablecer su contraseña." }] }. The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數stateelements必填locale_id必填notification_id必填

list_notification_versions

List Notification Versions

List the version history of a notification template — each published version with when it was created. Use this to say what changed and when, or to find the version string get_notification accepts.

輸入參數limitcursornotification_id必填

list_notification_checks

List Notification Checks

List the checks recorded against one notification submission. Checks are the gates a submission has to clear before it goes out, so a failing check here is the reason a template is stuck rather than live.

輸入參數submission_id必填notification_id必填

list_providers

List Providers

List configured provider integrations for the workspace.

輸入參數cursor

get_provider

Get Provider

Fetch a single provider configuration by ID.

輸入參數provider_id必填

list_provider_catalog

List Provider Catalog

List the provider integrations Courier supports and the configuration each one expects. This is the catalog of what COULD be connected, not what this workspace has configured — use list_providers for that. Answers "what can I connect Courier to" and "what do I need in order to set up this provider".

輸入參數keysnamechannel

get_routing_strategy

Get Routing Strategy

Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers.

輸入參數routing_strategy_id必填

list_routing_strategies

List Routing Strategies

List the workspace's routing strategies, returning metadata only. A routing strategy decides which channel a notification takes and in what order. Use this to find the rs_-prefixed strategy ID that get_routing_strategy needs for the full definition.

輸入參數limitcursor

list_preference_sections

List Preference Sections

List the workspace's preference sections, each with the topics inside it. One call returns the whole opt-in surface: everything a user could subscribe to or opt out of. This is what the workspace DEFINES — use get_user_preferences for what a particular person actually chose.

無需輸入參數。

get_preference_section

Get Preference Section

Get one preference section by ID, including its topics. Use this when you already know which section you need; list_preference_sections returns every section with its topics in one call.

輸入參數section_id必填

list_preference_topics

List Preference Topics

List the subscription topics inside one preference section. A topic is the individual thing a user opts in or out of, and its ID is what get_user_preference_topic takes.

輸入參數section_id必填

get_preference_topic

Get Preference Topic

Get one subscription topic within a section, including its default opt-in state. Returns 404 if the section or topic does not exist, or if the topic belongs to a different section — so a 404 here can mean the pairing is wrong rather than the topic missing.

輸入參數topic_id必填section_id必填

create_journey

Create Journey

Create a new journey. Always created as a draft; making it live is a separate step this tool cannot perform. Send two nodes: the trigger, and an exit node last. Both are required — a create with no exit node is rejected, and the API reports that as "exit node must be the last node in the journey" even when no exit was sent at all. Send and delay nodes are added afterwards by replace_journey, once journey-scoped templates exist. Node ids are server-generated; do NOT include an id field. Example: { name: "Welcome Journey", nodes: [{ type: "trigger", trigger_type: "api-invoke" }, { type: "exit" }], enabled: true }. The result carries a "verification" object read back from the server after the write — check it every time. verified:true means what you asked for is what saved. verified:false names what did not: "fieldMismatches" for node fields that failed to land, "nodeCountMismatch" for a node dropped or added, and "unknownTemplateReferences" for a send node pointing at a template id this journey does not have — almost always a mistyped id, so re-copy it from the create_journey_template or get_journey response it came from. Fix the specific thing named and send the corrected document. Re-sending an identical call changes nothing, and every replace_journey overwrites the whole draft again. An "errorKind" of "unauthorized" means the write itself succeeded and only the read-back was refused: report that as unconfirmed, never as a failed write.

輸入參數name必填nodes必填stateenabled

get_journey

Get Journey

Get a journey by ID. Pass version=draft to retrieve the working draft, or version=vN for a historical version. Defaults to published.

輸入參數versionjourney_id必填

replace_journey

Replace Journey

Replace (update) a journey draft. Full document replacement — include all nodes and properties in the body, the trigger included; anything omitted is deleted. The journey stays a draft; making the change live is a separate step this tool cannot perform. This is where send, delay, branch and exit nodes are added, and send node template IDs must already be scoped to this journey. The result carries a "verification" object read back from the server after the write — check it every time. verified:true means what you asked for is what saved. verified:false names what did not: "fieldMismatches" for node fields that failed to land, "nodeCountMismatch" for a node dropped or added, and "unknownTemplateReferences" for a send node pointing at a template id this journey does not have — almost always a mistyped id, so re-copy it from the create_journey_template or get_journey response it came from. Fix the specific thing named and send the corrected document. Re-sending an identical call changes nothing, and every replace_journey overwrites the whole draft again. An "errorKind" of "unauthorized" means the write itself succeeded and only the read-back was refused: report that as unconfirmed, never as a failed write.

輸入參數name必填nodes必填stateenabledjourney_id必填

create_journey_template

Create Journey Template

Create a notification template scoped to a journey. Always created as a draft; making it live is a separate step this tool cannot perform. The template can then be referenced in journey send nodes. content.elements must be wrapped in a channel block — the API rejects bare elements. Example: { journey_id: "j-abc", channel: "email", notification: { name: "Welcome Email", tags: [], brand: null, subscription: null, content: { version: "2022-01-01", elements: [{ type: "channel", channel: "email", elements: [{ type: "text", content: "Hello!" }] }] } } }. The result carries a "verification" object confirming the new id is really present on the journey. verified:true means the id in this response is safe to reference from a send node. verified:false means it is not visible yet — re-read the journey before referencing it, and do not create a second template to work around it. An "errorKind" of "unauthorized" means the template was created and only the check was refused.

輸入參數statechannel必填journey_id必填notification必填provider_key

put_journey_template_content

Put Journey Template Content

Replace the elemental content of a journey-scoped notification template. Overwrites all elements. The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數stateversionelements必填journey_id必填notification_id必填

put_journey_template_locale

Put Journey Template Locale

Set locale-specific content overrides for a journey-scoped notification template. Each element override must reference an existing element by its id. The template stays a draft; making it live is a separate step this tool cannot perform.

輸入參數stateelements必填locale_id必填journey_id必填notification_id必填

list_journeys

List Journeys

List journey templates in the workspace, returning the journey IDs and version state of each. Optionally filter by version (published or draft).

輸入參數cursorversion

list_journey_templates

List Journey Templates

List notification templates scoped to a journey. Journey-scoped templates can only be used by send nodes within the same journey. Call this to discover template IDs before wiring send nodes in replace_journey.

輸入參數limitcursorjourney_id必填

get_journey_template

Get Journey Template

Get a journey-scoped notification template by notification ID. Pass version=draft to retrieve the working draft (required before the template has been published). Defaults to published.

輸入參數versionjourney_id必填notification_id必填

get_journey_template_content

Get Journey Template Content

Fetch the elemental content of a journey-scoped notification template. Pass version=draft for the working draft, or vN for a historical version. Defaults to published.

輸入參數versionjourney_id必填notification_id必填

get_notification_metrics

Get Notification Metrics

Delivery funnel for ONE notification template over time: sent, delivered, opened, clicked, errors and undeliverable, per provider and channel, in time buckets. Choosing the window — supply EITHER `lookback` OR `start` and `end` together, NEVER both. Supplying both is rejected. For a relative window like 'the last week', `lookback` alone is the whole answer: do not also pin `start` and `end`. Default is the last 30 days by day. Fine granularities cover shorter windows: HOUR spans at most 7 days and DAY at most 90. How far back a workspace may look also depends on its plan; a request reaching further back is refused with a payment error, which means the plan does not cover that window, NOT that there is no data. A coarser granularity can reach further back than a fine one. Reading the numbers correctly: - The first four counters are NESTED, not separate groups. Every delivered message is also counted in sent, every opened one in delivered, every clicked one in opened. So sent >= delivered >= opened >= clicked always. Report rates (delivered/sent) or the counters themselves. Do NOT add them together — the total is meaningless. And sent minus delivered is NOT a failure count; it is only 'did not reach the delivered stage', for any reason. - errors and undeliverable are counted separately and OVERLAP the funnel: a message that failed on one provider and succeeded on a retry appears in both errors and sent. They are not a remainder and do not complete a total. - Every counter is a count of distinct MESSAGES, not of events. A message that errored three times counts once in errors. - A bucket's `data` array holds one entry per provider and channel. To get a bucket total, add up the entries in that array — that is the only sum that means anything here. Note that rows for Courier's own built-in email sender are excluded, so these entries can add up to less than the workspace's true volume. What the buckets mean: - A message is counted in the bucket it w

輸入參數endstartlookbackgranularitynotification_id必填

get_tenant

Get Tenant

Get a tenant by its ID.

輸入參數tenant_id必填

list_tenants

List Tenants

List the workspace's tenants. A tenant is a customer or organisation whose users, branding and preferences are scoped separately; this answers "what tenants do I have" and gives you the tenant IDs get_tenant needs.

輸入參數limitcursor

list_tenant_users

List Tenant Users

List the users associated with one tenant. Use this to confirm whether someone actually belongs to the tenant whose branding or preferences you are reasoning about.

輸入參數limitcursortenant_id必填

get_user_profile_by_id

Get User Profile by ID

Get a user profile by their ID. Returns profile data including email, phone, and custom properties.

輸入參數user_id必填

get_user_list_subscriptions

Get User List Subscriptions

List the lists one user is subscribed to. Use this when explaining why a user received something — a subscription here is the reason a list-addressed send reached them, and its absence rules that path out.

輸入參數cursoruser_id必填

get_user_preferences

Get User Preferences

Get a user's notification preferences (subscriptions, opt-outs, channel preferences).

輸入參數user_id必填tenant_id

get_user_preference_topic

Get User Preference Topic

Get one user's choice for a single subscription topic — whether they opted in or out, and per channel. Use this when you already know which topic is in question; get_user_preferences returns all of them at once.

輸入參數user_id必填topic_id必填tenant_id

list_user_tenants

List User Tenants

List the tenants a user belongs to. Preferences and branding can be scoped per tenant, so this tells you which tenant-scoped settings could apply to this user at all before you go looking for them.

輸入參數limitcursoruser_id必填

list_brands

List Brands

List the workspace's brands. A brand is the reusable logo, colors and email styling a notification template renders with; this gives you the brand IDs a template's brand reference points at.

輸入參數cursor

get_brand

Get Brand

Get one brand by ID, including its colors, logo and styling settings. Read this to describe what a template referencing this brand will actually look like.

輸入參數brand_id必填

courier_installation_guide

Courier Installation Guide

Get the Courier SDK installation guide for one platform: the install command, a quick-start code sample and the relevant doc links. This is the answer to "how do I integrate Courier" or "how do I get started". Client-side platforms need a JWT to authenticate; each guide says so and names the tool that issues one.

輸入參數platform必填

list_automations

List Automations

List the workspace's automation templates, each with its template ID and whether it has a published or draft version. Answers "what automations already exist here" — this only reads the catalog, it never runs one.

輸入參數cursorversion

list_audiences

List Audiences

List the workspace's audiences. An audience is a saved filter over user profiles — a dynamic segment — so this answers "who can I target" and gives you the audience IDs that journey audience triggers and send requests refer to.

輸入參數cursor

get_audience

Get Audience

Get one audience by ID, including the filter that defines its membership. Read this to explain why someone is or is not in an audience — the filter is the rule, not a stored member list. Use list_audience_members for who currently matches.

輸入參數audience_id必填

list_audience_members

List Audience Members

List the users who currently match an audience's filter. Membership is computed, so this reflects profiles as they are right now — a profile change can move someone in or out without the audience itself being edited.

輸入參數cursoraudience_id必填

list_lists

List Lists

List the workspace's lists. A list is an explicit, subscription-based group of users — someone is on it because they were subscribed, not because they match a rule. Optionally filter by an id pattern such as "example.list.*".

輸入參數cursorpattern

get_list

Get List

Get one list by its ID, including its name and current state.

輸入參數list_id必填

get_list_subscribers

Get List Subscribers

List the users subscribed to a list. Use this to confirm whether someone was actually on a list at all — a subscription here is the reason a list-addressed send reached them.

輸入參數cursorlist_id必填

list_digest_instances

List Digest Instances

List the digest instances for a digest schedule. Each instance is the events accumulated so far for one user against that schedule, so this shows what is waiting to go out and answers why a digest has not arrived yet — it is still accumulating, or it has nothing in it.

輸入參數limitcursorschedule_id必填

update_audience

Update Audience

Create or update an audience with a filter definition.

輸入參數namefilteraudience_id必填description

delete_audience

Delete Audience

Delete an audience by its ID.

輸入參數audience_id必填

get_audit_event

Get Audit Event

Get a specific audit event by its ID.

輸入參數audit_event_id必填

list_audit_events

List Audit Events

List audit events in the workspace. Useful for tracking API usage and changes.

輸入參數cursor

generate_jwt_for_user

Generate JWT for User

Generate a JWT authentication token for a user. Used for client-side SDK auth (Inbox, Preferences, etc.).

輸入參數scopesuser_id必填expires_in

invoke_automation_template

Invoke Automation Template

Invoke an automation run from an existing automation template. template_id refers to an existing automation template in the workspace. Example: { template_id: "auto-onboarding", recipient: "user-123", data: { plan: "pro" } }.

輸入參數databrandprofiletemplaterecipient必填template_id必填

invoke_ad_hoc_automation

Invoke Ad Hoc Automation

Invoke an ad-hoc automation with inline steps. Valid step actions: send, send-list, delay, cancel, update-profile, invoke, fetch-data. To cancel a previously started automation, use the cancel_automation tool instead.

輸入參數databrandprofiletemplaterecipientautomation必填

cancel_automation

Cancel Automation

Cancel a running automation by its cancelation_token. This invokes a second ad-hoc automation with a single cancel step. The token must match the cancelation_token set when the original automation was started. Note: spelling is "cancelation_token" (single "l").

輸入參數cancelation_token必填

list_automation_runs

List Automation Runs

List automation runs, newest first. Filter by automation template, status, or a created_at window to find a run that stalled or errored, then read its steps with list_automation_run_steps. Journey runs are listed by list_journey_runs instead.

輸入參數limitcursorstatusend_datestart_datetemplate_id

list_automation_run_steps

List Automation Run Steps

List the steps of an automation run in order, with what happened at each. Send steps carry a message_id to follow with get_message.

輸入參數run_id必填

create_brand

Create Brand

Create a new brand. The API requires settings — omitting it returns a 400. If you do not have specific brand colors, omit settings and a safe default will be used automatically (black primary, white secondary). Example: { name: "Acme", settings: { colors: { primary: "#1a73e8", secondary: "#ffffff" } } }.

輸入參數idname必填settingssnippets

update_brand

Update Brand

Replace an existing brand with new values.

輸入參數name必填brand_id必填settingssnippets

delete_brand

Delete Brand

Delete a brand by its ID.

輸入參數brand_id必填

create_bulk_job

Create Bulk Job

Create a new bulk job for sending messages to multiple recipients. Workflow: create_bulk_job → add_bulk_users → run_bulk_job.

輸入參數message必填

add_bulk_users

Add Bulk Users

Add users to an existing bulk job.

輸入參數users必填job_id必填

run_bulk_job

Run Bulk Job

Run a bulk job, triggering delivery to all added users.

輸入參數job_id必填

get_bulk_job

Get Bulk Job

Get the status of a bulk job.

輸入參數job_id必填

list_bulk_users

List Bulk Users

List the users in a bulk job.

輸入參數cursorjob_id必填

track_inbound_event

Track Inbound Event

Track an inbound event that can trigger automations. Requires event name, messageId (for deduplication), and properties.

輸入參數event必填userIdmessageId必填properties必填

create_list

Create List

Create or update a list by list ID.

輸入參數name必填list_id必填

subscribe_user_to_list

Subscribe User to List

Subscribe a user to a list. Creates the list if it doesn't exist.

輸入參數list_id必填user_id必填preferences

unsubscribe_user_from_list

Unsubscribe User from List

Unsubscribe a user from a list.

輸入參數list_id必填user_id必填

delete_list

Delete List

Delete a list by its ID.

輸入參數list_id必填

restore_list

Restore List

Restore a previously deleted list.

輸入參數list_id必填

bulk_subscribe_to_list

Bulk Subscribe to List

Replace all subscribers on a list with the given recipients.

輸入參數list_id必填recipients必填

add_subscribers_to_list

Add Subscribers to List

Append subscribers to a list without removing existing subscribers.

輸入參數list_id必填recipients必填

cancel_message

Cancel Message

Cancel a message that is currently being delivered. Returns the message details with updated status.

輸入參數message_id必填

resend_message

Resend Message

Resend a previously sent message. Loads the original send request and enqueues a brand-new send to the same recipient with the same content, producing a new messageId; the original message is unchanged. Rate limited per message (429 on rapid repeats).

輸入參數message_id必填

trace_message

Trace Message

Trace delivery in one call. Give EXACTLY ONE of message_id (a single message) or trace_id (the metadata.trace_id set on a send, which can span several messages). Returns each matching message with its event history, which carries the status reason when a message is undeliverable. Set include_output to also return the rendered content each provider received.

輸入參數limittrace_idmessage_idinclude_output

archive_notification

Archive Notification

Archive a notification template by ID.

輸入參數notification_id必填

publish_notification

Publish Notification

Publish a notification template, making it available for sending. Must be called before send_message_template unless the template was created with state: 'PUBLISHED'. Publishes the current draft by default; pass version (e.g. 'v001') to publish a specific historical version. Returns 204 on success.

輸入參數versionnotification_id必填

update_notification_checks

Update Notification Checks

Update check statuses for a notification submission.

輸入參數checks必填submission_id必填notification_id必填

cancel_notification_submission

Cancel Notification Submission

Cancel a notification template submission.

輸入參數submission_id必填notification_id必填

create_or_merge_user

Create or Merge User

Create a new user profile or merge supplied values into an existing profile (POST). Existing fields not included are preserved.

輸入參數profileuser_id必填

replace_profile

Replace Profile

Fully replace a user profile (PUT). All existing data is overwritten; include every field you want to keep.

輸入參數profile必填user_id必填

patch_profile

Patch Profile

Partially update a user profile via JSON Patch (RFC 6902). Use add/replace/remove operations on specific profile paths.

輸入參數patch必填user_id必填

delete_profile

Delete Profile

Delete a user profile permanently.

輸入參數user_id必填

subscribe_user_to_lists

Subscribe User to Lists

Subscribe a user to one or more lists. Creates lists that do not exist.

輸入參數lists必填user_id必填

delete_user_list_subscriptions

Delete User List Subscriptions

Delete all list subscriptions for a user.

輸入參數user_id必填

send_message

Send Message

Send a message to a user using inline title and body content (no template). Optionally specify routing channels. API reference: https://www.courier.com/docs/api-reference/send/send-a-message.

輸入參數body必填datatitle必填methoduser_id必填channels

send_message_template

Send Message Template

Send a message to a user using a published notification template. Only published templates can be sent; publishing a draft is a separate operation. Example: { user_id: "user-123", template: "nt_01abc123", data: { name: "Alex", resetUrl: "https://app.example.com/reset" } }.

輸入參數datamethoduser_id必填channelstemplate必填

send_message_to_list

Send Message to List

Send a message to all subscribers of a list using inline title and body content. API reference: https://www.courier.com/docs/api-reference/send/send-a-message.

輸入參數body必填datatitle必填methodlist_id必填channels

send_message_to_list_template

Send Message to List Template

Send a message to all subscribers of a list using a notification template.

輸入參數datamethodlist_id必填channelstemplate必填

create_or_update_tenant

Create or Update Tenant

Create or replace a tenant. Tenants represent organizations or groups that users belong to.

輸入參數name必填brand_idtenant_id必填propertiesuser_profileparent_tenant_iddefault_preferences

delete_tenant

Delete Tenant

Delete a tenant by its ID.

輸入參數tenant_id必填

update_tenant_preference

Update Tenant Preference

Set the default notification preference for a subscription topic on a tenant. This controls tenant-level defaults — it does NOT set per-user preferences (use the user preferences API for that). The topic_id must already exist as a subscription topic in the workspace; a 404 means the topic has not been created yet. Example: { tenant_id: "acme", topic_id: "marketing-updates", status: "OPTED_IN", has_custom_routing: true, custom_routing: ["email", "push"] }.

輸入參數status必填topic_id必填tenant_id必填custom_routinghas_custom_routing

delete_tenant_preference

Delete Tenant Preference

Remove default notification preference for a topic from a tenant.

輸入參數topic_id必填tenant_id必填

list_tenant_templates

List Tenant Templates

List notification templates configured for a tenant.

輸入參數limitcursortenant_id必填

get_tenant_template

Get Tenant Template

Get a tenant notification template association by template ID.

輸入參數tenant_id必填template_id必填

replace_tenant_template

Replace Tenant Template

Create or replace a tenant notification template (draft unless published is true).

輸入參數titlecontent必填routingchannelsproviderspublishedtenant_id必填template_id必填

publish_tenant_template

Publish Tenant Template

Publish a version of a tenant notification template.

輸入參數versiontenant_id必填template_id必填

get_tenant_template_version

Get Tenant Template Version

Get a specific version of a tenant notification template (e.g. latest, published, or v1).

輸入參數version必填tenant_id必填template_id必填

delete_tenant_template

Delete Tenant Template

Delete a tenant notification template. Returns 204 on success, 404 if the template does not exist for this tenant.

輸入參數tenant_id必填template_id必填

get_translation

Get Translation

Get a translation for a specific locale (e.g. "en_US", "fr_FR").

輸入參數domainlocale必填

update_translation

Update Translation

Create or update a translation for a specific locale. API reference: https://www.courier.com/docs/api-reference/translations/update-translations-by-locale.

輸入參數body必填domainlocale必填

list_user_push_tokens

List User Push Tokens

List all push/device tokens for a user.

輸入參數user_id必填

get_user_push_token

Get User Push Token

Get a specific push/device token for a user.

輸入參數token必填user_id必填

create_or_replace_user_push_token

Create or Replace User Push Token

Create or replace a push/device token for a user.

輸入參數token必填deviceuser_id必填provider_key必填

bulk_add_user_tokens

Bulk Add User Tokens

Add multiple push/device tokens for a user in one request. Overwrites matching existing tokens.

輸入參數tokens必填user_id必填

patch_user_token

Patch User Token

Apply a JSON Patch (RFC 6902) to a specific push token.

輸入參數patch必填token必填user_id必填

delete_user_token

Delete User Token

Delete a specific push token for a user.

輸入參數token必填user_id必填

update_user_preference_topic

Update User Preference Topic

Update a user's preference for a specific subscription topic (opt in, opt out, or set channel preferences).

輸入參數status必填user_id必填topic_id必填tenant_idcustom_routingdigest_schedule_idhas_custom_routing

delete_user_preference_topic

Delete User Preference Topic

Delete a user's preference for a specific subscription topic, reverting it to the topic's default status.

輸入參數user_id必填topic_id必填

add_user_to_tenant

Add User to Tenant

Add a user to a tenant.

輸入參數profileuser_id必填tenant_id必填

remove_user_from_tenant

Remove User from Tenant

Remove a user from a tenant.

輸入參數user_id必填tenant_id必填

bulk_add_user_tenants

Bulk Add User Tenants

Add a user to multiple tenants at once. A custom profile can be supplied per tenant.

輸入參數tenants必填user_id必填

remove_all_user_tenants

Remove All User Tenants

Remove a user from all tenants.

輸入參數user_id必填

bulk_update_user_preferences

Bulk Update User Preferences

Additively create or update a user's preferences for one or more topics in a single request. Only the topics in the body are touched; existing overrides for other topics are left untouched. Partial-success: valid topics are written and returned in `items`, unapplicable ones collected in `errors`.

輸入參數topics必填user_id必填tenant_id

bulk_replace_user_preferences

Bulk Replace User Preferences

Replace a user's complete set of preference overrides in one request. The topics in the body become the recipient's entire override set: listed topics are created or updated, and every existing override not included is reset to its topic default. An empty `topics` array clears all overrides. Validation-atomic (all-or-nothing).

輸入參數topics必填user_id必填tenant_id

archive_request

Archive Request

Archive a send request and all its associated messages by request ID.

輸入參數request_id必填

create_routing_strategy

Create Routing Strategy

Create a routing strategy defining how notifications are delivered across channels and providers.

輸入參數name必填tagsrouting必填channelsprovidersdescription

replace_routing_strategy

Replace Routing Strategy

Replace a routing strategy. Full document replacement; missing optional fields are cleared.

輸入參數name必填tagsrouting必填channelsprovidersdescriptionrouting_strategy_id必填

archive_routing_strategy

Archive Routing Strategy

Archive a routing strategy. The strategy must not have associated notification templates; unlink all templates before archiving.

輸入參數routing_strategy_id必填

list_routing_strategy_notifications

List Routing Strategy Notifications

List notification templates associated with a routing strategy. Useful for checking linked templates before archiving.

輸入參數limitcursorrouting_strategy_id必填

invoke_journey

Invoke Journey

Invoke a journey run from a journey template. template_id refers to an existing journey template in the workspace. Example: { template_id: "j-onboarding", user_id: "user-123", data: { plan: "pro" } }.

輸入參數dataprofileuser_idtemplate_id必填

publish_journey

Publish Journey

Publish the current draft of a journey, making it live and invokable. Pass version to roll back to a prior published version instead of publishing the draft. Returns 404 if there is no draft to publish.

輸入參數versionjourney_id必填

archive_journey

Archive Journey

Archive a journey. Archived journeys cannot be invoked but existing runs continue to completion.

輸入參數journey_id必填

list_journey_versions

List Journey Versions

List published versions of a journey, ordered most recent first.

輸入參數journey_id必填

replace_journey_template

Replace Journey Template

Replace the draft of a journey-scoped notification template. Full document replacement. Call publish_journey_template afterwards to make it live.

輸入參數statejourney_id必填notification必填notification_id必填

archive_journey_template

Archive Journey Template

Archive a journey-scoped notification template. Archived templates cannot be sent.

輸入參數journey_id必填notification_id必填

publish_journey_template

Publish Journey Template

Publish the current draft of a journey-scoped notification template. Optionally pass version to roll back to a prior version.

輸入參數versionjourney_id必填notification_id必填

list_journey_template_versions

List Journey Template Versions

List published versions of a journey-scoped notification template, ordered most recent first.

輸入參數journey_id必填notification_id必填

cancel_journey

Cancel Journey

Cancel journey runs. Supply EXACTLY ONE of cancelation_token (cancels every run associated with the token) or run_id (cancels a single run). Cancelation is idempotent: a run that already finished or was already canceled is left unchanged.

輸入參數run_idcancelation_token

list_journey_runs

List Journey Runs

List journey runs, newest first. Filter by journey, status, or a created_at window to find a run that stalled or errored, then read its steps with list_journey_run_steps.

輸入參數limitcursorstatusend_datestart_datetemplate_id

get_journey_run

Get Journey Run

Get one journey run by id: its journey, status, and timestamps.

輸入參數run_id必填

list_journey_run_steps

List Journey Run Steps

List the steps of a journey run in order, with each node and what happened at it. This is how to see where a run stopped and why.

輸入參數run_id必填

create_provider

Create Provider

Create a new provider (integration) configuration. Once routing strategies or notification templates reference this config, credential or settings mistakes can affect live sends—confirm provider key and settings against list_provider_catalog before saving. The provider field must be a known Courier provider key.

輸入參數aliastitleprovider必填settings

update_provider

Update Provider

Replace an existing provider configuration. Full replacement — retrieve current config with get_provider first; omitted optional fields are cleared. Changing API keys or settings affects live delivery if this integration is in use.

輸入參數aliastitleprovider必填settingsprovider_id必填

delete_provider

Delete Provider

Delete a provider configuration. Returns 409 if the provider is still referenced by routing or notifications.

輸入參數provider_id必填

create_preference_section

Create Preference Section

Create a preference section in your workspace. The section id is generated and returned. Add topics afterwards with create_preference_topic.

輸入參數name必填routing_optionshas_custom_routing

replace_preference_section

Replace Preference Section

Replace a preference section. Full document replacement; missing optional fields are cleared. Topics attached to the section are unaffected.

輸入參數name必填section_id必填routing_optionshas_custom_routing

archive_preference_section

Archive Preference Section

Archive a preference section. The section must be empty: delete its topics first, otherwise the request fails with 409.

輸入參數section_id必填

publish_preferences

Publish Preferences

Publish the workspace's preferences page. Takes a snapshot of every section with its topics under a new published version, making the current state visible on the hosted preferences page.

無需輸入參數。

create_preference_topic

Create Preference Topic

Create a subscription preference topic inside a section. The topic id is generated and returned. Fails with 404 if the section does not exist.

輸入參數name必填digestsection_id必填topic_datadefault_status必填routing_optionsallowed_preferencesinclude_unsubscribe_header

replace_preference_topic

Replace Preference Topic

Replace a topic within a section. Full document replacement: omitted optional fields are cleared, except `digest`, which is left untouched when omitted. Pass `digest: null` to turn a digest off.

輸入參數name必填digesttopic_id必填section_id必填topic_datadefault_status必填routing_optionsallowed_preferencesinclude_unsubscribe_header

archive_preference_topic

Archive Preference Topic

Archive a topic within a section.

輸入參數topic_id必填section_id必填

list_preference_logs

List Preference Logs

List preference changes, newest first. Each entry is one change a user made to one subscription topic, with the value before it where there was one. Pass user_id to answer "when did this user opt out, and of what?"; omit it to read the whole environment. Page with paging.cursor while paging.more is true.

輸入參數limitsincecursoruser_idtenant_id

release_digest

Release Digest

Release a digest schedule early — send what users have collected so far now instead of waiting for the scheduled time. A 204 is also returned when the schedule has no in-progress instances to release.

輸入參數schedule_id必填

release_user_digest

Release User Digest

Release one recipient's held digest for a topic now, instead of waiting for its schedule. Use it to preview a digest, or to let a user flush their own, without releasing everyone else on the schedule. There is no release-everyone form of this call; use release_digest with a schedule id for that.

輸入參數user_id必填topic_id必填tenant_idsection_id必填

list_broadcasts

List Broadcasts

List broadcasts in the workspace.

輸入參數limitcursor

create_broadcast

Create Broadcast

Create a broadcast: a one-off message to a list or audience on a single channel. It starts as a draft with no content; add content with put_broadcast_content, then send_broadcast or schedule_broadcast.

輸入參數name必填channel必填

get_broadcast

Get Broadcast

Get a broadcast by id, including its channel and send or schedule state.

輸入參數broadcast_id必填

rename_broadcast

Rename Broadcast

Rename a broadcast. Content and channel are unchanged.

輸入參數name必填broadcast_id必填

delete_broadcast

Delete Broadcast

Delete a broadcast.

輸入參數broadcast_id必填

get_broadcast_content

Get Broadcast Content

Get a broadcast's Elemental content.

輸入參數broadcast_id必填

put_broadcast_content

Put Broadcast Content

Replace a broadcast's content with an Elemental document. Saved as a draft unless state is PUBLISHED.

輸入參數statecontent必填broadcast_id必填

send_broadcast

Send Broadcast

Send a broadcast now to every member of a list or audience. This delivers real messages.

輸入參數broadcast_id必填recipient_id必填recipient_type必填

schedule_broadcast

Schedule Broadcast

Schedule a broadcast to send later to a list or audience. Cancel with cancel_broadcast_schedule.

輸入參數timezonebroadcast_id必填recipient_id必填scheduled_to必填recipient_type必填

cancel_broadcast_schedule

Cancel Broadcast Schedule

Cancel a broadcast's scheduled send. The broadcast itself is kept.

輸入參數broadcast_id必填

duplicate_broadcast

Duplicate Broadcast

Copy a broadcast into a new draft. The original is left unchanged.

輸入參數broadcast_id必填

list_preview_devices

List Preview Devices

List the email clients a preview can render on. Each device has a pvd_ id, a display name, and fields to filter by: category, app, platform, os, os_version and theme. Use these ids in a device set or in create_preview_run.

無需輸入參數。

list_preview_device_sets

List Preview Device Sets

List saved preview device sets. Every workspace has a read-only Courier Recommended set that runs can use without creating a set first.

無需輸入參數。

create_preview_device_set

Create Preview Device Set

Create a named, reusable set of preview devices.

輸入參數name必填device_ids必填

get_preview_device_set

Get Preview Device Set

Get a preview device set by id.

輸入參數device_set_id必填

replace_preview_device_set

Replace Preview Device Set

Replace a preview device set's name and devices. This is a full replace, so send every device the set should keep. The Courier Recommended set cannot be changed.

輸入參數name必填device_ids必填device_set_id必填

archive_preview_device_set

Archive Preview Device Set

Archive a preview device set. Runs that used it keep their own copy of its devices. The Courier Recommended set cannot be archived.

輸入參數device_set_id必填

create_preview_run

Create Preview Run

Render a template's email on real email clients and capture screenshots. Pass exactly one of device_set_id or device_ids. Each run is billed to the workspace's previews add-on. The run starts PENDING, so poll get_preview_run for the results.

輸入參數datalocaledevice_idstemplate_id必填device_set_idtemplate_version

list_preview_runs

List Preview Runs

List a template's preview runs, newest first.

輸入參數limitcursortemplate_id必填

get_preview_run

Get Preview Run

Get a preview run with its per-device results and screenshot URLs. Poll until status is COMPLETED or FAILED. The URLs are short-lived and re-signed on every read, so fetch them rather than storing them.

輸入參數template_id必填preview_run_id必填

版本歷史

1
  1. v1.3.7最新Sep 16, 2026

評分

已滿足適用檢查項的 75%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。