Quickstart
Quolle is a transactional email API. Go from zero to a delivered email in under 5 minutes.
Get your API key
Sign up
at app.quolle.com — the Starter plan is free with 3,000 emails/month, no credit card
required. Then go to API Keys → Create key. Copy it immediately — keys
start with qle_ and are shown only once.
Store it as an environment variable rather than hardcoding it:
export QUOLLE_API_KEY=qle_your_api_key
Verify a sending domain
Every email must originate from a domain you've verified. Go to
Domains → Add domain in the dashboard, enter your sending domain
(e.g. mail.yourdomain.com), and add the DNS records shown. Without this,
POST /send returns 400 Sending domain not verified.
Send your first email
Replace hello@mail.yourdomain.com with your verified sender address.
# Install the official SDK first
npm install @quolle/sdk
import { Quolle } from "@quolle/sdk";
const quolle = new Quolle({ apiKey: process.env.QUOLLE_API_KEY! });
const { id } = await quolle.emails.send({
from: "hello@mail.yourdomain.com",
to: "you@example.com",
subject: "Hello from Quolle",
html: "<p>Your first email via Quolle.</p>",
});
console.log("Queued:", id);
curl -X POST https://api.quolle.com/v1/emails/send \
-H "Authorization: Bearer $QUOLLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@mail.yourdomain.com",
"to": "you@example.com",
"subject": "Hello from Quolle",
"html": "<p>Your first email via Quolle.</p>"
}'
import os
import requests
response = requests.post(
"https://api.quolle.com/v1/emails/send",
headers={
"Authorization": f"Bearer {os.environ['QUOLLE_API_KEY']}",
"Content-Type": "application/json",
},
json={
"from": "hello@mail.yourdomain.com",
"to": "you@example.com",
"subject": "Hello from Quolle",
"html": "<p>Your first email via Quolle.</p>",
},
timeout=15,
)
response.raise_for_status()
data = response.json()
print("Queued:", data["id"])
A successful response:
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"message": "Email queued successfully"
}
The SDK surfaces { id }. The raw REST API (cURL/Python) also returns message.
delivered@test.quolle.com, bounced@test.quolle.com,
or complained@test.quolle.com to simulate each outcome — statuses
and webhooks fire exactly like production, but nothing is actually sent and
your sending reputation is never affected. Never test bounce handling with
made-up addresses: those cause real bounces that count against you.
See Test addresses.
Next steps
Send API reference
Full parameter docs for /send and /batch — templates, scheduling, idempotency.
Webhooks
Get real-time HTTP notifications for delivery events, bounces, and complaints.
API Reference
Rate limits, error codes, sending limits, and billing plans.
SMTP
Use Laravel, Django, Nodemailer, or any SMTP client with Quolle credentials.