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.5
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.5.tar.gz | 13.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beaco-0.2.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.4 kB
Release files / beaco-0.2.5.tar.gz
| Download URL | beaco-0.2.5.tar.gz |
|---|---|
| Size | 13.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
43bfcfe5e19a71ba733ff42d374ff90feaf402403b2d49c9ae8cca0eb213d349
|
|
BLAKE2b-256 checksum How to use checksums |
67cbe6b4a1854097dcf4bd921c557a500b0043820394715d2c7698f8b2ed11dc
|
| 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.5-py3-none-any.whl
| Download URL | beaco-0.2.5-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
923aed18048d6793fb1cc674338909698bafc0ce7d41782d0bef7bd1236bd4ad
|
|
BLAKE2b-256 checksum How to use checksums |
059ad4d0b9dc05c368248c21e7b80b44f7a2f480ee3950d2938ec0c322c67d06
|
| 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}
|