Get Ad Audience
Email to MAID
The Email to MAID API resolves an email address to one or more Mobile Advertising IDs (MAIDs), including AAIDs (Android Advertising IDs) and IDFAs (Apple Identifiers for Advertisers).
MAIDs are what ad platforms use to target users on their mobile devices with precision. Use this endpoint to connect a known email identity to mobile device signals, enabling cross-device retargeting, programmatic audience activation, and mobile-first ad campaigns against your contact lists.
Use this endpoint to:
- Build mobile retargeting audiences from your contact list
- Activate programmatic ad campaigns against known contacts
- Connect email identities to mobile device signals for cross-device targeting
Fair Use Policy: This API is subject to our Fair Use Policy for Enrichment.
POST
/
email_to_maid
Email to MAID
curl --request POST \
--url https://api.moltsets.com/api/v1/tools/email_to_maid \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "john.smith@example.com"
}
'import requests
url = "https://api.moltsets.com/api/v1/tools/email_to_maid"
payload = { "email": "john.smith@example.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'john.smith@example.com'})
};
fetch('https://api.moltsets.com/api/v1/tools/email_to_maid', 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.moltsets.com/api/v1/tools/email_to_maid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'john.smith@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moltsets.com/api/v1/tools/email_to_maid"
payload := strings.NewReader("{\n \"email\": \"john.smith@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moltsets.com/api/v1/tools/email_to_maid")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john.smith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moltsets.com/api/v1/tools/email_to_maid")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"john.smith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"device_id": "b8c747bb-96c5-453f-b770-9d64889XXXXX",
"device_type": "AAID"
}
],
"status": "ok",
"metadata": {
"fair_use": {
"records_remaining_5h": 179999,
"records_reset_5h": "2026-07-15T18:53:16Z",
"records_remaining_1w": 899999,
"records_reset_1w": "2026-07-22T13:53:16Z"
}
}
}{
"error": "Bad Request",
"message": "The server cannot process the request due to a client error (400 Bad Request)."
}{
"error": "Unauthorized",
"message": "Invalid API key."
}{
"error": "Not Found",
"message": "No match was found for the data provided."
}{
"error": "Invalid Input",
"message": "Message describing the nature of the invalid input."
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Maximum 100 requests per second."
}{
"error": {
"code": "internal_error",
"message": "Unexpected connection error."
},
"metadata": {}
}⌘I
Email to MAID
curl --request POST \
--url https://api.moltsets.com/api/v1/tools/email_to_maid \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "john.smith@example.com"
}
'import requests
url = "https://api.moltsets.com/api/v1/tools/email_to_maid"
payload = { "email": "john.smith@example.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'john.smith@example.com'})
};
fetch('https://api.moltsets.com/api/v1/tools/email_to_maid', 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.moltsets.com/api/v1/tools/email_to_maid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'john.smith@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moltsets.com/api/v1/tools/email_to_maid"
payload := strings.NewReader("{\n \"email\": \"john.smith@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moltsets.com/api/v1/tools/email_to_maid")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john.smith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moltsets.com/api/v1/tools/email_to_maid")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"john.smith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"device_id": "b8c747bb-96c5-453f-b770-9d64889XXXXX",
"device_type": "AAID"
}
],
"status": "ok",
"metadata": {
"fair_use": {
"records_remaining_5h": 179999,
"records_reset_5h": "2026-07-15T18:53:16Z",
"records_remaining_1w": 899999,
"records_reset_1w": "2026-07-22T13:53:16Z"
}
}
}{
"error": "Bad Request",
"message": "The server cannot process the request due to a client error (400 Bad Request)."
}{
"error": "Unauthorized",
"message": "Invalid API key."
}{
"error": "Not Found",
"message": "No match was found for the data provided."
}{
"error": "Invalid Input",
"message": "Message describing the nature of the invalid input."
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Maximum 100 requests per second."
}{
"error": {
"code": "internal_error",
"message": "Unexpected connection error."
},
"metadata": {}
}