Appwrite Messaging API

The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.). 46 operations across 39 paths in the Appwrite 2.0.0 OpenAPI.

Operations 46

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /messaging/messages List sent and scheduled messages · List messages #
Ask an LLM
“Which emails, SMS and push notifications has my Appwrite project sent?”
“Can I search my message history by keyword?”
Tell an agent
List all messages in this project.
Search my messages for {search}.
POST /messaging/messages/email Send or schedule an email message · Create email #
Ask an LLM
“How do I send an email to everyone subscribed to a topic?”
“Can I schedule an email for later or save it as a draft?”
Tell an agent
Email topic {topics} with subject {subject} and body {content}, message ID {messageId}.
Schedule email {messageId} to users {users} for {scheduledAt}: subject {subject}, body {content}.
PATCH /messaging/messages/email/{messageId} Edit a draft email message · Update email #
Ask an LLM
“Can I change the subject of an email that is still a draft?”
“Why can't I edit an email that has already been sent?”
Tell an agent
Change the subject of draft email {messageId} to {subject}.
Reschedule draft email {messageId} to go out at {scheduledAt}.
POST /messaging/messages/push Send or schedule a push notification · Create push notification #
Ask an LLM
“How do I send a push notification to a user's devices?”
“Can I set a badge count, sound or image on a push notification?”
Tell an agent
Send push {messageId} titled {title} saying {body} to topic {topics}.
Schedule push notification {messageId} to users {users} at {scheduledAt} with title {title}.
PATCH /messaging/messages/push/{messageId} Edit a draft push notification · Update push notification #
Ask an LLM
“Can I change the title of a push notification before it goes out?”
“Which push notifications can still be edited?”
Tell an agent
Change draft push {messageId} to say {body}.
Retitle push notification draft {messageId} to {title}.
POST /messaging/messages/sms Send or schedule an SMS · Create SMS #
Ask an LLM
“How do I send a text message to users in my app?”
“Can I schedule an SMS for a specific time?”
Tell an agent
Text {content} to users {users} as SMS {messageId}.
Schedule SMS {messageId} saying {content} to topic {topics} at {scheduledAt}.
PATCH /messaging/messages/sms/{messageId} Edit a draft SMS · Update SMS #
Ask an LLM
“Can I fix the wording of a text message that is still a draft?”
“Is it possible to change who a scheduled draft SMS goes to?”
Tell an agent
Change the text of draft SMS {messageId} to {content}.
Send draft SMS {messageId} to targets {targets} instead.
GET /messaging/messages/{messageId} Get one message · Get message #
Ask an LLM
“Did a particular message get delivered or fail?”
“How do I look up a single message by its ID?”
Tell an agent
Show message {messageId}.
Get the delivery status of message {messageId}.
DELETE /messaging/messages/{messageId} Delete a message · Delete message #
Ask an LLM
“Can I cancel a scheduled message by deleting it?”
“Does deleting a message that was already sent recall it?”
Tell an agent destructive · confirm first
Delete message {messageId}.
Remove the scheduled message {messageId} before it goes out.
GET /messaging/messages/{messageId}/targets List who a message was sent to · List message targets #
Ask an LLM
“Which recipients and devices did a message go to?”
“Can I see the targets attached to one message?”
Tell an agent
List the targets of message {messageId}.
Show the recipients of message {messageId} matching {queries}.
GET /messaging/providers List messaging providers · List providers #
Ask an LLM
“Which email, SMS and push providers are configured in my project?”
“Can I search my messaging providers by name?”
Tell an agent
List all messaging providers.
Search messaging providers for {search}.
POST /messaging/providers/apns Add an Apple Push Notification service provider · Create APNS provider #
Ask an LLM
“How do I set up APNs so I can push to iOS devices?”
“Can I connect the APNs sandbox environment for testing?”
Tell an agent
Add an APNs provider {name} with ID {providerId} for bundle {bundleId}.
Create APNs provider {providerId} named {name} using key {authKeyId} from team {teamId}.
PATCH /messaging/providers/apns/{providerId} Update an APNs provider · Update APNS provider #
Ask an LLM
“How do I replace the auth key on my existing APNs provider?”
“Can I switch an APNs provider from sandbox to production?”
Tell an agent
Update APNs provider {providerId} to use auth key {authKey}.
Set sandbox to {sandbox} on APNs provider {providerId}.
POST /messaging/providers/fcm Add a Firebase Cloud Messaging provider · Create FCM provider #
Ask an LLM
“How do I connect Firebase Cloud Messaging for Android push?”
“What credential does a new FCM provider need?”
Tell an agent
Add an FCM provider {name} with ID {providerId}.
Create FCM provider {providerId} called {name} with service account {serviceAccountJSON}.
PATCH /messaging/providers/fcm/{providerId} Update an FCM provider · Update FCM provider #
Ask an LLM
“Can I swap the service account JSON on my existing FCM provider?”
“How do I disable an FCM provider without deleting it?”
Tell an agent
Update FCM provider {providerId} with service account {serviceAccountJSON}.
Set enabled to {enabled} on FCM provider {providerId}.
POST /messaging/providers/mailgun Add a Mailgun email provider · Create Mailgun provider #
Ask an LLM
“How do I send Appwrite emails through Mailgun?”
“Does the Mailgun provider support the EU region?”
Tell an agent
Add a Mailgun provider {name} with ID {providerId} for domain {domain}.
Create Mailgun provider {providerId} named {name} sending from {fromEmail} with API key {apiKey}.
PATCH /messaging/providers/mailgun/{providerId} Update a Mailgun provider · Update Mailgun provider #
Ask an LLM
“Can I change the sending domain on my existing Mailgun provider?”
“How do I rotate the API key on a Mailgun provider?”
Tell an agent
Change Mailgun provider {providerId} to domain {domain}.
Rotate the API key on Mailgun provider {providerId} to {apiKey}.
POST /messaging/providers/msg91 Add an MSG91 SMS provider · Create Msg91 provider #
Ask an LLM
“Can my project deliver SMS through MSG91?”
“Which template and sender ID does an MSG91 provider need?”
Tell an agent
Add an MSG91 provider {name} with ID {providerId}.
Create MSG91 provider {providerId} named {name} with template {templateId} and sender {senderId}.
PATCH /messaging/providers/msg91/{providerId} Update an MSG91 provider · Update Msg91 provider #
Ask an LLM
“Can I point my existing MSG91 provider at a different template?”
“How do I replace the auth key on an MSG91 provider?”
Tell an agent
Switch MSG91 provider {providerId} to template {templateId}.
Update the auth key of MSG91 provider {providerId} to {authKey}.
POST /messaging/providers/resend Add a Resend email provider · Create Resend provider #
Ask an LLM
“Can project emails go out through Resend?”
“Can I set a reply-to address when I add a Resend provider?”
Tell an agent
Add a Resend provider {name} with ID {providerId}.
Create Resend provider {providerId} named {name} sending from {fromEmail} with API key {apiKey}.
PATCH /messaging/providers/resend/{providerId} Update a Resend provider · Update Resend provider #
Ask an LLM
“Can I change the from address on my existing Resend provider?”
“How do I rotate the API key on a Resend provider?”
Tell an agent
Change the sender of Resend provider {providerId} to {fromEmail}.
Update Resend provider {providerId} with API key {apiKey}.
POST /messaging/providers/sendgrid Add a SendGrid email provider · Create Sendgrid provider #
Ask an LLM
“How do I send Appwrite emails through SendGrid?”
“What does a new SendGrid provider need besides an API key?”
Tell an agent
Add a SendGrid provider {name} with ID {providerId}.
Create SendGrid provider {providerId} named {name} sending as {fromName} <{fromEmail}> with API key {apiKey}.
PATCH /messaging/providers/sendgrid/{providerId} Update a SendGrid provider · Update Sendgrid provider #
Ask an LLM
“Can I change the reply-to address on my existing SendGrid provider?”
“How do I rotate the API key on a SendGrid provider?”
Tell an agent
Set the reply-to of SendGrid provider {providerId} to {replyToEmail}.
Update SendGrid provider {providerId} with API key {apiKey}.
POST /messaging/providers/ses Add an Amazon SES email provider · Create Amazon SES provider #
Ask an LLM
“Can I deliver my project's email with Amazon SES?”
“Which AWS region and keys does a new SES provider need?”
Tell an agent
Add an Amazon SES provider {name} with ID {providerId} in region {region}.
Create SES provider {providerId} named {name} with access key {accessKey} and secret {secretKey}.
PATCH /messaging/providers/ses/{providerId} Update an Amazon SES provider · Update Amazon SES provider #
Ask an LLM
“Can I move my existing Amazon SES provider to a different region?”
“How do I rotate the AWS keys on an SES provider?”
Tell an agent
Move SES provider {providerId} to region {region}.
Update SES provider {providerId} with access key {accessKey} and secret {secretKey}.
POST /messaging/providers/smtp Add an SMTP email provider · Create SMTP provider #
Ask an LLM
“Can I send project emails through my own SMTP server?”
“Which encryption options does a new SMTP provider support?”
Tell an agent
Add an SMTP provider {name} with ID {providerId} on host {host}.
Create SMTP provider {providerId} named {name} at {host}:{port} logging in as {username}.
PATCH /messaging/providers/smtp/{providerId} Update an SMTP provider · Update SMTP provider #
Ask an LLM
“How do I change the host or port of my existing SMTP provider?”
“Can I update the SMTP password without recreating the provider?”
Tell an agent
Point SMTP provider {providerId} at host {host} port {port}.
Change the password on SMTP provider {providerId} to {password}.
POST /messaging/providers/telesign Add a Telesign SMS provider · Create Telesign provider #
Ask an LLM
“Is Telesign supported as an SMS channel for my project?”
“What customer ID and key does a new Telesign provider need?”
Tell an agent
Add a Telesign provider {name} with ID {providerId}.
Create Telesign provider {providerId} named {name} for customer {customerId} sending from {from}.
PATCH /messaging/providers/telesign/{providerId} Update a Telesign provider · Update Telesign provider #
Ask an LLM
“Can I change the sender number on my existing Telesign provider?”
“How do I rotate the API key on a Telesign provider?”
Tell an agent
Change the sender of Telesign provider {providerId} to {from}.
Update Telesign provider {providerId} with API key {apiKey}.
POST /messaging/providers/textmagic Add a Textmagic SMS provider · Create Textmagic provider #
Ask an LLM
“Can I route my app's text messages through Textmagic?”
“Which username and key does a new Textmagic provider need?”
Tell an agent
Add a Textmagic provider {name} with ID {providerId}.
Create Textmagic provider {providerId} named {name} for user {username} sending from {from}.
PATCH /messaging/providers/textmagic/{providerId} Update a Textmagic provider · Update Textmagic provider #
Ask an LLM
“Can I change the sender on my existing Textmagic provider?”
“How do I update the Textmagic username or API key?”
Tell an agent
Change the sender of Textmagic provider {providerId} to {from}.
Update Textmagic provider {providerId} with username {username} and API key {apiKey}.
POST /messaging/providers/twilio Add a Twilio SMS provider · Create Twilio provider #
Ask an LLM
“How do I send SMS from my Appwrite project using Twilio?”
“What account SID and token does a new Twilio provider need?”
Tell an agent
Add a Twilio provider {name} with ID {providerId}.
Create Twilio provider {providerId} named {name} for account {accountSid} sending from {from}.
PATCH /messaging/providers/twilio/{providerId} Update a Twilio provider · Update Twilio provider #
Ask an LLM
“Can I change the from number on my existing Twilio provider?”
“How do I rotate the auth token on a Twilio provider?”
Tell an agent
Change the sender of Twilio provider {providerId} to {from}.
Update Twilio provider {providerId} with auth token {authToken}.
POST /messaging/providers/vonage Add a Vonage SMS provider · Create Vonage provider #
Ask an LLM
“Is it possible to deliver SMS with Vonage?”
“What API key and secret does a new Vonage provider need?”
Tell an agent
Add a Vonage provider {name} with ID {providerId}.
Create Vonage provider {providerId} named {name} with API key {apiKey} sending from {from}.
PATCH /messaging/providers/vonage/{providerId} Update a Vonage provider · Update Vonage provider #
Ask an LLM
“Can I change the sender on my existing Vonage provider?”
“How do I rotate the API secret on a Vonage provider?”
Tell an agent
Change the sender of Vonage provider {providerId} to {from}.
Update Vonage provider {providerId} with API secret {apiSecret}.
GET /messaging/providers/{providerId} Get one messaging provider · Get provider #
Ask an LLM
“Is a particular messaging provider enabled, and what type is it?”
“How do I look up a single provider's settings by ID?”
Tell an agent
Show messaging provider {providerId}.
Get the type and status of provider {providerId}.
DELETE /messaging/providers/{providerId} Delete a messaging provider · Delete provider #
Ask an LLM
“How do I remove an email, SMS or push provider I no longer use?”
“Can I delete any messaging provider regardless of its type?”
Tell an agent destructive · confirm first
Delete messaging provider {providerId}.
Remove provider {providerId} from this project.
GET /messaging/topics List messaging topics · List topics #
Ask an LLM
“What messaging topics exist in my project?”
“Can I search topics by name?”
Tell an agent
List all messaging topics.
Search topics for {search}.
POST /messaging/topics Create a messaging topic · Create topic #
Ask an LLM
“How do I create a topic so I can broadcast to a group of users?”
“Can I control who is allowed to subscribe to a new topic?”
Tell an agent
Create topic {name} with ID {topicId}.
Create topic {topicId} called {name} that {subscribe} can subscribe to.
GET /messaging/topics/{topicId} Get one messaging topic · Get topic #
Ask an LLM
“What are the details of a particular topic?”
“Where do I look up a single topic by its ID?”
Tell an agent
Show topic {topicId}.
Get the name and settings of topic {topicId}.
PATCH /messaging/topics/{topicId} Rename a topic or change who can subscribe · Update topic #
Ask an LLM
“Can I rename an existing topic?”
“How do I change the subscribe permissions on a topic?”
Tell an agent
Rename topic {topicId} to {name}.
Let {subscribe} subscribe to topic {topicId}.
DELETE /messaging/topics/{topicId} Delete a messaging topic · Delete topic #
Ask an LLM
“How do I get rid of a topic I no longer broadcast to?”
“Can I delete a topic by its ID?”
Tell an agent destructive · confirm first
Delete topic {topicId}.
Remove the messaging topic {topicId}.
GET /messaging/topics/{topicId}/subscribers List a topic's subscribers · List subscribers #
Ask an LLM
“Who is subscribed to a particular topic?”
“Can I search a topic's subscriber list?”
Tell an agent
List the subscribers of topic {topicId}.
Search subscribers of topic {topicId} for {search}.
POST /messaging/topics/{topicId}/subscribers Subscribe a target to a topic · Create subscriber #
Ask an LLM
“How do I add a user's device or email target to a topic?”
“What does a new topic subscriber need, a target or a user?”
Tell an agent
Subscribe target {targetId} to topic {topicId} as subscriber {subscriberId}.
Add target {targetId} to topic {topicId} with subscriber ID {subscriberId}.
GET /messaging/topics/{topicId}/subscribers/{subscriberId} Get one topic subscriber · Get subscriber #
Ask an LLM
“Which target does a particular topic subscriber point to?”
“How do I look up one subscriber on a topic?”
Tell an agent
Show subscriber {subscriberId} on topic {topicId}.
Get the target behind subscriber {subscriberId} of topic {topicId}.
DELETE /messaging/topics/{topicId}/subscribers/{subscriberId} Unsubscribe from a topic · Delete subscriber #
Ask an LLM
“How do I remove someone from a topic so they stop getting its messages?”
“Can I unsubscribe a single target from a topic?”
Tell an agent destructive · confirm first
Remove subscriber {subscriberId} from topic {topicId}.
Unsubscribe {subscriberId} from topic {topicId}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/appwrite:appwrite-messaging-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

appwrite-messaging-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  title: Appwrite Messaging API
  description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to https://appwrite.io/docs
  termsOfService: https://appwrite.io/policy/terms
  contact:
    name: Appwrite Team
    url: https://appwrite.io/support
    email: team@appwrite.io
  license:
    name: BSD-3-Clause
    url: https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE
servers:
- url: https://cloud.appwrite.io/v1
  description: Appwrite Cloud endpoint.
- url: https://{region}.cloud.appwrite.io/v1
  description: Appwrite Cloud regional endpoint. Replace `{region}` with your project region.
  variables:
    region:
      default: fra
      description: Appwrite Cloud region.
tags:


# --- truncated at 32 KB (143 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appwrite/refs/heads/main/openapi/appwrite-messaging-api-openapi.yml