Send Automated WhatsApp Messages (Wassenger API)
Send image message
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a text message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "Hello world, this is a sample message" // Message content }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send video messages
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a video message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This is a caption for a video message", // Add a caption for the video media = new { url = "https://download.samplelib.com/mp4/sample-5s.mp4", // URL of the video file expiration = "7d" // Set expiration time (e.g., 7 days) } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send document messages
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a PDF with expiration var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number media = new { url = "https://www.africau.edu/images/default/sample.pdf", // URL of the PDF file expiration = "30d" // Set expiration time (e.g., 30 days) } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send audio voice record
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending an audio message (PTT) var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number media = new { url = "https://download.samplelib.com/mp3/sample-9s.mp3", // URL of the audio file format = "ptt" // Format type for audio message (PTT - Push to Talk) } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a media message with an uploaded file
- {{UPLOADED FILE ID}} : Replace this expression with the specific value
- You can upload the file here
- The file ID will look something like this: 57443b8773c036f2bae0cd96
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending an image message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This is a caption for an image message", // Caption for the image media = new { file = "{{UPLOADED FILE ID}}" // Replace with the actual uploaded file ID } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a GIF message
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a GIF message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This is a sample caption for a GIF message", // Caption for the GIF media = new { url = "https://i.giphy.com/vKHKDIdvxvN7vTAEOM.mp4", // URL of the GIF in MP4 format format = "gif" // Specify the media format } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a poll message
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add necessary headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for the poll var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number poll = new { name = "Vote for your favorite color", // Title of the poll options = new[] { "Red", "Green", "Blue", "Yellow", "Grey", "Black", "Orange", "Purple", "White" // Poll options } } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a scheduled date and time message
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with method type POST var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This is a scheduled message to be sent to a phone number in 10 minutes", deliverAt = "2024-12-02T13:52:32.396Z" // Replace with your desired delivery time (ISO 8601 format) }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response (optional) Console.WriteLine(response.Content);
Send dynamic native button messages
WhatsApp no longer accepts native button messages. Buttons messages will be automatically converted into raw text equivalent messages.
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a message with dynamic reply buttons var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This is a message with dynamic reply buttons", // Message content header = "Optional message header", // Optional header footer = "Optional message footer", // Optional footer buttons = new[] { new { id = "id1", text = "Say hello" }, new { id = "id2", text = "Say goodbye" }, new { id = "id3", text = "Get help" } } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a list of items to select from
WhatsApp no longer accepts list messages. List messages will be automatically converted into raw text equivalent messages.
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a list message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number list = new { button = "Select one option", // Button text description = "Select which type of vehicle you are interested in", // Description of the list title = "Motor Business", // Title of the list footer = "Since 1990", // Footer text sections = new[] { new { title = "Select a car type", rows = new[] { new { title = "Coupe", id = "a1", description = "This a description for coupe cars" }, new { title = "Sports", id = "a2", description = "This a description for sports cars" }, new { title = "SUV", id = "a3", description = "This a description for SUV cars" }, new { title = "Minivan", id = "a4", description = "This a description for minivan cars" }, new { title = "Crossover", id = "a5", description = "This a description for crossover cars" }, new { title = "Wagon", id = "a6", description = "This a description for wagon cars" } } }, new { title = "Select a motorbike type", rows = new[] { new { title = "Touring", id = "b1", description = "Designed to excel at covering long distances" }, new { title = "Cruiser", id = "b2", description = "Harley-Davidsons largely define the cruiser category" }, new { title = "Standard", id = "b3", description = "Motorcycle intended for use on streets and commuting" } } } } } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a message with text formatting
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a formatted text message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "This message is formatted using _italic format_, *bold format*, ~strikethrough format~ and ```monospace format```" }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a message with location coordinates
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a location message with coordinates var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number location = new { coordinates = new[] { 40.7583748, -73.9891184 } // Latitude and longitude }, message = "This is a location message using coordinates" // Optional message }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send location message with address
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a location message with an address var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number location = new { address = "Santa Claus Main Post Office, Tähtikuja 1, 96930 Arctic Circle, Finland" // Address }, message = "This is a location message using an address" // Optional message }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a message with variables
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a personalized message template var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = @"Dear {{ contact.name | customer }}, Thanks for contacting us! We will answer your query shortly. Your message was received on {{ date.humanize.full }}" // Template with placeholders }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send a message with a URL
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a message with a link var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "Check out this cool link: https://www.youtube.com" // Message with link }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Send contact card messages
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending contact information var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number contacts = new[] { new { phone = "+1234567890", name = "John Doe" } // Contact details } }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Reply to a message
- {{MESSAGE ID}} : Replace with the actual WhatsApp message ID to forward (18, 20, 22 or 32 hexadecimal value)
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; // Create a RestClient instance with the API endpoint var client = new RestClient("https://api.wassenger.com/v1/messages"); // Set up the request with the POST method var request = new RestRequest(Method.POST); // Add headers for content type and authentication request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key // Define the request body for sending a reply message var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number quote = "{{MESSAGE ID}}", // Replace with the actual message ID message = "This message is a reply to another message within the same chat" // Reply message content }; // Add the request body as JSON request.AddJsonBody(requestBody); // Execute the request and store the response IRestResponse response = client.Execute(request); // Output the response content (optional for debugging) Console.WriteLine(response.Content);
Forward a message
- {{MESSAGE ID}} : Replace with the actual WhatsApp message ID to reply to (18, 20, 22 or 32 hexadecimal value)
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number forward = new { message = "{{MESSAGE ID}}", // Replace with the message ID to forward chat = "+1234567890" // Replace with the chat ID to forward to }, message = "The given message by ID will be forwarded to another chat" }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a catalogue message
- {{PRODUCT CATALOG ID TO SEND}} : Replace this expression with the specific value
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number product = "{{PRODUCT CATALOG ID TO SEND}}" // Replace with the product catalog ID }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message in real-time with no enqueueing
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { live = true, phone = "+1234567890", message = "This message will be delivered in real-time if the session is online, otherwise the API will return an error" }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message with maximum retries
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { retries = 2, phone = "+1234567890", message = "This message will be retried only twice. If the delivery fails twice, it will be flagged as deleted and removed from the queue" }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message with the expiration time
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { expiration = new { seconds = 90 }, phone = "+1234567890", message = "This message will be deleted if it cannot be delivered within 90 seconds after being queued. This is useful for time-sensitive messages." }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message within a time and day range
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { phone = "+1234567890", message = "Restricted message example that will only be delivered between 9 am to 5 pm from Monday to Friday.", restrict = new { start = 9, end = 17, timezone = "CEST", weekdays = new[] { 1, 2, 3, 4, 5 } } }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message reaction
- {{WHATSAPP MESSAGE ID}} : Replace this expression with the specific value
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { phone = "+1234567890", reaction = "👍", reactionMessage = "{{WHATSAPP MESSAGE ID}}" // Replace with the message ID }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Remove message reaction:
- {{WHATSAPP MESSAGE ID}} : Replace this expression with the particular value
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); var requestBody = new { phone = "+1234567890", reaction = "-", // Use "-" to remove a reaction reactionMessage = "{{MESSAGE WHATSAPP ID}}" // Replace with the message ID }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message on behalf of an agent and assign a chat
- {{USER ID}} : Replace with the actual user ID (24 hexadecimal value)
- {{ASSIGNED USER ID}} : Replace with the actual user ID to assign the chat (24 hexadecimal value)
// Required: RestSharp package // Documentation: https://restsharp.dev // Installation: https://www.nuget.org/packages/RestSharp using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number agent = "{{USER ID}}", // Replace with the agent's user ID message = "This message is sent via API on behalf of an agent." }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message and resolve the chat
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "Once this message is delivered, the chat will be reported as resolved in the web chat interface.", actions = new[] { new { action = "chat:resolve" } } }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Send a message and add a chat label
using RestSharp; var client = new RestClient("https://api.wassenger.com/v1/messages"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Token", "ENTER API KEY HERE"); // Replace with your API key var requestBody = new { phone = "+1234567890", // Replace with the recipient's phone number message = "Once this message is delivered, the given labels will be added to the chat automatically.", actions = new[] { new { action = "labels:add", params = new { labels = new[] { "new", "sales" } // Labels to be added } } } }; request.AddJsonBody(requestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);