Analyze up to 50 emails
curl --request POST \
--url https://api.signuprisk.com/v1/analyze-email/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"person@example.com",
"abuse@example.org"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['person@example.com', 'abuse@example.org']})
};
fetch('https://api.signuprisk.com/v1/analyze-email/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.signuprisk.com/v1/analyze-email/batch"
payload = { "emails": ["person@example.com", "abuse@example.org"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.signuprisk.com/v1/analyze-email/batch"
payload := strings.NewReader("{\n \"emails\": [\n \"person@example.com\",\n \"abuse@example.org\"\n ]\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))
}{
"count": 123,
"success_count": 123,
"failure_count": 123,
"results": [
{
"index": 123,
"success": true,
"email": {
"input": "<string>",
"normalized": "<string>",
"is_well_formed": true,
"format_issues": [
"<string>"
],
"format_explanation": "<string>",
"is_internationalized": true,
"normalized_preserving_case": "<string>",
"canonical": "<string>"
},
"decision": {
"action": "allow",
"risk_score": 50,
"risk_band": "low",
"summary": "<string>",
"assessment": {
"confidence": "high",
"evidence_strength": "strong",
"evidence_coverage": "broad",
"uncertainty": "low",
"limitations": [
"domain_intelligence_unavailable"
]
}
},
"checks": {
"disposable_email": {
"result": "confirmed",
"is_disposable": true,
"confidence": "high",
"method": "<string>",
"matched_domain": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"domain_infrastructure": {
"result": "<string>",
"risk_level": "<string>",
"available": true,
"confidence": "<string>",
"method": "<string>",
"lookup_status": "success",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"records": {
"mx": {
"status": "present",
"risk_contribution": 123
},
"spf": {
"status": "present",
"risk_contribution": 123
},
"dmarc": {
"status": "present",
"risk_contribution": 123
}
},
"reserved_special_use": {
"status": "reserved",
"matched_domain": "<string>",
"risk_contribution": 123
},
"registration_age": {
"available": true,
"age_days": 123,
"registered_at": "2023-12-25",
"status": "success",
"risk_contribution": 123
},
"risk_contribution": 123
},
"provider": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"type": "<string>",
"email_class": "<string>",
"business_email": true,
"organization_email": true,
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"role_address": {
"result": "personal_like",
"is_role_account": true,
"is_role_address": true,
"role_category": "<string>",
"confidence": "<string>",
"method": "<string>",
"matched_role": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"domain_typo": {
"result": "probable_typo",
"is_typo": true,
"is_typo_suspected": true,
"confidence": "<string>",
"method": "<string>",
"matched_domain": "<string>",
"typo_domain": "<string>",
"suggested_domain": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"synthetic_identity": {
"is_synthetic": true,
"method": "<string>",
"matched_patterns": [
{
"value": "<string>",
"type": "<string>"
}
],
"confidence": "<string>",
"risk_contribution": 123
},
"name_match": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"name_supplied": true,
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"sub_checks": {
"name_email_alignment": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
},
"local_part_quality": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
},
"synthetic_name": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
}
},
"risk_contribution": 123
},
"ip_reputation": {
"result": "<string>",
"risk_level": "<string>",
"available": true,
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"network": {
"type": "<string>",
"asn": 123,
"organization": "<string>"
},
"risk_contribution": 123
}
},
"explanation": {
"explanation_available": true,
"explanation_omitted_reason": "<string>",
"summary": "<string>",
"top_reasons": [
{
"reason": "<string>",
"check": "email_format",
"contribution": 123
}
],
"reason_groups": {
"identity": [
"<string>"
],
"infrastructure": [
"<string>"
],
"behavior": [
"<string>"
],
"format": [
"<string>"
]
},
"risk_factors": [
{
"factor": "<string>",
"contribution": 123
}
],
"neutral_factors": [
{
"factor": "<string>",
"contribution": 123
}
],
"recommendation_reason": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"metadata": {
"warnings": [
{
"code": "<string>",
"message": "<string>",
"type": "<string>",
"upgrade_required": true,
"recommended_plan": "<string>",
"required_plan": "<string>"
}
],
"usage": {
"requests": {
"used": 123,
"limit": 123,
"unlimited": true,
"remaining": 123
},
"explanations": {
"used": 123,
"limit": 123,
"unlimited": true,
"remaining": 123
}
},
"plan": {
"current_plan": "<string>",
"billing_period": {
"starts": "<string>",
"ends": "<string>"
},
"reset_at": "<string>"
},
"assessment_version": "<string>",
"cache": {
"hit": true,
"age_seconds": 123,
"scoring_version": "<string>"
}
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}Analysis
Analyze up to 50 emails
Synchronously score 1–50 emails. Each item consumes one request-unit.
Maximum 50 items per request (LIMIT_EXCEEDED if exceeded). Partial
failure is per-item via results[].error. Required scope: analyze.
POST
/
v1
/
analyze-email
/
batch
Analyze up to 50 emails
curl --request POST \
--url https://api.signuprisk.com/v1/analyze-email/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"person@example.com",
"abuse@example.org"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['person@example.com', 'abuse@example.org']})
};
fetch('https://api.signuprisk.com/v1/analyze-email/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.signuprisk.com/v1/analyze-email/batch"
payload = { "emails": ["person@example.com", "abuse@example.org"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.signuprisk.com/v1/analyze-email/batch"
payload := strings.NewReader("{\n \"emails\": [\n \"person@example.com\",\n \"abuse@example.org\"\n ]\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))
}{
"count": 123,
"success_count": 123,
"failure_count": 123,
"results": [
{
"index": 123,
"success": true,
"email": {
"input": "<string>",
"normalized": "<string>",
"is_well_formed": true,
"format_issues": [
"<string>"
],
"format_explanation": "<string>",
"is_internationalized": true,
"normalized_preserving_case": "<string>",
"canonical": "<string>"
},
"decision": {
"action": "allow",
"risk_score": 50,
"risk_band": "low",
"summary": "<string>",
"assessment": {
"confidence": "high",
"evidence_strength": "strong",
"evidence_coverage": "broad",
"uncertainty": "low",
"limitations": [
"domain_intelligence_unavailable"
]
}
},
"checks": {
"disposable_email": {
"result": "confirmed",
"is_disposable": true,
"confidence": "high",
"method": "<string>",
"matched_domain": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"domain_infrastructure": {
"result": "<string>",
"risk_level": "<string>",
"available": true,
"confidence": "<string>",
"method": "<string>",
"lookup_status": "success",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"records": {
"mx": {
"status": "present",
"risk_contribution": 123
},
"spf": {
"status": "present",
"risk_contribution": 123
},
"dmarc": {
"status": "present",
"risk_contribution": 123
}
},
"reserved_special_use": {
"status": "reserved",
"matched_domain": "<string>",
"risk_contribution": 123
},
"registration_age": {
"available": true,
"age_days": 123,
"registered_at": "2023-12-25",
"status": "success",
"risk_contribution": 123
},
"risk_contribution": 123
},
"provider": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"type": "<string>",
"email_class": "<string>",
"business_email": true,
"organization_email": true,
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"role_address": {
"result": "personal_like",
"is_role_account": true,
"is_role_address": true,
"role_category": "<string>",
"confidence": "<string>",
"method": "<string>",
"matched_role": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"domain_typo": {
"result": "probable_typo",
"is_typo": true,
"is_typo_suspected": true,
"confidence": "<string>",
"method": "<string>",
"matched_domain": "<string>",
"typo_domain": "<string>",
"suggested_domain": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"risk_contribution": 123
},
"synthetic_identity": {
"is_synthetic": true,
"method": "<string>",
"matched_patterns": [
{
"value": "<string>",
"type": "<string>"
}
],
"confidence": "<string>",
"risk_contribution": 123
},
"name_match": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"name_supplied": true,
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"sub_checks": {
"name_email_alignment": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
},
"local_part_quality": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
},
"synthetic_name": {
"result": "<string>",
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
]
}
},
"risk_contribution": 123
},
"ip_reputation": {
"result": "<string>",
"risk_level": "<string>",
"available": true,
"confidence": "<string>",
"method": "<string>",
"evidence": [
{
"type": "<string>",
"value": "<string>",
"confidence": "<string>",
"description": "<string>"
}
],
"network": {
"type": "<string>",
"asn": 123,
"organization": "<string>"
},
"risk_contribution": 123
}
},
"explanation": {
"explanation_available": true,
"explanation_omitted_reason": "<string>",
"summary": "<string>",
"top_reasons": [
{
"reason": "<string>",
"check": "email_format",
"contribution": 123
}
],
"reason_groups": {
"identity": [
"<string>"
],
"infrastructure": [
"<string>"
],
"behavior": [
"<string>"
],
"format": [
"<string>"
]
},
"risk_factors": [
{
"factor": "<string>",
"contribution": 123
}
],
"neutral_factors": [
{
"factor": "<string>",
"contribution": 123
}
],
"recommendation_reason": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"metadata": {
"warnings": [
{
"code": "<string>",
"message": "<string>",
"type": "<string>",
"upgrade_required": true,
"recommended_plan": "<string>",
"required_plan": "<string>"
}
],
"usage": {
"requests": {
"used": 123,
"limit": 123,
"unlimited": true,
"remaining": 123
},
"explanations": {
"used": 123,
"limit": 123,
"unlimited": true,
"remaining": 123
}
},
"plan": {
"current_plan": "<string>",
"billing_period": {
"starts": "<string>",
"ends": "<string>"
},
"reset_at": "<string>"
},
"assessment_version": "<string>",
"cache": {
"hit": true,
"age_seconds": 123,
"scoring_version": "<string>"
}
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}Authorizations
First-party API key. Send the canonical key as a Bearer token:
Authorization: Bearer eisk_live_eik_<24hex>_<64hex>
Used on all API-client routes (/v1/analyze-email, batch, bulk,
customer webhooks). Scopes (analyze, bulk, webhooks) authorize a
route; the account plan authorizes premium functionality.
Headers
Optional client-supplied request id. The server always echoes an
X-Request-ID response header; malformed/too-long values are replaced.
Safe to include in support reports. Not an idempotency key.
Maximum string length:
128Body
application/json