Beaco Python SDK
Official dependency-free Python SDK for events, templates, notifications, scheduled events, and suppressions.
- SDK guide: every method, with examples
- API reference and events
- Source and issues
uv add beaco # or: pip install beaco
import os
from beaco import Beaco
beaco = Beaco(os.environ["BEACO_API_KEY"])
event = beaco.events.publish(
"user.welcome",
[{"channels": ["email"], "email": "user@example.com"}],
inline={"subject": "Welcome", "html": "<h1>Welcome, Alice</h1>"},
)
# Optional sender: inline={..., "from_local": "orders", "from_name": "Winwell Orders",
# "reply_to": "support@example.com"}
template = beaco.templates.create("welcome", "email", "Hi {{ name }}")
beaco.templates.upsert_by_name("welcome", "<h1>Hi {{ name }}</h1>")
notification = beaco.notifications.retrieve("ntf_123")
scheduled = beaco.scheduled_events.create(
"renewal.reminder",
[{"channels": ["email"], "email": "user@example.com"}],
"2026-10-02T09:00:00Z",
template_name="renewal-reminder",
)
suppression = beaco.suppressions.create("email", "blocked@example.com")
Attachments
Attach files to an email event with attachments. Beaco never stores them: the email provider
downloads each url when sending, so the URL must stay reachable until delivery succeeds,
including retries. size_bytes is the size you declare; up to 10 files and 30 MB in total.
beaco.events.publish(
"invoice.issued",
[{"channels": ["email"], "email": "user@example.com"}],
inline={"subject": "Your invoice", "html": "<p>Invoice attached.</p>"},
attachments=[
{"filename": "invoice.pdf", "url": "https://files.example.com/a.pdf", "size_bytes": 48213}
],
)
Invalid attachments raise ValueError before any request is made. URLs must be publicly
reachable: private and internal addresses are refused.
Requires Python 3.9 or newer. This package is server-only: never expose a project API key in browser code.
Metadata
Release files for beaco 0.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beaco-0.2.6.tar.gz | 13.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beaco-0.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.4 kB
Release files / beaco-0.2.6.tar.gz
| Download URL | beaco-0.2.6.tar.gz |
|---|---|
| Size | 13.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
780c51a92d131e147e78659525142bf4cd8eac94ca6c0f6641f4008f7eddf223
|
|
BLAKE2b-256 checksum How to use checksums |
8a6a200bc3b502dc3042395df1fc1bbfbf20110a0d32c0644a85802d631f2ea7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / beaco-0.2.6-py3-none-any.whl
| Download URL | beaco-0.2.6-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7fc0737468430ae1a3fde6c0cd7c2132ff0f3e2b31eccab3192da046e1bf9f38
|
|
BLAKE2b-256 checksum How to use checksums |
e0ab1347b572adc2f668a62662714d256f37d684f524f395b9d4a8c860fec48f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|