Skip to content

API Guide

The Kirim.Email SMTP API provides programmatic access to email sending, domain management, credentials, logs, and more. All API requests are made over HTTPS to https://smtp-app.kirim.email.

All API requests require Basic Authentication with your API credentials. Your username serves as username, and the API key serves as password.

Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains" \
-u "username:your-api-key"

Replace your-api-key with your actual API key from the dashboard.

All API endpoints are relative to:

https://smtp-app.kirim.email

Retrieve all domains associated with your account.

Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains" \
-u "username:your-api-key"

Response:

{
"success": true,
"data": [
{
"id": "dm_xxxxx",
"domain": "example.com",
"status": "verified",
"created_at": "2024-01-15T10:30:00Z"
}
]
}

Add a new domain to your account.

Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains" \
-u "username:your-api-key" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'

After creating a domain, you need to verify your DNS records:

Terminal window
# Verify mandatory DNS records (SPF, DKIM, MX)
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/verify-mx" \
-u "username:your-api-key"
# Setup and verify authentication domain (SPF, DKIM)
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/setup-auth" \
-u "username:your-api-key"
# Setup and verify tracking domain (CNAME for click/open tracking)
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/setup-tracking" \
-u "username:your-api-key"

SMTP credentials allow you to send emails through specific domains.

Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/credentials" \
-u "username:your-api-key"
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/credentials" \
-u "username:your-api-key" \
-H "Content-Type: application/json" \
-d '{"name": "My Application"}'

Response:

{
"success": true,
"data": {
"id": "cred_xxxxx",
"name": "My Application",
"username": "smtp_xxxxx",
"password": "generated-password-here",
"created_at": "2024-01-15T10:30:00Z"
}
}

Important: Save the password immediately - it won’t be shown again.

Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/credentials/cred_xxxxx/reset-password" \
-u "username:your-api-key"
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/send" \
-u "smtp_xxxxx:smtp-password" \
-d "subject=Hello World" \
-d "body=This is the email content"
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/send" \
-u "smtp_xxxxx:smtp-password" \
-F "subject=Hello with Attachment" \
-F "body=Please see the attached file" \
-F "attachment=@/path/to/file.pdf"
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/send-template" \
-u "smtp_xxxxx:smtp-password" \
-d "template=welcome-email" \
-d "variables[name]=John Doe"

Validate email addresses before sending to reduce bounce rates.

Terminal window
curl -X POST "https://smtp-app.kirim.email/api/validate/email" \
-u "username:your-api-key" \
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/validate/email/strict" \
-u "username:your-api-key" \
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/validate/email/batch" \
-u "username:your-api-key" \
-H "Content-Type: application/json" \

Monitor your email sending activity.

Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/logs" \
-u "username:your-api-key"
Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/logs/message_xxxxx" \
-u "username:your-api-key"
Terminal window
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/logs/stream" \
-u "username:your-api-key"

Manage suppressed email addresses (bounces, unsubscribes, whitelist).

Terminal window
# Get all suppressions
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/suppressions" \
-u "username:your-api-key"
# Get bounces only
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/suppressions/bounces" \
-u "username:your-api-key"
# Get unsubscribes only
curl -X GET "https://smtp-app.kirim.email/api/domains/example.com/suppressions/unsubscribes" \
-u "username:your-api-key"
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/suppressions/whitelist" \
-u "username:your-api-key" \
Terminal window
# Remove from unsubscribes
curl -X DELETE "https://smtp-app.kirim.email/api/domains/example.com/suppressions/unsubscribes" \
-u "username:your-api-key" \

Receive real-time notifications about email events.

Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/webhooks" \
-u "username:your-api-key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks/kirimemail",
"events": ["delivered", "bounced", "complained"]
}'

Available webhook events:

Event Description
queued Email queued for delivery
delivered Email successfully delivered
bounced Email was bounced
complained Email marked as spam
clicked Link in email was clicked
opened Email was opened
Terminal window
curl -X POST "https://smtp-app.kirim.email/api/domains/example.com/webhooks/webhook_xxxxx/test" \
-u "username:your-api-key"

Check your account’s sending limits and usage.

Terminal window
curl -X GET "https://smtp-app.kirim.email/api/quota" \
-u "username:your-api-key"

Response:

{
"success": true,
"data": {
"plan": "standard",
"limit": 1000,
"used": 450,
"remaining": 550,
"reset_at": "2024-01-31T23:59:59Z"
}
}
Plan Limit
Standard 100 requests/minute
Enterprise 1000 requests/minute

When rate limited, the API returns a 429 Too Many Requests response.

The API uses standard HTTP status codes for responses.

Code Meaning
200 Success
400 Bad Request - Invalid parameters
401 Unauthorized - Invalid API key
403 Forbidden - Insufficient permissions
404 Not Found - Resource doesn’t exist
429 Too Many Requests - Rate limit exceeded
500 Server Error - Something went wrong

Error Response Format:

{
"success": false,
"error": {
"code": "invalid_email",
"message": "The provided email address is not valid"
}
}
import requests
from requests.auth import HTTPBasicAuth
api_key = "your-api-key"
base_url = "https://smtp-app.kirim.email"
# List domains
response = requests.get(
f"{base_url}/api/domains",
auth=HTTPBasicAuth("username", api_key)
)
print(response.json())
const axios = require('axios');
const apiKey = 'your-api-key';
const baseUrl = 'https://smtp-app.kirim.email';
async function getDomains() {
const response = await axios.get(`${baseUrl}/api/domains`, {
auth: { username: 'username', password: apiKey }
});
console.log(response.data);
}
<?php
$apiKey = 'your-api-key';
$baseUrl = 'https://smtp-app.kirim.email';
$ch = curl_init("$baseUrl/api/domains");
curl_setopt($ch, CURLOPT_USERPWD, "username:$apiKey");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);