
Research
/Security News
GlassWASM: WebAssembly Malware Found in Trojanized Open VSX Extensions
The trojanized extensions use TinyGo-compiled WebAssembly and Solana transaction memos to resolve command-and-control infrastructure.
Official .NET SDK for the Wazen WhatsApp API.
dotnet add package Wazen
Install-Package Wazen
using Wazen;
var wazen = new WazenClient("wz_your_api_key");
// Send a message
var message = await wazen.Messages.SendAsync("session-id", new SendMessageRequest
{
To = "+1234567890",
Type = MessageType.Text,
Content = "Hello from Wazen!"
});
// List sessions
var sessions = await wazen.Sessions.ListAsync();
// Check if a number is on WhatsApp
var result = await wazen.Contacts.CheckAsync("session-id", new CheckContactRequest
{
Phone = "+1234567890"
});
All resources are accessible as properties on the client instance.
await wazen.Sessions.CreateAsync();
await wazen.Sessions.ListAsync();
await wazen.Sessions.GetAsync("session-id");
await wazen.Sessions.DeleteAsync("session-id");
await wazen.Sessions.RestartAsync("session-id");
await wazen.Sessions.GetQrAsync("session-id");
await wazen.Sessions.FactoryResetAsync("session-id");
// Send text
await wazen.Messages.SendAsync("session-id", new SendMessageRequest
{
To = "+1234567890",
Type = MessageType.Text,
Content = "Hello!"
});
// Send image
await wazen.Messages.SendAsync("session-id", new SendMessageRequest
{
To = "+1234567890",
Type = MessageType.Image,
MediaUrl = "https://example.com/photo.jpg"
});
// Get message history
await wazen.Messages.ListAsync("session-id", new ListMessagesQuery
{
Direction = "outgoing",
Limit = 10
});
// Get single message
await wazen.Messages.GetAsync("session-id", "message-id");
await wazen.Groups.ListAsync("session-id");
await wazen.Groups.CreateAsync("session-id", new CreateGroupRequest
{
Subject = "Team Chat",
Participants = new[] { "+1234567890" }
});
await wazen.Groups.GetAsync("session-id", "group-id");
await wazen.Groups.UpdateAsync("session-id", "group-id", new UpdateGroupRequest
{
Subject = "New Name"
});
await wazen.Groups.LeaveAsync("session-id", "group-id");
await wazen.Groups.ManageParticipantsAsync("session-id", "group-id", new ManageParticipantsRequest
{
Action = ParticipantAction.Add,
Participants = new[] { "+0987654321" }
});
await wazen.Groups.SendMessageAsync("session-id", "group-id", new SendGroupMessageRequest
{
Type = MessageType.Text,
Content = "Hello group!"
});
await wazen.Channels.CreateAsync("session-id", new CreateChannelRequest
{
Name = "Product Updates",
Description = "Latest news"
});
await wazen.Channels.SendMessageAsync("session-id", "channel-id", new SendChannelMessageRequest
{
Type = MessageType.Text,
Content = "New release!"
});
// Check single number
await wazen.Contacts.CheckAsync("session-id", new CheckContactRequest
{
Phone = "+1234567890"
});
// Bulk check
await wazen.Contacts.BulkCheckAsync("session-id", new BulkCheckRequest
{
Phones = new[] { "+1234567890", "+0987654321" }
});
await wazen.Warming.StartAsync("session-id", new StartWarmingRequest
{
Contacts = new[]
{
new WarmingContact { Phone = "+1234567890", Name = "Alice" },
new WarmingContact { Phone = "+0987654321" }
}
});
await wazen.Warming.GetStatusAsync("session-id");
await wazen.Warming.PauseAsync("session-id");
await wazen.Warming.ResumeAsync("session-id");
await wazen.Warming.CancelAsync("session-id");
await wazen.Webhooks.CreateAsync(new CreateWebhookRequest
{
Url = "https://your-app.com/webhooks/wazen",
Events = new[] { WebhookEvent.MessageReceived, WebhookEvent.MessageDelivered }
});
await wazen.Webhooks.ListAsync();
await wazen.Webhooks.UpdateAsync("webhook-id", new UpdateWebhookRequest { Enabled = false });
await wazen.Webhooks.DeleteAsync("webhook-id");
await wazen.Webhooks.TestAsync("webhook-id");
await wazen.Webhooks.GetLogsAsync("webhook-id");
var account = await wazen.Account.GetAsync();
var usage = await wazen.Account.GetUsageAsync();
var key = await wazen.ApiKeys.CreateAsync(new CreateApiKeyRequest { Name = "new-key" });
await wazen.ApiKeys.ListAsync();
await wazen.ApiKeys.RevokeAsync("key-id");
var wazen = new WazenClient("wz_your_api_key", new WazenClientOptions
{
BaseUrl = "https://wazen.dev/api/v1", // default
Timeout = TimeSpan.FromSeconds(30) // default
});
using Wazen;
using Wazen.Exceptions;
try
{
await wazen.Messages.SendAsync("session-id", new SendMessageRequest
{
To = "+1234567890",
Type = MessageType.Text,
Content = "Hi"
});
}
catch (WazenApiException ex)
{
Console.WriteLine(ex.StatusCode); // HTTP status code
Console.WriteLine(ex.ErrorCode); // API error code
Console.WriteLine(ex.Message); // Error message
}
MIT
FAQs
Official .NET SDK for the Wazen WhatsApp API
We found that wazen demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The trojanized extensions use TinyGo-compiled WebAssembly and Solana transaction memos to resolve command-and-control infrastructure.

Security News
Anthropic says the directive cited national security concerns over a narrow jailbreak, but offered no specific technical details.

Security News
A network of 152 Chrome live wallpaper extensions hid ad tracking and made extension-driven traffic look like Google search clicks.