Courier integration
Multi-channel notification API for email, SMS, push, Slack, and more. Design notifications with a visual editor, manage preferences, and deliver across 50+ channels from one API. Features include templates, user preferences, delivery tracking, intelligent routing, audiences, tenants, automations, and bulk operations.
Common Courier use cases
- admin tools
- compliance
- subscription management
- list cleanup
- list management
- settings display
- audience management
- unsubscribe handling
- delivery verification
- subscriber management
What you can do with Courier
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
List, 10 operations
- POSTadd_subscribers_to_list
Adds subscribers to a list without removing existing ones (POST appends).
- DELETEdelete_list
Deletes a list. Can be restored later via PUT /lists/{list_id}/restore.
- GETget_list
Gets a specific list by ID. Returns list name, created, and updated timestamps.
- GETget_list_subscriptions
Gets all subscribers of a list. Returns recipient IDs, preferences, and timestamps.
- GETlist_lists
Gets all recipient lists with optional pattern filtering. Returns list IDs, names, and timestamps.
- PUTrestore_list
Restores a previously deleted list. Returns 204 on success.
- PUTsubscribe_to_list
Subscribes users to a list (PUT overwrites existing subscriptions). Creates the list if it does not exist.
- PUTsubscribe_user_to_list
Subscribes a single user to a list with optional per-subscription preferences.
- DELETEunsubscribe_from_list
Removes a user from a list subscription.
- PUTupdate_list
Creates or updates a list. Set name and optional notification preferences.
Message, 6 operations
- PUTarchive_message
Archives a message by request ID. Archived messages can be filtered when listing messages.
- POSTcancel_message
Cancels a previously enqueued message before delivery. Returns 200 on success, 409 if cancellation fails.
- GETget_message
Gets message details and delivery status. Returns sent/delivered/opened events per channel. Track notification lifecycle and troubleshoot delivery issues.
- GETget_message_content
Gets the rendered content of a sent message. Returns HTML, title, body, subject, and text per channel.
- GETget_message_history
Gets the full event history of a sent message. Returns timestamped lifecycle events showing routing, rendering, and delivery progression.
- GETlist_messages
Lists sent messages with optional filters. Query by recipient, status, event, provider, tenant, or tags. Returns paginated message history.
Profile, 6 operations
- DELETEdelete_profile
Permanently deletes a user profile. Returns 204 on success.
- GETget_profile
Gets a user's stored profile. Returns all contact info, preferences, and custom data.
- GETget_profile_lists
Gets all list subscriptions for a user. Returns list IDs, names, and timestamps.
- POSTmerge_profile
Merges data into a user profile without replacing existing fields. Creates the profile if it does not exist.
- PUTreplace_profile
Replaces a user profile entirely. Store contact info, push tokens, chat handles, and custom properties. Omitted fields are removed.
- PATCHupdate_profile
Applies JSON patch operations to a user profile. Supports add, remove, replace, move, copy, and test operations.
Audience, 5 operations
- DELETEdelete_audience
Deletes an audience. Returns 204 on success.
- GETget_audience
Gets a specific audience by ID. Returns name, description, operator, filter rules, and timestamps.
- GETlist_audience_members
Lists all members of an audience. Returns member IDs, added timestamps, and match reasons.
- GETlist_audiences
Lists all audiences with their filter configurations. Returns ID, name, description, operator, and filter rules.
- PUTupdate_audience
Creates or updates an audience with filter rules for dynamic user grouping based on profile attributes.
Brand, 5 operations
- POSTcreate_brand
Creates a new brand configuration. Define name, settings (colors, logo, email), and optional snippets.
- DELETEdelete_brand
Deletes a brand configuration. Returns 204 on success, 409 if the brand cannot be deleted.
- GETget_brand
Gets a specific brand configuration by ID. Returns name, settings, snippets, and version.
- GETlist_brands
Lists brand configurations for notification styling. Returns brand ID, name, settings, and timestamps.
- PUTreplace_brand
Replaces a brand configuration entirely. Provide name and updated settings.
Bulk job, 5 operations
- POSTcreate_bulk_job
Creates a bulk notification job with shared message configuration. Returns a jobId used to add recipients and trigger delivery.
- GETget_bulk_job
Gets the status and details of a bulk notification job. Returns enqueued count, received count, failures, and job definition.
- GETget_bulk_job_users
Lists users added to a bulk job with their processing status and optional message IDs.
- POSTingest_bulk_users
Adds recipients to a bulk notification job. Can be called multiple times to ingest users incrementally before triggering the job.
- POSTrun_bulk_job
Triggers a bulk job to start processing and delivering notifications to all ingested users. A job can only be triggered once.
Tenant, 5 operations
- PUTcreate_or_replace_tenant
Creates or replaces a tenant. Set name, properties, preferences, user_profile, and brand_id.
- DELETEdelete_tenant
Deletes a tenant. Returns 204 on success.
- GETget_tenant
Gets a tenant by ID. Returns name, properties, default_preferences, user_profile, and brand_id.
- GETget_tenant_users
Lists all users in a tenant. Returns user-tenant associations with pagination.
- GETlist_tenants
Lists all tenants. Supports parent_tenant_id filtering and pagination.
Automation, 3 operations
- POSTinvoke_automation
Invokes an ad hoc automation run with a series of steps. Supports send, delay, send-list, fetch-data, update-profile, cancel, and invoke actions.
- POSTinvoke_automation_template
Invokes a pre-defined automation template by ID or alias. Returns a runId.
- GETlist_automations
Lists all automation templates. Filter by published or draft version.
Preference, 3 operations
- GETget_preferences
Gets user's notification preferences. Returns subscription status by topic with optional custom routing channels.
- GETget_preference_topic
Gets a user's preference for a specific topic. Returns status, custom routing, and channel preferences.
- PUTupdate_preferences
Updates preferences for a specific topic. Set status and optional custom routing channels.
Audit event, 2 operations
- GETget_audit_event
Gets a specific audit event by ID. Returns actor, action, target, source, and timestamp.
- GETlist_audit_events
Lists audit events. Returns timestamped records of actions with actor, target, source, and type.
Translation, 2 operations
- GETget_translation
Gets translations for a domain and locale. Returns .po file translation content.
- PUTupdate_translation
Updates translations for a domain and locale. Accepts .po file content. Returns 204 on success.
User tenant, 2 operations
- PUTadd_user_to_tenant
Adds a user to a tenant with optional tenant-scoped profile data.
- GETget_user_tenants
Lists all tenants associated with a user.
Auth, 1 operation
- POSTissue_token
Creates a scoped JWT for client-side Courier SDK authentication. Set scope and expiration.
Notification, 1 operation
- POSTsend_notification
Sends a notification via configured channels. Specify recipient, template or inline content, and routing preferences. Delivers across email, SMS, push, Slack, and more.
Template, 1 operation
- GETlist_templates
Lists all notification templates in your workspace. Returns template ID, title, routing, tags, topic_id, and timestamps.
Track, 1 operation
- POSTtrack_event
Tracks a custom event for automation triggers. De-duplicated by messageId. Returns 202 on acceptance.
Use Courier from Claude Code, Cursor or Codex
Connect Courier in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Courier operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Courier
Create your workspace
Sign up free. Nothing to install.
Connect Courier once
Add your Courier connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Courier integration FAQ
- What can you do with the Courier integration?
- LiveContext exposes 58 operations on Courier, covering list, message, profile and audience. Common uses include admin tools, compliance and subscription management.
Popular integrations
Instagram API with Instagram Login (graph.instagram.com). Manage a Business/Creator Instagram account…
Messaging platform API for building bots and integrations. Send messages, manage chats and channels, handle…
Google email service API for sending, receiving, and managing emails. Access messages, threads, labels,…
Google's video platform API for accessing video, channel, playlist, and comment data
Social media platform API for content creators and businesses. Access user info, manage videos, get…
Social media platform API for posting, reading, and managing Twitter/X content. Post tweets, read timelines,…
Professional networking platform API for managing profiles, connections, and content. Share posts, manage…
AI API from xAI (Elon Musk's AI company) powering Grok models. Access state-of-the-art language models with…