Python email API
Send email from Python in one HTTP call.
No SDK to install and no mail server to run. Aslio is a plain REST endpoint, so requests — or httpx, or the standard library — is all you need; there is no Aslio SDK to install. You pay ₹0.02 a message — about $0.21 per 1,000 emails, with no monthly platform fee, no per-seat charge and no minimum commitment.
In short
To send transactional email from Python, POST to `https://aslio.asli.one/v1/email/send` with an Authorization: Bearer API key and a JSON body containing from, to, subject and html. Aslio charges ₹0.02 a message — about $0.21 per 1,000 — with no monthly fee. Add an Idempotency-Key header and the request is safe to retry.
- $0.21
- per 1,000 emails
- ₹0
- monthly platform fee
- 0
- seats to buy
- EU
- app hosted in Frankfurt
Code
Sending one email from Python
The example uses requests, but any HTTP client works: there is no SDK and no vendor package in your dependency tree. The from address must be on a domain you have verified, so the message is signed with your own DKIM rather than a shared pool.
import os
import requests
res = requests.post(
"https://aslio.asli.one/v1/email/send",
headers={
"Authorization": f"Bearer {os.environ['ASLIO_API_KEY']}",
# Safe to retry: a duplicate replays the original response.
"Idempotency-Key": f"invoice-{invoice_id}",
},
json={
"from": "Acme <billing@acme.com>",
"to": ["customer@example.com"],
"subject": "Your invoice is ready",
"html": "<p>Hello — your invoice is attached.</p>",
"statusCallbackUrl": "https://acme.com/hooks/aslio",
},
timeout=10,
)
res.raise_for_status()
message = res.json()Code
Sending to a list
The same key and the same wallet. Merge variables are per recipient.
POST /v1/email/send-batch
{
"from": "Acme <news@acme.com>",
"subject": "Hi {{firstName}}, your invoice is due",
"html": "<p>Hi {{firstName}} — {{plan}}</p>",
"recipients": [
{ "email": "priya@example.com",
"variables": { "firstName": "Priya", "plan": "Pro" } }
]
}
// Up to 1,000 recipients per call. Each gets its own message
// row, its own charge and its own unsubscribe link. Suppressed
// addresses are skipped and reported, never silently dropped.What you get
What the API does for you
The parts you would otherwise build yourself, and then maintain.
Idempotency that holds
Send with an Idempotency-Key and retry as often as you like. A duplicate replays the original response instead of sending twice — enforced by a unique index, not a check-then-write race.
Refunded when we fail
If a message is charged and then permanently fails, the wallet is credited back automatically and the key is released so your retry can succeed.
Suppression before billing
Hard bounces and complaints go on your do-not-mail list. Later sends to that address are rejected before you are charged, which protects your sender reputation and ours.
One-click unsubscribe
Marketing sends carry RFC 8058 headers, so Gmail and Yahoo show a native Unsubscribe button — required for bulk senders since 2024.
Delivery pushed to you
Sent, delivered, bounced and complained events arrive on your statusCallbackUrl webhook, on every account from the first message.
Your own sending domain
You verify your domain and sign with your own DKIM, so your reputation stays yours instead of being pooled with every other sender on a shared IP.
Honestly
Before you pick this
- We hold no SOC 2 report and no ISO 27001 certification. If your procurement requires one, we will not pass it today and would rather say so now.
- SMS and WhatsApp are still in build. Email is the channel that ships today. Do not pick Aslio this week for a multi-channel launch next week.
- Support runs 09:30–18:30 IST (UTC+5:30). That overlaps European and Gulf afternoons and the edges of the North American day. There is no 24/7 desk.
- We are a young, small company — Asli One Global was incorporated in February 2026. That is a legitimate thing to weigh for a critical dependency.
FAQ
Frequently asked questions
How do I send an email from Python?
POST to https://aslio.asli.one/v1/email/send with an Authorization: Bearer header carrying your API key, and a JSON body of from, to, subject and html. The example uses requests, but any HTTP client works: there is no SDK and no vendor package in your dependency tree. The full example is above.
Do I need to install a package?
No. Aslio is a plain REST API, so requests — or httpx, or the standard library — is all you need; there is no Aslio SDK to install. There is no SDK to keep up to date and no dependency to audit.
Can I use SMTP instead?
Yes. Point your application at aslio.asli.one on port 587 with STARTTLS, using any username and your API key as the password. It is the same pipeline as the REST API — the same per-message price, sender verification, suppression list, delivery events and logs — so switching is a credential change rather than a code change.
How much does it cost?
₹0.02 per email, which is roughly $0.21 per 1,000 messages, with no monthly platform fee, no per-seat charge and no minimum commitment. You top up a prepaid wallet and spend it down. An optional Pro plan at ₹999 a month raises the API rate limit to 100 requests a second and adds priority support.
Is it safe to retry a failed request?
Yes, if you send an Idempotency-Key. A duplicate replays the original response instead of sending a second copy, and it is enforced by a unique index rather than a check-then-write race. If a charged message later fails permanently, the wallet is credited back automatically.
How do I know whether the email arrived?
Set statusCallbackUrl on the send and Aslio posts sent, delivered, bounced and complained events to it. Delivery data is on every account from the first message, not gated behind a higher plan.
Send your first Python email in ten minutes.
Top up a wallet and send. No monthly platform fee, no seat charge, no minimum commitment — a hundred test emails costs about one rupee.
Asli One Global Private Limited · CIN U62011TN2026PTC190105