Wasend

Set Group Name (Subject)

Update the name (subject) of a WhatsApp group.

Set Group Name (Subject)

This endpoint allows you to change the name (subject) of a WhatsApp group.

Note: The term "name" and "subject" are often used interchangeably for WhatsApp groups. This endpoint specifically updates what is displayed as the group's primary identifier.

Endpoint

PUT /{sessionId}/groups/{groupId}/name

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
Content-TypestringYesapplication/json

Path Parameters

ParameterTypeRequiredDescription
sessionIdstringYesThe session ID
groupIdstringYesThe group ID

Request Body

Refer to NameRequest (or similar, like SubjectRequest if name is an alias) in API.md.

FieldTypeRequiredDescription
namestringYesThe new name (subject) for the group. Max 25 characters.

Response

Returns a NameResponse (or similar, like SubjectResponse). Refer to API.md.

{
  "success": true,
  "name": "New Awesome Group Name",
  "message": "Group name updated successfully."
}

Examples

curl -X PUT "https://api.wasend.dev/YOUR_SESSION_ID/groups/YOUR_GROUP_ID/name" \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "name": "New Awesome Group Name"
  }'
import { WasendClient, WasendConfig, SubjectRequest, SubjectResponse } from '@wasend/core'; // Assuming SubjectRequest/Response based on API.md patterns

const config = new WasendConfig({ apiKey: 'YOUR_API_KEY' });
const client = new WasendClient(config);

const sessionId = 'YOUR_SESSION_ID';
const groupId = 'YOUR_GROUP_ID';

async function setGroupNameExample() {
  const requestBody: SubjectRequest = { // Using SubjectRequest as per API.md for /subject endpoint
    subject: "New Awesome Group Name"
  };

  try {
    // Assuming method is setGroupName or setGroupSubject. If API.md has NameRequest/NameResponse for /name, adjust type
    const response: SubjectResponse = await client.setGroupName(sessionId, groupId, requestBody); 
    if (response.success) {
      console.log('Successfully set group name:', response.subject); // Or response.name
      console.log(response.message);
    } else {
      console.error('Failed to set group name:', response.error);
    }
  } catch (error) {
    console.error('Error setting group name:', error);
  }
}

setGroupNameExample();
const { WasendClient, WasendConfig } = require('@wasend/core'); // Adjust imports

const config = new WasendConfig({ apiKey: 'YOUR_API_KEY' });
const client = new WasendClient(config);

const sessionId = 'YOUR_SESSION_ID';
const groupId = 'YOUR_GROUP_ID';

async function setGroupNameExample() {
  const requestBody = {
    subject: "New Awesome Group Name" // Using subject based on SubjectRequest
  };

  try {
    const response = await client.setGroupName(sessionId, groupId, requestBody);
    if (response.success) {
      console.log('Successfully set group name:', response.subject); // or response.name
      console.log(response.message);
    } else {
      console.error('Failed to set group name:', response.error);
    }
  } catch (error) {
    console.error('Error setting group name:', error);
  }
}

setGroupNameExample();
from wasend_sdk import WasendClient, WasendConfig # Adjust imports

config = WasendConfig(api_key='YOUR_API_KEY')
client = WasendClient(config)

session_id = 'YOUR_SESSION_ID'
group_id = 'YOUR_GROUP_ID'

request_body = {
    'subject': "New Awesome Group Name"  # Using subject based on SubjectRequest
}

try:
    response = client.set_group_name(session_id=session_id, group_id=group_id, request=request_body)
    if response.success:
        print(f"Successfully set group name: {response.subject}") # or response.name
        print(response.message)
    else:
        print(f"Failed to set group name: {response.error}")
except Exception as e:
    print(f"Error setting group name: {e}")
package main

import (
	"fmt"
	"log"

	"github.com/wasenddev/wasend-sdk-go/wasendcore" // Correct import path
)

func main() {
	config := &wasendcore.WasendConfig{
		ApiKey: "YOUR_API_KEY",
	}
	client := wasendcore.NewWasendClient(config)

	sessionId := "YOUR_SESSION_ID"
	groupId := "YOUR_GROUP_ID"

	requestBody := &wasendcore.SubjectRequest{ // Using SubjectRequest as per API.md
		Subject: "New Awesome Group Name",
	}

	// Method name should align with this operation, e.g., SetGroupName or SetGroupSubject
	response, err := client.SetGroupName(sessionId, groupId, requestBody) 
	if err != nil {
		log.Fatalf("Error setting group name: %v", err)
	}

	if response.Success {
		fmt.Printf("Successfully set group name: %s\\n", response.Subject) // or response.Name
		fmt.Println(response.Message)
	} else {
		fmt.Printf("Failed to set group name: %s\\n", response.Error)
	}
}
using System;
using Wasend.Core; // Adjust imports for WasendConfig, SubjectRequest, SubjectResponse

public class SetGroupNameExample
{
    public static void Main(string[] args)
    {
        var config = new WasendConfig { ApiKey = "YOUR_API_KEY" };
        var client = new WasendClient(config);

        var sessionId = "YOUR_SESSION_ID";
        var groupId = "YOUR_GROUP_ID";

        var requestBody = new SubjectRequest // Using SubjectRequest as per API.md
        {
            Subject = "New Awesome Group Name"
        };

        try
        {
            var response = client.SetGroupName(sessionId, groupId, requestBody);
            if (response.Success)
            {
                Console.WriteLine($"Successfully set group name: {response.Subject}"); // or response.Name
                Console.WriteLine(response.Message);
            }
            else
            {
                Console.WriteLine($"Failed to set group name: {response.Error}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error setting group name: {ex.Message}");
        }
    }
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;

public class SetGroupNameHttp {
    public static void main(String[] args) {
        String sessionId = "YOUR_SESSION_ID";
        String groupId = "YOUR_GROUP_ID";
        String apiKey = "YOUR_API_KEY";
        String baseUrl = "https://api.wasend.dev";

        // If endpoint is /name, body should be { "name": "..." }
        // If it internally maps to /subject, body might be { "subject": "..." }
        // For this example, sticking to `name` as per endpoint.
        String requestPayload = "{\"name\": \"New Awesome Group Name\"}"; 

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(baseUrl + "/" + sessionId + "/groups/" + groupId + "/name"))
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json")
                .PUT(BodyPublishers.ofString(requestPayload))
                .build();

        try {
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println("Response status: " + response.statusCode());
            System.out.println("Response body: " + response.body());
            // Parse JSON response for success and name/subject
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
<?php
$sessionId = 'YOUR_SESSION_ID';
$groupId = 'YOUR_GROUP_ID';
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://api.wasend.dev';

$payload = json_encode([
    'name' => 'New Awesome Group Name' // Matching endpoint /name
]);

$ch = curl_init($baseUrl . '/' . $sessionId . '/groups/' . $groupId . '/name');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $apiKey,
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP status: " . $httpCode . "\\n";
echo "Response: " . $response . "\\n";
// Parse JSON response
?>
require 'net/http'
require 'uri'
require 'json'

session_id = 'YOUR_SESSION_ID'
group_id = 'YOUR_GROUP_ID'
api_key = 'YOUR_API_KEY'
base_url = 'https://api.wasend.dev'

uri = URI("#{base_url}/#{session_id}/groups/#{group_id}/name")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https')

request = Net::HTTP::Put.new(uri.path, {
  'Authorization' => "Bearer #{api_key}",
  'Content-Type' => 'application/json'
})
request.body = {
  name: "New Awesome Group Name" # Matching endpoint /name
}.to_json

response_data = http.request(request)

puts "Response status: #{response_data.code}"
puts "Response body: #{response_data.body}"
# Parse JSON response
import Foundation

#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

let sessionId = "YOUR_SESSION_ID"
let groupId = "YOUR_GROUP_ID"
let apiKey = "YOUR_API_KEY"
let baseUrl = "https://api.wasend.dev"

guard let url = URL(string: "\(baseUrl)/\(sessionId)/groups/\(groupId)/name") else {
    print("Invalid URL")
    exit(1)
}

var request = URLRequest(url: url)
request.httpMethod = "PUT"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let payload: [String: Any] = [
    "name": "New Awesome Group Name" // Matching endpoint /name
]

do {
    request.httpBody = try JSONSerialization.data(withJSONObject: payload, options: [])
} catch {
    print("Error serializing JSON: \(error)")
    exit(1)
}

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }
    guard let httpResponse = response as? HTTPURLResponse else {
        print("Invalid response")
        return
    }
    print("Response status code: \(httpResponse.statusCode)")
    if let data = data, let responseBody = String(data: data, encoding: .utf8) {
        print("Response body: \(responseBody)")
        // Parse JSON response
    }
    #if os(macOS) || os(Linux)
    CFRunLoopStop(CFRunLoopGetCurrent())
    #endif
}

task.resume()

#if os(macOS) || os(Linux)
CFRunLoopRun()
#endif
use reqwest::Client;
use serde_json::json;
use tokio;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let session_id = "YOUR_SESSION_ID";
    let group_id = "YOUR_GROUP_ID";
    let api_key = "YOUR_API_KEY";
    let base_url = "https://api.wasend.dev";
    let client = Client::new();

    let payload = json!({
        "name": "New Awesome Group Name" // Matching endpoint /name
    });

    let response = client.put(format!("{}/{}/groups/{}/name", base_url, session_id, group_id))
        .bearer_auth(api_key)
        .json(&payload)
        .send()
        .await?;

    println!("Status: {}", response.status());
    let body = response.text().await?;
    println!("Body: {}", body);
    // Parse JSON response

    Ok(())
}

Response Fields

FieldTypeDescription
successbooleanWhether the operation was successful.
namestringThe updated group name (subject).
messagestringA confirmation message.
errorstringOptional. Error message if the request fails.

Error Codes

CodeDescription
400Bad Request - Invalid parameters (e.g., missing name, name too long/short).
401Unauthorized - Invalid or missing API key.
403Forbidden - User is not an admin or group settings prevent changes.
404Not Found - Session or group not found.
429Too Many Requests - Rate limit exceeded.
500Internal Server Error.

Notes

  • The group name (subject) has a maximum length, typically 25 characters, enforced by WhatsApp. The API may also enforce this or a similar limit.
  • Only group administrators can usually change the group name, unless group settings (infoAdminOnly) allow all participants.
  • All group members will be notified of the name change if successful.
  • Emojis and special characters can often be used in group names.