Autoconfig Provider
curl --request GET \
--url https://api.linkupapi.com/v2/email/autoconfig \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.linkupapi.com/v2/email/autoconfig"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.linkupapi.com/v2/email/autoconfig', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/email/autoconfig",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/email/autoconfig"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.linkupapi.com/v2/email/autoconfig")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/email/autoconfig")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"email": "you@company.com",
"domain": "company.com",
"provider_bucket": "google",
"recommended_method": "gmail_oauth",
"oauth_available": true,
"imap": { "host": "imap.gmail.com", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.gmail.com", "port": 587, "security": "starttls" },
"source": "mx"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
{
"success": true,
"data": {
"email": "you@orange.fr",
"domain": "orange.fr",
"provider_bucket": "other",
"recommended_method": "smtp_generic",
"oauth_available": false,
"imap": { "host": "imap.orange.fr", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.orange.fr", "port": 465, "security": "ssl" },
"source": "ispdb"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
Accounts
Autoconfig Provider
Detect the provider and IMAP/SMTP settings for an email address
GET
/
v2
/
email
/
autoconfig
Autoconfig Provider
curl --request GET \
--url https://api.linkupapi.com/v2/email/autoconfig \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.linkupapi.com/v2/email/autoconfig"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.linkupapi.com/v2/email/autoconfig', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/email/autoconfig",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/email/autoconfig"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.linkupapi.com/v2/email/autoconfig")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/email/autoconfig")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"email": "you@company.com",
"domain": "company.com",
"provider_bucket": "google",
"recommended_method": "gmail_oauth",
"oauth_available": true,
"imap": { "host": "imap.gmail.com", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.gmail.com", "port": 587, "security": "starttls" },
"source": "mx"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
{
"success": true,
"data": {
"email": "you@orange.fr",
"domain": "orange.fr",
"provider_bucket": "other",
"recommended_method": "smtp_generic",
"oauth_available": false,
"imap": { "host": "imap.orange.fr", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.orange.fr", "port": 465, "security": "ssl" },
"source": "ispdb"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
Overview
Given an email address, returns the recommended connection method and the IMAP/SMTP server settings — so you can route the user to the right flow (Gmail/Microsoft OAuth vs IMAP/SMTP) and pre-fill the server fields. Resolution: a curated provider table, then an MX lookup (Google Workspace / Microsoft 365 on custom domains), then the Mozilla ISPDB (covers most ISPs), then a manual fallback.This endpoint is free (0 credits) and read-only.
Request
string
required
Your API key.
string
required
The mailbox address to look up, e.g.
you@company.com.Response
boolean
Whether the lookup succeeded.
object
Show data properties
Show data properties
string
The address that was looked up.
string
Its domain.
string
"google", "outlook" or "other".boolean
true for Google/Microsoft — prefer OAuth over an app password.object
Suggested IMAP settings (
host, port, security), or null when unknown.object
Suggested SMTP settings (
host, port, security), or null when unknown.string
How it was resolved:
"domain_table", "mx", "ispdb" or "unknown".{
"success": true,
"data": {
"email": "you@company.com",
"domain": "company.com",
"provider_bucket": "google",
"recommended_method": "gmail_oauth",
"oauth_available": true,
"imap": { "host": "imap.gmail.com", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.gmail.com", "port": 587, "security": "starttls" },
"source": "mx"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
{
"success": true,
"data": {
"email": "you@orange.fr",
"domain": "orange.fr",
"provider_bucket": "other",
"recommended_method": "smtp_generic",
"oauth_available": false,
"imap": { "host": "imap.orange.fr", "port": 993, "security": "ssl" },
"smtp": { "host": "smtp.orange.fr", "port": 465, "security": "ssl" },
"source": "ispdb"
},
"metadata": { "action": "email_autoconfig", "credits_consumed": 0, "timestamp": "2026-09-14T12:00:00Z" }
}
When the domain is unknown,
imap and smtp are null and source is "unknown" — the user fills the server settings by hand.Was this page helpful?