Email your product sends. Without you.
KIRIM.EMAIL is the only email infrastructure with a CLI built for AI agents. Your agent like Claude, Cursor, Codex, and Windsurf can send email, check delivery logs, validate contacts, and manage domains directly from the terminal. No dashboard. No human required. Pay per credit, not per month.
Available now on Linux macOS Windows
I started KIRIM.EMAIL in 2016 with one conviction: email is still the most important channel between a product and its users. Not social media. Not push notifications. Email.
Nearly a decade later, that conviction has only grown stronger. And now, with AI agents beginning to handle more and more of the work humans used to do, email infrastructure needs to be ready for that shift too. Agents shouldn't have to wait for a human to log into a dashboard.
That's what we're building. Not just an email service, but infrastructure that's ready for the agent era. So your product keeps running, keeps serving customers, and keeps sending the right message, even when no one is online.
This is an open invitation. Try it, and tell me what you think. I want to know what works, what doesn't, and what you'd like to see next.
I read and reply to every email personally, [email protected]. Whether you have a technical question, want to discuss a specific use case, or would like to schedule a demo for your team, just send an email and we'll figure out the rest.
KTX: Official CLI for KIRIM.EMAIL
Let your agent send email without you touching a dashboard.
ktx is the official KIRIM.EMAIL CLI. Send emails, manage domains, check logs, validate contacts, all from one terminal command. No local server. No manual DNS configuration.
Works with any AI agent that can run shell commands: Claude, Cursor, Codex, Windsurf, OpenCode.
Every KIRIM.EMAIL repository ships with a SKILLS.md file. Load it into Claude, Cursor, or Windsurf, your agent immediately knows the right command for every task.
Install: one command, all platforms
curl -fsSL https://raw.githubusercontent.com/kirimemail/ktx/main/install.sh | bash
Usage examples
# Send a transactional email ktx send \ -from [email protected] \ -to [email protected] \ -subject "Order Confirmed" \ -text "Order #1234 is confirmed." # Stream delivery logs in real-time ktx logs --follow # Validate a list before sending ktx validate batch [email protected],[email protected] # Check sending quota ktx quota
Configuration (~/.ktxrc)
{
"username": "your-username",
"token": "your-api-token",
"base_url": "https://smtp-app.kirim.email",
"domain": "your-domain.com"
}
REST API
Call it directly from your code.
Prefer calling the API directly over using a CLI or SDK? KIRIM.EMAIL provides a full REST API for sending, domain management, validation, logs, and webhooks, consistent endpoints, JSON responses, Bearer token auth.
Example: send via REST API
curl -X POST \ https://smtp-app.kirim.email/api/v1/send \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "from": "[email protected]", "to": "[email protected]", "subject": "Order Confirmed", "text": "Order #1234 is confirmed." }'
Authenticate with a Bearer token from your KIRIM.EMAIL dashboard. Standard JSON responses, easy to parse from any language or agent.
OFFICIAL SDKs
Add email capability in minutes.
Pick your language. Our SDKs handle auth, retries, and error handling, so your code focuses on business logic, not HTTP plumbing.
NO-CODE AUTOMATION
KIRIM.EMAIL in n8n.
Official n8n nodes for teams that automate workflows without writing code, or for n8n-based agents that need to trigger email as part of a larger workflow.
WHO IT'S FOR
KIRIM.EMAIL is the right fit if…
No single email provider is right for everyone. Here's how to know whether KIRIM.EMAIL fits your situation, and when it probably doesn't.
| Your situation | KIRIM.EMAIL | Resend / Postmark | SendGrid / Mailgun | AWS SES |
|---|---|---|---|---|
| You're building an AI agent that needs to send email | ktx CLI + SKILLS.md, built for this | API only, no agent-ready CLI | API only, no agent tooling | aws cli, complex for agents |
| Your sending volume is irregular, you don't send every month | Pay per credit, zero monthly fee | Postmark has credit packs; Resend has monthly plans | Monthly minimums apply | Per-send pricing, but setup is complex |
| You need transactional + marketing + validation in one account | All three, unified | Transactional only | Transactional + marketing; validation is paid add-on | Transactional only; no marketing or validation |
| You manage email for multiple clients or products | Sub-accounts with credential isolation | Team access, not full client isolation | Subuser / subaccount support | IAM roles, requires AWS expertise |
| You want email validation built into your workflow | Included, same credit system | Not available | Paid add-on, separate billing | Not available |
| You need React-based email templating or modern JS-first DX | Not our focus | Resend + React Email is best-in-class | Template support, but older approach | No template tooling |
| You're sending 10M+ emails/month and already in AWS | Yes, we've delivered 11M+ in a single day | Not optimized for extreme volume | SendGrid/Mailgun scale to this | Cheapest at this scale, if you have the expertise |
We'd rather lose you to the right tool than keep you on the wrong one. If Resend fits your stack better, use Resend. If you're building AI agent workflows and need a CLI that already knows how to send email, that's us.
BUILT TO LAST
Founded 2016. Profitable. Private. Not going anywhere.
In an industry where email providers keep getting acquired, rebranded, or shut down like SparkPost became Bird, Mandrill requires a Mailchimp subscription, SendGrid is now Twilio, staying independent is itself a differentiator.
KIRIM.EMAIL has been profitable since year one. No VC pressure, no exit timeline, no one telling us to pivot the product to fit an acquisition thesis. We answer to our customers, not to investors.
We've processed email for 35,000+ businesses across 20+ countries since 2016. That track record isn't marketing, it's nine years of keeping email moving for products that depend on it.
COMING SOON
Something is being built.
Soon you'll be able to instruct Claude or Cursor directly, and they'll know exactly how to send email through KIRIM.EMAIL, without switching apps or writing integration code.
User: "Send a follow-up email to all customers whose orders are still unconfirmed."
Claude: Sent to 47 customers. All delivered. Delivery rate 98.3%.
FREQUENTLY ASKED QUESTIONS
Things developers actually ask.
We've collected these from real conversations, support tickets, and the questions we get before someone signs up. Answered directly, no marketing fluff.
"Kirim" means "send" in Indonesian. We're a company founded in Indonesia in 2016, with legal entities in both Indonesia (PT Kirim Email Indonesia, Bandung) and the US (Kirim Email, Inc., Delaware). We've been running for nearly a decade and serve 35,000+ businesses across 20+ countries. Our infrastructure handles global delivery, we route to Gmail, Outlook, Yahoo, and every major inbox provider worldwide.
Both, in a single account. Transactional email (OTPs, password resets, order confirmations, system alerts) through our SMTP/API. Email marketing (campaigns, sequences, list management) through our marketing dashboard. Built-in email validation included. Most teams using us don't pay separately for a transactional provider and a marketing platform. Whether that matters to you depends on your stack.
We use a credit system: 1 credit = 1 email sent (or 1 email validated). You buy credits, use them when you send, and pay nothing in months where you send nothing. No monthly minimum. Credits are valid for one year from purchase and accumulate if you top up. If you need unlimited sending to a fixed marketing list, we also have a contact-based monthly plan. Pricing details at en.kirim.email/pricing.
No free tier, but there's a full sandbox environment for testing before you commit to any credits.
About 5 minutes to first send. Three paths: (1) Install ktx CLI with one curl command and run ktx send. (2) Call our REST API directly with a Bearer token from your dashboard. (3) Plug in SMTP credentials to your existing library (Nodemailer, PHPMailer, Laravel Mail, all work. DNS verification for your sending domain takes 5–30 minutes, but you can test immediately with Sandbox Recipients while that's processing.
REST API if you're writing new code, more flexible, structured JSON errors, programmatic access to logs, webhooks, and validation. SMTP if you're plugging into an existing library that already expects SMTP credentials (WordPress, Laravel, legacy PHP, Nodemailer). Both are fully supported. Port 587 with STARTTLS is recommended; port 465 with SSL/TLS also works.
Yes. Add your sending domain to KIRIM.EMAIL, verify DNS, test with Sandbox Recipients, then switch your app's SMTP credentials or API calls. You can run both providers in parallel during testing. The main thing to migrate is your suppression list, export bounces and unsubscribes from your current provider to avoid re-sending to addresses that already had problems. We can help walk through this, email [email protected].
Honest answer: we don't publish benchmark numbers because deliverability depends heavily on your own domain reputation, list hygiene, and content, not just the provider's infrastructure. What we do: properly maintained IP pools, SPF/DKIM enforcement, active bounce and complaint handling, and a nine-year track record with 35,000+ businesses. The best way to evaluate is to run tests from your own domain and watch the logs. That's what the sandbox is for.
We support dedicated IP configuration for accounts with appropriate sending volume. For most transactional senders under ~100,000 emails/month, shared IPs from a well-managed pool perform as well as dedicated IPs, and dedicated IPs require careful warming to avoid deliverability problems. If you're at a volume where dedicated IPs make sense, reach out to discuss. They're not the right answer for everyone.
Yes. Transactional email (user-triggered) and marketing email (campaigns) run through separate infrastructure and IP pools. A spam complaint on a marketing campaign won't affect the deliverability of your OTPs or password resets. The separation is architectural, not just a dashboard setting.
IP warming is gradually increasing email volume on a new IP so inbox providers build a reputation signal on it. On KIRIM.EMAIL's shared IP pools, IPs already have established reputation, you don't warm them from scratch. If you're on a dedicated IP, warming is essential and typically takes 4–6 weeks. Most new accounts on shared IPs can start at production volumes without manual warming.
In order of likelihood:
- Run
ktx domains verify yourdomain.com, missing DMARC is the most common Gmail filtering cause in 2026 - Validate your list before bulk sends:
ktx validate batch, high bounce rates tank sender reputation - Check for content triggers, certain subject line patterns cause filtering regardless of technical setup
- Look at your sending volume ramp, a sudden spike from a cold domain triggers spam filters
The specific error message in ktx logs usually tells you exactly what Gmail or Outlook rejected and why.
Most email providers are designed for humans who click dashboards. AI agents like Claude, Cursor, Codex, OpenCode, can run shell commands natively but can't log into a UI. ktx means your agent can send email, check delivery logs, validate a contact list, manage webhooks, and check quota all from terminal commands, without any human in the loop. SKILLS.md gives agents the context to do this correctly from the start.
SKILLS.md is a compact reference file for LLMs. It describes what KIRIM.EMAIL can do with example commands, giving an agent enough context to be immediately productive. To use it: open the file from the ktx repo on GitHub, copy the content, paste it into your agent's system prompt or context window (Claude, Cursor, Windsurf, or any other). The agent then knows how to send email, read logs, manage suppressions, test webhooks, and more, without being taught each step.
If your agent runs shell commands: ktx send is simplest, one command, no integration code. If your agent calls Python functions: pip install kirimemail-smtp, then import and call the send function. The SDK handles auth, retries, and error handling. Node.js, PHP, and Go SDKs also available.
That's the recommended approach. Set KIRIM_TOKEN=your_token as an environment variable and ktx reads it automatically, no token in code or version control. Priority order: flag > environment variable > ~/.ktxrc config file.
Delivery logs are accessible via ktx logs and the dashboard, filterable by date range, sender, and recipient. Exact retention period varies by account tier, check your dashboard or ask support. If you need long-term audit trails, stream webhook events to your own storage as they happen rather than relying on our log retention.
Our infrastructure has delivered over 11 million emails in a single day. For most products sending OTPs, confirmations, and notifications, rate limiting isn't something you'll encounter. If you need to fire thousands of emails per second consistently, contact us to discuss dedicated infrastructure. Check remaining quota anytime with ktx quota.
Yes. The API and CLI both accept full HTML bodies. We have a drag-and-drop template builder in the dashboard. We don't have React Email integration, if that's a hard requirement, Resend is better suited for that. If you have existing HTML templates or build them with your own tooling, those work fine via the API.
Not currently, KIRIM.EMAIL is outbound-focused. If you need to receive and process inbound email programmatically (parse replies, handle bounces from your own MX), Mailgun, SendGrid, and Postmark all offer inbound email processing.
When a delivery event occurs, KIRIM.EMAIL POSTs to the webhook URL you've registered. Nine event types: delivered, opened, clicked, bounced, temporary_fail, permanent_fail, unsubscribed, rejected, sent. Register with ktx webhooks create delivered https://yourapp.com/hook and test with ktx webhooks test.
Yes. Same install script handles Linux, macOS, and Windows. Binaries compiled for linux/darwin/windows × amd64/arm64, M-series Macs, Intel Macs, Ubuntu VPS, Windows via WSL, all work without modification.
Our primary infrastructure operates from data centers in Southeast Asia. All SMTP and API connections are TLS-encrypted. For EU data residency requirements, we're transparent: we don't operate EU-region infrastructure. If GDPR data residency is non-negotiable for your product (EU entities, regulated data), Brevo (France-based) or Mailjet (EU infrastructure) may be better suited. We'd rather tell you that upfront. For teams where data residency isn't the blocker, our privacy policy and data handling details are at en.kirim.email/privacy.
Yes, current status and incident history are available. Ask support for the link or check your dashboard. We publish incident information when there are service disruptions affecting delivery.
Suspensions happen when we detect sending patterns that violate our AUP, high bounce rates, spam complaints above threshold, or confirmed policy violations. If suspended, you'll receive an email explaining the reason. We don't suspend accounts silently without explanation. If you believe your account was suspended in error, contact [email protected] directly, not a bot queue, actual people who can investigate and explain.
No. Cold email to contacts who haven't opted in is prohibited and will result in account suspension. This is the same policy at every legitimate transactional email provider. The reason is practical: spam damages shared IP reputation that all customers rely on. What's allowed: transactional email (user-triggered), and marketing email to opted-in subscribers. See our Acceptable Usage Policy.
Founded 2016. Nearly a decade. Profitable from the beginning, no VC funding, no exit pressure, no pivot risk. In an industry where providers keep getting acquired and rebranded (SparkPost → Bird, Mandrill → Mailchimp add-on, SendGrid → Twilio), staying independent is deliberate. We answer to customers, not investors.
Email at [email protected], live chat from the dashboard. Our team handles technical questions in English, if your issue involves deliverability debugging, API integration, or DNS setup, go straight to the specifics and we'll match that level of detail. We're a smaller team than SendGrid, which means you talk to people who actually understand the problem rather than a tiered support queue.
Yes. Email [email protected], that's our CEO, he reads and responds personally. Or contact [email protected] with your use case and we'll help figure out if KIRIM.EMAIL is the right fit. We'd rather have a 10-minute conversation than have you sign up for the wrong tool.
Yes, Sub-Accounts. Create separate accounts for each client or product without password sharing. Each sub-account has its own domains, credentials, and sending reputation, managed from your master dashboard. Agencies and platform builders use this to keep client email isolated from each other.
Email [email protected]. If it's technical, include what you've already tried, we'll skip the basics and get into the actual problem. API documentation: smtp-app.kirim.email/api/documentation.
GET STARTED
Up and running in 5 minutes. No setup headaches.
From today, your product or agent can send email. ktx v1.0.3 is available now.