Access is invite-only during beta. Once invited, create a key to personalize these examples. Production sending requires a separate review.

Send emails with .NET

Install the .NET SDK from GitHub and call Emails.SendAsync.

Emails.SendAsync posts JSON to https://app.postshiba.com with a Bearer token. Pass teamId for team-scoped routes. GET /users/me does not return a team id.

send.cs
1 var client = new Client("YOUR_API_KEY", teamId: "KjkAJW");
2
3 await client.Emails.SendAsync(new Dictionary<string, object?>
4 {
5 ["from"] = "hello@mail.example.com",
6 ["to"] = new[] { "you@example.com" },
7 ["subject"] = "Hi",
8 ["text"] = "hello"
9 });

Installation

Not on NuGet yet. Clone postshiba/postshiba-dotnet and add a project reference to src/PostShiba/PostShiba.csproj. Open pull requests on postshiba/sdks.

cluster.cs
1 await client.Emails.SendOnClusterAsync("NmQpXr", body, idempotencyKey: "idem-1", sandbox: true);

Errors and throttling

Failed responses throw ApiException with Error, Field, and Message.

A 429 with error throttled means the cluster hit its hourly throttle or its 24-hour cap. Do not retry that send immediately. Immediate retries hit the same cap.

The client does not delay for you. In a queued job, catch ApiException and check e.Error == "throttled" before sending again.

See Errors.

About

PostShiba is the email platform that powers Bento behind the scenes. You can build your own products, like Bento, on top of it.

© 2026 PostShiba by Backpack Internet Pty. Ltd. All rights reserved.

The same policies that govern Bento are applied to PostShiba Privacy | Terms | Security