...

Did you log in from a new device?

Near

Toronto, Ontario

Device

Apple iPhone

When

Jul 27, 2024

IP

99.239.5.148

...

Did you log in from a new device?

Near

Toronto, Ontario

Device

Apple iPhone

When

Jul 27, 2024

IP

99.239.5.148

Suspicious login detection in minutes

AI-Powered email notifications for every unusual login attempt.
View an example email

Sign Up Free Book a Demo

Built for developers

Zenlogin is built to make developers lives easier. Preset sensitivity intervals, simple integration and prebuilt notification emails.

Designed for security

A security API through and through. We guarantee this is the easiest way to add a layer of security to your application, website or service.

AI Sensitivity Controls

Smart AI that detects threats that wouldn't otherwise be possible, and notifies your users of them.

Maps Integration

Beautiful maps built into email notifications so your users can quickly visualize if their account has been compromised.

Custom Rules

Create special rules so your team members can get notified whenever a login attempt happens on their account.

Detailed Logs

Keep track of all suspicious logins for your users including all the details you'll want to track.

The fastest way to add an extra layer of security for

Using Zenlogin for suspicious login detection means you don't have to build it in-house. We'll detect suspicious login attempts and notify your users via email.

Setup in minutes
(Single endpoint)

Premium Phone Support

Minimalist email notifications

No PII Stored

 View a real example email

...

Did you log in from a new device?

Near

Toronto, Ontario

Device

Apple iPhone

When

Jul 27, 2024

IP

99.239.5.148

Proudly powering login detection for:

freepik
ichigo
lodgify
mint
namecheap

A single endpoint and just a few lines of code.

Get up and running in minutes instead of weeks. Paste in a few lines of code and you're good to go. View a real example email

curl https://api.zenlogin.co/v1/applications/appl0123456789/logins/checks \
--header "X_API_SECRET_KEY: your_secret_key" \
--data identity_key="usr12345" \
--data identity_email_address="name@website.com" \
--data user_agent="Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0" \
--data ip_address="18.188.57.0"
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.zenlogin.co/v1/applications/appl0123456789/logins/checks');
$postData = array();
$postData['identity_key'] = 'usr12345';
$postData['identity_email_address'] = 'name@website.com';
$postData['user_agent'] = 'Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0';
$postData['ip_address'] = '18.188.57.0';
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'X_API_SECRET_KEY: your_secret_key'
));
$response = curl_exec($ch);
$response = json_decode($response, true);
curl_close($ch);
const axios = require('axios');
const endpoint = 'https://api.zenlogin.co/v1/applications/appl0123456789/logins/checks',
  postData = {},
  options = {};
postData.identity_key = 'usr12345';
postData.identity_email_address = 'name@website.com';
postData.user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0';
postData.ip_address= '18.188.57.0';
options.headers = {};
options.headers.X_API_SECRET_KEY = 'your_secret_key';
axios.post(endpoint, postData, options).then(function(response) {
  console.log(response.data);
}).catch(function(error) {
  console.error(error.response.data);
});
import requests
url = 'https://api.zenlogin.co/v1/applications/appl0123456789/logins/checks'
postData = {
  'identity_key': 'usr12345',
  'identity_email_address': 'name@website.com',
  'user_agent': 'Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0',
  'ip_address': '18.188.57.0'
}
headers = {'X_API_SECRET_KEY': 'your_secret_key'}
response = requests.post(url, data=postData, headers=headers)
print response.content
require 'uri'
require 'net/http'

uri = URI('https://api.zenlogin.co/v1/applications/appl0123456789/logins/checks')
req = Net::HTTP::Post.new(uri.path)
req['X_API_SECRET_KEY'] = 'your_secret_key'
postData = {}
postData['identity_key'] = 'usr12345'
postData['identity_email_address'] = 'name@website.com'
postData['user_agent'] = 'Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0'
postData['ip_address'] = '18.188.57.0'
req.set_form_data(postData);

https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true

response = https.request(req)
puts response.body
View all integration options
...

Stay focused on what matters.
We'll handle the suspicious logins.

Security issues are on the rise. Get peace of mind when it comes to suspicious logins and leave threat detection to us, so you can focus on other things.

Usage based, simple pricing for all.

Businesses need security now more than ever. Pick a plan that makes the most sense for you.

Pro
$ 199

per month

25,000 Requests /mo

2,500 Suspicious Login Emails

Detailed Logs

Custom Rules

Maps Integration

Remove Branding

Try it free for 30 days

Always Free

As long as you have less than 500 requests and send less than 50 email notifications per month, Zenlogin is free to use!

Get started for free
?

Will Zenlogin work with my server side language?

Absolutely. We support all major server side languages! Check out the docs

?

Do you store Personally Identifiable Information?

We don't store any of your users PII. For sending emails we use Postmark and this data is only stored there for 45 days.

?

Is there a money back guarantee?

Yup! We offer a 14-day money back guarantee on any paid plan.

?

Can I use my own email templates?

At this time, we offer what we believe is the perfect email design for suspicious email notifications. It's been thoroughly tested and works in all modern email clients.

Get started

Protect your users.

Don't build suspicous login detection from scratch. Zenlogin is faster, secure and we'll worry about all the mundane details.

Start 30-Day Free Trial