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

Send emails with Elixir

Install the Elixir SDK from GitHub and call Emails.send.

PostShiba.Emails.send posts to POST /api/v1/emails. PostShiba.new/3 sends JSON to https://app.postshiba.com/api/v1 with a Bearer token. Pass the team id as the third argument. GET /users/me does not return one.

send.exs
1 client = PostShiba.new("YOUR_API_KEY", nil, "KjkAJW")
2
3 PostShiba.Emails.send(client, %{
4 "from" => "hello@mail.example.com",
5 "to" => ["you@example.com"],
6 "subject" => "PostShiba test",
7 "text" => "hello from PostShiba",
8 "html" => "<p>hello from PostShiba</p>"
9 })

Installation

Add to mix.exs.

mix.exs
1 {:postshiba, git: "https://github.com/postshiba/postshiba-elixir.git"}

Not on Hex yet. Open pull requests on postshiba/sdks.

Cluster send can set Idempotency-Key and "sandbox": true.

cluster.exs
1 PostShiba.Emails.send_on_cluster(client, "NmQpXr", body, idempotency_key: "idem-1", sandbox: true)

Errors and throttling

Failed responses raise %PostShiba.Error{} 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 %PostShiba.Error{} and check error.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