Server-side only
ASP.NET Core, Azure App Service, Functions. Never put the API key in Blazor WASM.

ASP.NET Core, Azure App Service, Minimal APIs. Send email and WhatsApp with Zindua.Sdk v1.1.1. Same API as Node, PHP, and Python.
dotnet add package Zindua.SdkStarter project
Minimal API sample with email and WhatsApp via Zindua.Sdk. Unzip, set your API key, run with dotnet run.
Server-side only. Never put ZINDUA_API_KEY in Blazor WebAssembly, SPA, or mobile apps. Use ASP.NET Core API routes as a BFF.
ASP.NET Core, Azure App Service, Functions. Never put the API key in Blazor WASM.

Email, E.164 WhatsApp, and template slugs validated locally before the HTTP call.

One SendAsync for both channels. Same templates as Node, PHP, and Python.

IHttpClientFactory + Options pattern. No RestSharp required.
services.AddZindua(configuration). Inject IZinduaClient anywhere.

Smoke-test with @zindua/cli before deploying .NET code.

Install, send, DI, Azure secrets, and CLI — pick a tab.
Email OTP
POSTMinimal API route that sends an email OTP with SendAsync.
Program.cs
1using Zindua;2using Zindua.DependencyInjection;3 4builder.Services.AddZindua(builder.Configuration);5 6app.MapPost("/auth/otp", async (IZinduaClient zindua, OtpRequest req) =>7{8 var result = await zindua.SendAsync(new ZinduaSendOptions9 {10 To = req.Email,11 Template = "otp-verification",12 Lang = "en",13 Variables = new Dictionary<string, string>14 {15 ["code"] = req.Code,16 ["appName"] = "MyShop",17 },18 });19 return Results.Ok(new { result.LogId });20});21 22record OtpRequest(string Email, string Code);From NuGet to production secrets.
NuGet install to Azure secrets.
Create a Zindua project
Sign up at zindua.run, create a project, copy the API key. Connect email and/or WhatsApp in the dashboard.
Methods and environment variables.
Parity with @zindua/sdk on Node.
SendAsync()
Queue email or WhatsApp message