Wasend

Send Image Message

Send an image message to a WhatsApp contact

Send Image Message

Send an image message to a WhatsApp contact with an optional caption.

Endpoint

POST /sendImage

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
sessionstringYesThe session ID
tostringYesRecipient's phone number in international format (e.g., "+1234567890")
urlstringNo*URL of the image to send
datastringNo*Base64 encoded image data
captionstringNoCaption for the image

* Either url or data must be provided

Response

{
  "id": "string",
  "to": "string",
  "content": "string",
  "type": "image",
  "timestamp": "string",
  "status": "string",
  "fromMe": boolean,
  "sender": "string",
  "recipient": "string"
}

Response Fields

FieldTypeDescription
idstringUnique identifier for the message
tostringThe recipient's phone number or group JID
contentstringContent of the message (e.g., image URL/ref)
typestringType of the message (always "image")
timestampstringWhen the message was sent
statusstringCurrent status of the message
fromMebooleanWhether the message was sent by you
senderstringSender's phone number
recipientstringThe message recipient (details may vary)

Examples

# Send an image with URL
curl -X POST "https://api.wasend.dev/sendImage" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "sessionId",
    "to": "+1234567890",
    "url": "https://example.com/image.jpg",
    "caption": "Check out this image!"
  }'

# Send an image with base64 data
curl -X POST "https://api.wasend.dev/sendImage" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "sessionId",
    "to": "+1234567890",
    "data": "base64_encoded_image_data",
    "caption": "Image from base64 data"
  }'
import { WasendClient } from '@wasend/core';

const client = new WasendClient({
  apiKey: 'YOUR_API_KEY',
  baseUrl: 'https://api.wasend.dev'
});

// Send an image with URL
const imageMessage = await client.sendImage({
  session: "sessionId",
  to: "+1234567890",
  url: "https://example.com/image.jpg",
  caption: "Check out this image!"
});

// Send an image with base64 data
const imageData = "base64_encoded_image_data";
const imageMessage2 = await client.sendImage({
  session: "sessionId",
  to: "+1234567890",
  data: imageData,
  caption: "Image from base64 data"
});
const { WasendClient } = require('@wasend/core');

const client = new WasendClient({
  apiKey: 'YOUR_API_KEY',
  baseUrl: 'https://api.wasend.dev'
});

// Send an image with URL
const imageMessage = await client.sendImage({
  session: "sessionId",
  to: "+1234567890",
  url: "https://example.com/image.jpg",
  caption: "Check out this image!"
});
from wasend import WasendClient

client = WasendClient(
    api_key='YOUR_API_KEY',
    base_url='https://api.wasend.dev'
)

# Send an image with URL
image_message = client.send_image(
    session="sessionId",
    to="+1234567890",
    url="https://example.com/image.jpg",
    caption="Check out this image!"
)
package main

import (
	"fmt"
	"github.com/wasenddev/wasend-sdk-go/wasendcore"
)

func StringPtr(s string) *string    { return &s }
func Float64Ptr(f float64) *float64 { return &f }

func main() {
	client := wasendcore.NewWasendClient(&wasendcore.WasendConfig{
		ApiKey:  StringPtr("YOUR_API_KEY"),
		BaseUrl: StringPtr("https://api.wasend.dev"),
	})

	// Send an image with URL
	imageMessage := client.SendImage(&wasendcore.MessageImageRequest{
		Session:  StringPtr("sessionId"),
		To:       StringPtr("+1234567890"),
		URL:      StringPtr("https://example.com/image.jpg"),
		Caption:  StringPtr("Check out this image!"),
	})
	fmt.Printf("Image message sent: %+v\n", imageMessage)

	// Send an image with base64 data
	imageData := "base64_encoded_image_data"
	imageMessage2 := client.SendImage(&wasendcore.MessageImageRequest{
		Session:  StringPtr("sessionId"),
		To:       StringPtr("+1234567890"),
		Data:     StringPtr(imageData),
		Caption:  StringPtr("Image from base64 data"),
	})
	fmt.Printf("Image message from base64 sent: %+v\n", imageMessage2)
}
using Wasend.Core;

var config = new WasendConfig
{
    ApiKey = "YOUR_API_KEY"
};

var client = new WasendClient(config);

// Send an image with URL
var imageMessage = client.SendImage(new MessageImageRequest
{
    Session = "sessionId",
    To = "+1234567890",
    Url = "https://example.com/image.jpg",
    Caption = "Check out this image!"
});

// Send an image with base64 data
var imageData = "base64_encoded_image_data";
var imageMessage2 = client.SendImage(new MessageImageRequest
{
    Session = "sessionId",
    To = "+1234567890",
    Data = imageData,
    Caption = "Image from base64 data"
});
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        
        // Send an image with URL
        JSONObject requestBody = new JSONObject();
        requestBody.put("session", "sessionId");
        requestBody.put("to", "+1234567890");
        requestBody.put("url", "https://example.com/image.jpg");
        requestBody.put("caption", "Check out this image!");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.wasend.dev/sendImage"))
            .header("Authorization", "Bearer YOUR_API_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("Response: " + response.body());
    }
}
<?php

$url = 'https://api.wasend.dev/sendImage';
$data = [
    'session' => 'sessionId',
    'to' => '+1234567890',
    'url' => 'https://example.com/image.jpg',
    'caption' => 'Check out this image!'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.wasend.dev/sendImage')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
request['Content-Type'] = 'application/json'

request.body = {
  session: 'sessionId',
  to: '+1234567890',
  url: 'https://example.com/image.jpg',
  caption: 'Check out this image!'
}.to_json

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.body
import Foundation

let url = URL(string: "https://api.wasend.dev/sendImage")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let body: [String: Any] = [
    "session": "sessionId",
    "to": "+1234567890",
    "url": "https://example.com/image.jpg",
    "caption": "Check out this image!"
]

request.httpBody = try? JSONSerialization.data(withJSONObject: body)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let data = data {
        print(String(data: data, encoding: .utf8) ?? "")
    }
}
task.resume()
use reqwest;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::Client::new();
    
    let response = client
        .post("https://api.wasend.dev/sendImage")
        .header("Authorization", "Bearer YOUR_API_KEY")
        .header("Content-Type", "application/json")
        .json(&json!({
            "session": "sessionId",
            "to": "+1234567890",
            "url": "https://example.com/image.jpg",
            "caption": "Check out this image!"
        }))
        .send()
        .await?
        .text()
        .await?;

    println!("Response: {}", response);
    Ok(())
}

Error Codes

CodeDescription
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
404Not Found - Session or recipient not found
429Too many requests - Rate limit exceeded
500Internal server error

Notes

  • Phone numbers must be in international format (e.g., "+1234567890")
  • The @c.us suffix is automatically added by the API
  • Supported image formats: JPEG, PNG, GIF
  • Maximum image size: 16MB
  • Maximum caption length: 1024 characters
  • For URL-based images, the URL must be publicly accessible
  • For base64 data, the image must be properly encoded
  • For replies, the replyTo message ID must be valid and from the same chat