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

Send emails with Dart

Install the Dart SDK from GitHub and call emails.send.

emails.send posts to POST /api/v1/emails. Pass teamId on the constructor. GET /users/me does not return a team id.

send.dart
1 final client = PostShiba("YOUR_API_KEY", teamId: "KjkAJW");
2
3 await client.emails.send({
4 "from": "hello@mail.example.com",
5 "to": ["you@example.com"],
6 "subject": "Hello",
7 "html": "<p>Hi</p>",
8 "text": "Hi",
9 });

Installation

pubspec.yaml
1 dependencies:
2 postshiba:
3 git:
4 url: https://github.com/postshiba/postshiba-dart.git

Open pull requests on postshiba/sdks.

Cluster send accepts Idempotency-Key and sandbox.

cluster.dart
1 await client.emails.sendOnCluster(
2 "NmQpXr",
3 {
4 "from": "hello@mail.example.com",
5 "to": ["you@example.com"],
6 "subject": "Hello",
7 "text": "Hi",
8 },
9 idempotencyKey: "idem-1",
10 sandbox: true,
11 );

Errors and throttling

Failed responses throw ApiException with error, field, message, and statusCode.

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